why?(20分)

  • 主题发起人 主题发起人 yytxt
  • 开始时间 开始时间
Y

yytxt

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了如下一段代码:
var
FileNum: integer;
begin
with ADOQuery1 do
begin
Close;
with SQL do
begin
Clear;
Add('SELECT *');
Add('FROM tablename');
Add('WHERE (ChanName = :CN) and (R_STime<>NULL) and (R_RTime = NULL)');
Parameters.Items[0].Value:='RJTD';
Prepared;
Open;
end;
FileNum := RecordCount;
end;
end;
我连的是Access数据库,而且通过查询得到表中符合条件的有3条纪录,可是为什么上面代码执行时得到的结果却是0呢?
请各位高手帮忙。
另外,为什么我用ParamByName('CN').AsString := 'RJTD';代替Parameters.Items[0].Value:='RJTD';时编译出错呢?
 
sql.clear;
ADOQuery1.open;
 
我用了open呀!!!
在prepared后!!!
 
应用ParamByName('CN').Value:= 'RJTD'来代替
 
用value代替还是不行,错误是parambyname不被识别。是不是ADO里面没有这个属性呀?
 
这句改为
Add('WHERE (ChanName = :CN) and (R_STime is not NULL) and (R_RTime is NULL)');
 
我试了楼上高手的方法,就能检索出来了。
那究竟为什么在这儿用‘=’或‘<>’不行呢?而我在其他的查询语句中就可以,如:
Add('WHERE (R_RTime<>NULL)')
不过只含有一个这样的条件。
还有是不是我其他的查询语句中的‘=’或‘<>’都要用‘is’或‘is not’来代替了?
 
后退
顶部