各位好!小弟刚开始学DELPHI,以前有VC的编程经历!昨天试着用ADO的控件做了第一个程序!我添加了一个ADODATASET和一个DATASOURCE,我通过设置DATASET去读取一个SQL数据库中大概记录在70000行左右的表。不知道为什么,读取速度很慢!后来我想通过控制的查询条件的方式,让DBGRID在没有输入查询条件的时候不显示查询结果,但是一直是失败!我先把ADODataSet1的ACTIVE属性设置为False,我的具体语句是:procedure TForm1.Button1Click(Sender: TObject);begin
ADODataSet1.Filtered:=False; ADODataSet1.Filter:='studyid ='+Trim(Edit1.Text);ADODataSet1.Filtered:=True; ADODataSet1.active:=Ture;
end;其中studyid是整数型。请各位指教!

解决方案 »

  1.   

    ADODataSet1.Filtered:=False; 
    ===================================
    ADODataSet1.active:=False;
      

  2.   

    这样还不一样啊!filter也是先全选出来再过滤的,建议用where试一下。
    用filter的时候,不用ADODataSet1.active在true与false之间切换,直接
    ADODataSet1.Filtered:=False; 
    ADODataSet1.Filter:='studyid ='+Trim(Edit1.Text);
    ADODataSet1.Filtered:=True; 就是了
      

  3.   

    同意楼上建议用dbexpress可以分包
      

  4.   

    ADODataSet1.Filtered:=False; 
    ADODataSet1.Filter:='studyid ='+Trim(Edit1.Text);
    ADODataSet1.Filtered:=True; 就是了我用过上面的语句啊!但是 初始化出来的DBGRID仍然是读取了60000多条记录以后的!那样太慢了啊!我的目的就是要先不让DBGRID显示任何数据,按了按钮以后才根据输入的条件去显示数据!
      

  5.   

    dbgrid1.DATASOURCE:='';
    不就OK了?
    等你想要的时候再把它赋上去就可以了
    ^-^
      

  6.   

    试试把数据先存在ClientDataSet.data中,然后对ClientDataSet.data中的数据用Filter等
    这样不用每次都读数据库了