Вопрос № 58068: Здравствуйте! DElphi7 + ADO + MSAccess 2000. Есть таблица из четырех полей - f1, f2, f3, f4. Поле f1 - primary key, autoincrement. Пытаюсь через ADOQuery выполнить запрос на вставку записи следующим образом:
with tmpQuery do begin
SQL.Clear;...
Вопрос № 58.068
Здравствуйте! DElphi7 + ADO + MSAccess 2000. Есть таблица из четырех полей - f1, f2, f3, f4. Поле f1 - primary key, autoincrement. Пытаюсь через ADOQuery выполнить запрос на вставку записи следующим образом:
with tmpQuery do begin
SQL.Clear;
SQL.Add('INSERT INTO [TableName] (f2, f3, f4)');
SQL.Add('VALUES (f2Value, f3Value, f4Value)');
ExecSQL;
Close;
end;
На что получаю сообщение об ошибке: "Индекс или ключ не может содержать пустое значение (Null)"... Подскажите как побороть? Я так понимаю при INSERTe имена автоинкрементных полей не указываются...
Заранее спасибо.
Отправлен: 07.10.2006, 21:45
Вопрос задал: Savnick (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: 3лоумышленник
Здравствуйте, Savnick!
Вот аналогичный запрос из конструктора Access, вставка в таблицу из 3-х полей, одно - счётчик: INSERT INTO routs ( Name, Descr )
SELECT [1] AS Выражение1, [2] AS Выражение2
Т. е. попробуйте вместо VALUES использовать SELECT --------- "Люди неизбежно умирают", A. Schwarzenegger (Terminator 3: Rise of the Machines)
Ответ отправил: 3лоумышленник (статус: Студент)
Ответ отправлен: 07.10.2006, 23:00
Отвечает: Устинов Сергей Евгеньевич
Здравствуйте, Savnick!
В том формате, как Вы записали у меня все работает, только я все поля f2, f3, f4 сделал текстовыми и вставлял соответственно SQL.Add('VALUES ("f2Value', "f3Value", "f4Value")');
Ваша ошибка может быть в несоответствии значений, которые Вы вставляете, например f2Value это у вас компонент TEdit, тогда вставлять нужно не f2Value, а f2Value.text
Удачи!
--------- Ответы на все вопросы - на сайте www.ya.ru ☺