我的程序如下:
procedure TFrmShow.selectClick(Sender: TObject);
begin
ibquery1.Close;
if ibquery1.Active = false then ibquery1.Open;
//If not (ibquery1.State in [dsEdit]) then ibquery1.Edit;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select USER_CODE,METER_CODE,READ_DATE,READ_TYPE from TABLE_READ where USER_CODE=:inusercode OR METER_CODE=:inmetercode OR READ_DATE=:inreaddate OR READ_TYPE=:inreadtype');
//ibquery1.Open;
//ibquery1.First;
if not ibquery1.Prepared then ibquery1.Prepare;
ibquery1.ParamByName('inusercode').AsString:=usercode.text;
ibquery1.ParamByName('inmetercode').AsString:=metercode.text;
ibquery1.ParamByName('inreaddate').AsString:=MEdate.text;
ibquery1.ParamByName('inreadtype').Asinteger:=strtoint(leftstr(metertype.text,1));
ibquery1.Open;
//ibquery1.Post;
ShowMessage(ibquery1.ParamByName('inusercode').AsString);
ShowMessage(inttostr(ibquery1.RecordCount));
end;
首先,我问一个很幼稚的问题:把dbgrid1通过数据源(datasource1:Tdatasource)与ibqurey1建立联系,就可以查询某数据库的数据了吧?(ibqurey1与组件ibdata:ibdatabase建立了联系)
快没信心了,难道女生做程序真的就这么弱!!!??????????!
哦,最终我还是想得到大家的帮助,求援!!
procedure TFrmShow.selectClick(Sender: TObject);
begin
ibquery1.Close;
if ibquery1.Active = false then ibquery1.Open;
//If not (ibquery1.State in [dsEdit]) then ibquery1.Edit;
ibquery1.SQL.Clear;
ibquery1.SQL.Add('select USER_CODE,METER_CODE,READ_DATE,READ_TYPE from TABLE_READ where USER_CODE=:inusercode OR METER_CODE=:inmetercode OR READ_DATE=:inreaddate OR READ_TYPE=:inreadtype');
//ibquery1.Open;
//ibquery1.First;
if not ibquery1.Prepared then ibquery1.Prepare;
ibquery1.ParamByName('inusercode').AsString:=usercode.text;
ibquery1.ParamByName('inmetercode').AsString:=metercode.text;
ibquery1.ParamByName('inreaddate').AsString:=MEdate.text;
ibquery1.ParamByName('inreadtype').Asinteger:=strtoint(leftstr(metertype.text,1));
ibquery1.Open;
//ibquery1.Post;
ShowMessage(ibquery1.ParamByName('inusercode').AsString);
ShowMessage(inttostr(ibquery1.RecordCount));
end;
首先,我问一个很幼稚的问题:把dbgrid1通过数据源(datasource1:Tdatasource)与ibqurey1建立联系,就可以查询某数据库的数据了吧?(ibqurey1与组件ibdata:ibdatabase建立了联系)
快没信心了,难道女生做程序真的就这么弱!!!??????????!
哦,最终我还是想得到大家的帮助,求援!!
困了~~,我也该睡了,可不想熬夜!帅哥们,明天见~~!!
DataSource1.DataSet:=IBQuery1;
DBGrid1.DataSource:=DataSource1;
这些代码不必手动输入,我这儿显示的是你应该确保有这样的设置。你在它们的属性列表里均能找到。首先要设置的是IBDataBase的数据文件,我想应该没有问题吧。你输入的大部分都可以直接写到IBquery1的属性里,如果不在运行的时候反复更改的话,比如象你上面的SQL语句就可以写到IBQuery1的SQL属性里,当然你这样做也不是不可以的。不过我还是想按照我的习惯修改一下你上面的程序
procedure TFrmShow.selectClick(Sender: TObject);
begin
if IBQuery1.Active then
ibquery1.Close;
//注意,在对sql属性赋值前要关闭数据集,赋值后打开才有作用
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('select USER_CODE,METER_CODE,READ_DATE,READ_TYPE from TABLE_READ where USER_CODE=:inusercode OR METER_CODE=:inmetercode OR READ_DATE=:inreaddate OR READ_TYPE=:inreadtype');
ibquery1.ParamByName('inusercode').AsString:=usercode.text;
ibquery1.ParamByName('inmetercode').AsString:=metercode.text;
ibquery1.ParamByName('inreaddate').AsString:=MEdate.text;
ibquery1.ParamByName('inreadtype').Asinteger:=strtoint(leftstr(metertype.text,1));
if not IBQuery1.Prepared then
IBQuery1.Prepare;
IBQuery1.Open;//现在才能打开
//如果你要修改数据采用下面这句
if not (IBQuery1.state in [dsEdit]) then //这个判断可有可无,因为默认打开都处于dsBrowse状态,插入用dsInsert
//这儿放修改的代码
IBQuery1.Post;//如果保存修改或者插入的数据,就要post.
ShowMessage(IBQuery1.ParamByName('inusercode').AsString);
ShowMessage(inttostr(IBQuery1.RecordCount));//显示打开的数据集的记录条数
end;
DBGrid1.DataSource:=DataSource1;
IBQuery1.DataBase:=IBDataBase;
当然 query 要连接好数据库了。
9点30不到就睡了 我每天都是1点睡瓦
保护女程序员!珍稀啊!
DataSource DataSet->Query1
Query1 DatabaseName->选择数据库别名
查询时候
CLOSE,
sql.clear
sql.add(sqlstr)
open
先select * from table_read...就知道你有没有设置对了.
再慢慢调整SQL语句吧..
ibquery1.ParamByName('inusercode').AsString:=usercode.text;
ibquery1.ParamByName('inmetercode').AsString:=metercode.text;
ibquery1.ParamByName('inreaddate').AsString:=MEdate.text;
ibquery1.ParamByName('inreadtype').Asinteger:=strtoint(leftstr(metertype.text,1));
你的那些text最好都加上TRIM...
如trim(usercode.text)..很有可能就是没去掉空格导致查询出错..