rt,不用dbgrid.datasource.dataset.recordcount

解决方案 »

  1.   

    showmessage(inttostr(TStringgrid(Dbgrid1).RowCount));
      

  2.   

    1楼的,这种方法不是很妥啊,我在没有数据的时候TStringgrid(Dbgrid1).RowCount显示值是2,应该是0才对
    这么点问题都没解决,可急死我了
      

  3.   

    为什么dbgrid.datasource.dataset.recordcount不好
    TStringgrid(Dbgrid1).RowCount是记录数+1(有个title),即便没有数据仍然是grid中有一个空白行的,所以是2
      

  4.   

    可能我对问题描述不是很清楚,我想在dbgird有数据时执行一些循环操作,因此要先判断是否有数据,首先我不知道如何判断,其次不知道如何循环,比如显示了6条数据,我怎么才能从1到6的循环呢?我没有用dataset控件
      

  5.   

    你没有用dataset控件怎么来的数据??
      

  6.   

    我用的ADOConnection、ADOQuery和DataSource三个控件
      

  7.   

    dbgrid.datasource.dataset就是你的AdoQuery!!
      

  8.   

    dbgrid.datasource.dataset.recordcount
    不明白,这种可以从根本上来解决问题的方法,楼主为什么不用?
      

  9.   


    那如何实现循环呢?比如我的dbgird有6条记录,我该写for i:=1 to ???呢?
      

  10.   

    程序在执行
    if DBGrid1.DataSource.DataSet.RecordCount>0 then
    时抛出异常
    ADOQuery1: Cannot perform this operation on a closed dataset
      

  11.   

    adoquery1.first;
    while not adoquery1.eof do
    begin
     //...
     adoquery1.next;
    end;
      

  12.   

    这个我倒知道,不过不是我想象中的解决方法,我记得可以直接从dbgrid的属性里设来着……算了结贴吧
      

  13.   

    dbgrid是数据感知的,脱离数据源是无法用的!!
      

  14.   

    对呀,抛出的异常ADOQuery1: Cannot perform this operation on a closed dataset 是因为你没有打开adoquery1,也就是没有执行adoquery1.Open. 根据你所说的DBGrid1.DataSource.DataSet就是ADOQuery1,所以DBGrid1.DataSource.DataSet.RecordCount 等价于 ADOQuery1.Recordcount。