Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Значение NULL в параметрах


Автор: Vinni37 25.6.2008, 13:11
Вообщем вот такая проблема есть код:
Код

Main_frm.ADOQuery1.Active:=False;
Main_frm.ADOQuery1.SQL.Clear;
Main_frm.ADOQuery1.SQL.Add('UPDATE Dela');
Main_frm.ADOQuery1.SQL.Add('SET Adres=:adres , info=:info, data_zayavka=:data_zayavka ');
Main_frm.ADOQuery1.SQL.Add('Where id='+Delo);
Main_frm.ADOQuery1.Parameters.ParseSQL(Main_frm.ADOQuery1.SQL.Text,true);
Main_frm.ADOQuery1.Parameters.ParamByName('adres').Value:=Edit2.Text;
Main_frm.ADOQuery1.Parameters.ParamByName('info').Value:=Memo1.Text;
Main_frm.ADOQuery1.Parameters.ParamByName('data_zayavka').Value:='NULL';
Main_frm.ADOQuery1.ExecSQL;



как занчения data_zayavka присвоить NULL.

Если написать вот так то все нормально:

Код

Main_frm.ADOQuery1.Active:=False;
Main_frm.ADOQuery1.SQL.Clear;
Main_frm.ADOQuery1.SQL.Add('UPDATE Dela');
Main_frm.ADOQuery1.SQL.Add('SET Adres=:adres , info=:info, data_zayavka=NULL ');
Main_frm.ADOQuery1.SQL.Add('Where id='+Delo);
Main_frm.ADOQuery1.Parameters.ParseSQL(Main_frm.ADOQuery1.SQL.Text,true);
Main_frm.ADOQuery1.Parameters.ParamByName('adres').Value:=Edit2.Text;
Main_frm.ADOQuery1.Parameters.ParamByName('info').Value:=Memo1.Text;
Main_frm.ADOQuery1.ExecSQL;



но так не устраивает

Автор: Vinni37 25.6.2008, 13:42
Да забыл указать, база MS Access, нужное поле имеет тип дата/время. И мне надо обнулить его, что бы было как при создании когда ему автоматом присваивалось NULL

Автор: Deniz 25.6.2008, 13:51
Код
Main_frm.ADOQuery1.Parameters.ParamByName('data_zayavka').Clear;
и пользуйся кнопкой "Код" для форматирования.

Автор: Vinni37 25.6.2008, 13:57
Извините. Исправился на счет форматирования. 

Но вот такого как "clear" там вообще нет

Автор: Frees 25.6.2008, 14:11
Код

Main_frm.ADOQuery1.Active:=False;
Main_frm.ADOQuery1.SQL.Clear;
Main_frm.ADOQuery1.SQL.Add('UPDATE Dela');
Main_frm.ADOQuery1.SQL.Add('SET Adres=:adres , info=:info, data_zayavka=:data_zayavka ');
Main_frm.ADOQuery1.SQL.Add('Where id='+Delo);
Main_frm.ADOQuery1.Parameters.ParseSQL(Main_frm.ADOQuery1.SQL.Text,true);
Main_frm.ADOQuery1.Parameters.ParamByName('adres').Value:=Edit2.Text;
Main_frm.ADOQuery1.Parameters.ParamByName('info').Value:=Memo1.Text;
Main_frm.ADOQuery1.Parameters.ParamByName('data_zayavka').Value:=NULL;//или ....AsVariant := NULL
Main_frm.ADOQuery1.ExecSQL;

а так не пробовал?

Автор: Vinni37 25.6.2008, 14:19
Пробовал, выдает точно такую же ошибку, чет там про параметр, типа он неполный или тип не тот.

Автор: Frees 25.6.2008, 14:23
дак может у тебя в базе это поле NOT NULL сделано

Добавлено через 7 минут и 51 секунду
Цитата(Vinni37 @  25.6.2008,  14:19 Найти цитируемый пост)
 выдает точно такую же ошибку, чет там про параметр

точнее текст ошибки скажи

Автор: Vinni37 25.6.2008, 14:32
Не, точне нет. Даже еще и значение по умолчанию Null стоит

Добавлено через 5 минут и 11 секунд
все всем спасибо вроде нашел решение надо было бобавить строчку

Код

Main_frm.ADOQuery1.Parameters.ParamByName('data_zayavka').DataType:=ftGUID;


полный рабочий код:

Код

Main_frm.ADOQuery1.Active:=False;
Main_frm.ADOQuery1.SQL.Clear;
Main_frm.ADOQuery1.SQL.Add('UPDATE Dela');
Main_frm.ADOQuery1.SQL.Add('SET Adres=:adres , info=:info, data_zayavka=:data_zayavka ');
Main_frm.ADOQuery1.SQL.Add('Where id='+Delo);
Main_frm.ADOQuery1.Parameters.ParseSQL(Main_frm.ADOQuery1.SQL.Text,true);
Main_frm.ADOQuery1.Parameters.ParamByName('adres').Value:=Edit2.Text;
Main_frm.ADOQuery1.Parameters.ParamByName('info').Value:=Memo1.Text;
Main_frm.ADOQuery1.Parameters.ParamByName('data_zayavka').DataType:=ftGUID;
Main_frm.ADOQuery1.Parameters.ParamByName('data_zayavka').Value:=null;
Main_frm.ADOQuery1.ExecSQL;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)