求助:用BDE的query时,如何为某字段为为DATE或INTEGER的类型赋空值
对数据库而言,SQL-SERVER和DB2的日期类型均允许为空值
在用BDE的Query时(注意不是ADO的adoquery),在插入数据时参数必须赋个值(不赋值会报错),假如日期类型为空如何赋值呢?
若用DB2建表CREATE TABLE person(name varchar(20),birs date,age integer)
procedure TFrmMain.Button1Click(Sender: TObject);
begin
with dm.q_pub do
begin
close;
sql.clear;
sql.add('insert into person values(:name,:birs,:age)');
params.ParamByName('name').value:='11';
params.ParamByName('birs').Value := '1998-9-9'; //若值为空如何写?
//params.ParamByName('birs').Value := ''; //若这么写(或=null,=nil),运行均通不过
params.ParamByName('age').Value := '';
//上句(或写成.asstring=''),运行通不过,如何赋空值?
execsql;
Showmessage('success');
end;
end;
若用sql-server建表CREATE TABLE person(name varchar(20),birs datetime,age integer)
procedure TFrmMain.Button1Click(Sender: TObject);
begin
with dm.q_pub do
begin
close;
sql.clear;
sql.add('insert into person values(:name,:birs,:age)');
params.ParamByName('name').value:='11';
params.ParamByName('birs').Value := '1998-9-9'; //若值为空如何写?
//params.ParamByName('birs').Value := '';
//若按上句写法,数据库中实际插入一个默认1900-1-1的值而不是空值,如何插入空值?
params.ParamByName('age').Value := '';
//上句写法,数据库中实际插入的是0而不是空值,如何插入空值?
execsql;
Showmessage('success');
end;
end;
请测试过回,谢谢!