我的代码如下:
procedure TFrmShow.selectClick(Sender: TObject);
begin
ibquery1.close;
if not (ibquery1.prepared) then ibquery1.prepare;
ibquery1.ParamByName('inusername').AsString:=username.text;
ibquery1.ParamByName('inusercode').AsString:=usercode.text;
ibquery1.ParamByName('inreaddate').AsString:=MEdate.text;
ibquery1.ParamByName('inreadtype').Asinteger:=strtoint(leftstr(metertype.text,1));
ibquery1.Open;
end;
属性设置如下
datesource1.dataset:ibquery1
dbgrid.datasource:datesource1
我整了老半天都没搞定。究竟哪里出了错?求助个大虾!!
procedure TFrmShow.selectClick(Sender: TObject);
begin
ibquery1.close;
if not (ibquery1.prepared) then ibquery1.prepare;
ibquery1.ParamByName('inusername').AsString:=username.text;
ibquery1.ParamByName('inusercode').AsString:=usercode.text;
ibquery1.ParamByName('inreaddate').AsString:=MEdate.text;
ibquery1.ParamByName('inreadtype').Asinteger:=strtoint(leftstr(metertype.text,1));
ibquery1.Open;
end;
属性设置如下
datesource1.dataset:ibquery1
dbgrid.datasource:datesource1
我整了老半天都没搞定。究竟哪里出了错?求助个大虾!!
我用的是d7版,分不够我再加!
关键是你的sql能否查得数据啊
先用个简单的条件看看
select
USER_NAME,USER_CODE,READ_DATE,READ_TYPE
from
TABLE_READ
where
USER_NAME=:inusername
OR USER_CODE=:inusercode
OR READ_DATE=:inreaddate
OR READ_TYPE=:inreadtype
USER_NAME,USER_CODE,READ_DATE,READ_TYPE
from
TABLE_READ
where
USER_NAME=:inusername // 改为USER_NAME=inusername
OR USER_CODE=:inusercode //以下同理
OR READ_DATE=:inreaddate
OR READ_TYPE=:inreadtype
USER_NAME=:inusername // 改为USER_NAME=inusername
OR USER_CODE=:inusercode //以下同理
OR READ_DATE=:inreaddate
OR READ_TYPE=:inreadtype=:A
=:B
这有区别么?
我去试试看
ShowMessage(ibquery1.ParamByName('inusername').AsString);
--------------------------
--------------------------
(2) 再看看是不否有查询记录:
ShowMessage(inttostr(ibquery1.RecordCount)); // 假如有记录数就是你的设置有问题
coeltdit(睫毛上的冰) ,怎么办?
2,参数传递进去了;
3,RecordCount=0;
问题出在1和3上,怎么搞的!?依然困惑!
error在这:ibquery1 cannot perform this operation on a closed dataset
问题应该出来了,不过我的active设为ture 了,怎么会呢?