sql的add(15分)

  • 主题发起人 主题发起人 nter
  • 开始时间 开始时间
N

nter

Unregistered / Unconfirmed
GUEST, unregistred user!
救命啊,大侠们!!!

我的程序是这样的问题:

query1.sql.add('select * from lkjf where bn=:bn
and kg=:kg and color=:color and dw=:dw');

query1.ParamByName('bn').asstring:=trim(edit1.text);
query1.ParamByName('kg').asstring:=trim(edit2.text);
query1.ParamByName('color').asstring:=trim(edit3.text);
query1.ParamByName('dw').asstring:=trim(edit4.text);

当其中一个EDIT为空时,就SELECT不到任何一个记录,但在库中的的确确有
几个记录的某个字段为空的,例如COLOR就是了,但只要将变量写到ADD中去
就没问题,例如:

query1.sql.add('select * from hmh_ckhzx where bn=
trim(edit1.text) andkg=:kg and color='+''''+
trim(edit3.text)+''''+' and dw=:dw');
query1.ParamByName('bn').asstring:=trim(edit1.text);
query1.ParamByName('kg').asstring:=trim(edit2.text);
query1.ParamByName('dw').asstring:=trim(edit4.text);

但这样又导致另一个问题就是:当要查的字段内容有 ’号时就出错,
例如:EDIT3的text为 15'' 这样,SQL就会将其中的 ’号当做SQL语
句的 ’号,语句不能执行。

正所谓顾得头来,脚反根。请帮个忙,教教我应怎做!!!
 
》query1.sql.add('select * from hmh_ckhzx where bn=
》 trim(edit1.text) andkg=:kg and color='+''''+
》 trim(edit3.text)+''''+' and dw=:dw');
是否写错了?
这可能是空字符串和空值的问题,即''与NULL是不同的,
你数据库中的值是空字符串还是空值,我估计是''。
 
放到 query的sql属性里,设计阶段。
 
我同意DSM2000的观点,即NULl和''是否一样
 
就算给字段设成了‘ ’这样的空串,数据库都会自动转其为NULL,
 
接受答案了.
 
后退
顶部