Использование параметров в ADOQuery
Проблема такая: есть БД с таблицей, в которой 6 полей. В Дельфи я создаю запрос на добавление новой записи в эту таблицу. В БД первое поле - ключ, он присваивается автоматически, когда в таблицу добавляешь запись. И последнее поле в таблице должно быть Null. Как это отобразить в Дельфи при создании запроса????
[COLOR=red]ADOQuery1.Parameters[0].Value:= ???????????;[/COLOR]
ADOQuery1.Parameters[1].Value:= edit2.text;
ADOQuery1.Parameters[2].Value:= edit3.text;
ADOQuery1.Parameters[3].Value:= edit4.text;
ADOQuery1.Parameters[4].Value:= edit5.text;
[COLOR=red]ADOQuery1.Parameters[5].Value:= NULL;[/COLOR]
ADOQuery1.execsql;
Пожалуйста, помогите!!!!
Запрос:
Код:
query:="insert into table1 values(NULL, :param1, :param2, :param3, :param4, NULL)";
Присвоение значений параметрам:
Код:
ADOQuery1.SQL.Text:=query;
ADOQuery1.Parameters[0].Value:= edit2.text;
ADOQuery1.Parameters[1].Value:= edit3.text;
ADOQuery1.Parameters[2].Value:= edit4.text;
ADOQuery1.Parameters[3].Value:= edit5.text;
ADOQuery1.ExecSQL;
ADOQuery1.Parameters[0].Value:= edit2.text;
ADOQuery1.Parameters[1].Value:= edit3.text;
ADOQuery1.Parameters[2].Value:= edit4.text;
ADOQuery1.Parameters[3].Value:= edit5.text;
ADOQuery1.ExecSQL;
Если работает автоинкремент для первого поля и разрешено значение NULL для последнего, то такой запрос должен работать.
Цитата: Hrew
Прописывайте условия NULL сразу в запросе, раз заранее их знаете.
Запрос:
Присвоение значений параметрам:
Если работает автоинкремент для первого поля и разрешено значение NULL для последнего, то такой запрос должен работать.
Запрос:
Код:
query:="insert into table1 values(NULL, :param1, :param2, :param3, :param4, NULL)";
Присвоение значений параметрам:
Код:
ADOQuery1.SQL.Text:=query;
ADOQuery1.Parameters[0].Value:= edit2.text;
ADOQuery1.Parameters[1].Value:= edit3.text;
ADOQuery1.Parameters[2].Value:= edit4.text;
ADOQuery1.Parameters[3].Value:= edit5.text;
ADOQuery1.ExecSQL;
ADOQuery1.Parameters[0].Value:= edit2.text;
ADOQuery1.Parameters[1].Value:= edit3.text;
ADOQuery1.Parameters[2].Value:= edit4.text;
ADOQuery1.Parameters[3].Value:= edit5.text;
ADOQuery1.ExecSQL;
Если работает автоинкремент для первого поля и разрешено значение NULL для последнего, то такой запрос должен работать.
Если есть поле поле автоинкеремент, то его вообще не надо трогать - БД сама его обработает!! И лучше использовать развернутый синтаксис запроса:
Код:
INSERT INTO Table1 (Field2, Field3, Field5, Field4, Field6) VALUES(:param2, :param3, :param5, :param4, NULL);
..
..
Спасибо огромное!!! :) :) :)