如何取出Tdbgrid中某行某列的值,比如3行五列
TDBGrid.DataSource.DataSet.Fields[Ic].AsString这样总是取出的是第一行的值.

解决方案 »

  1.   

    如何取出Tdbgrid中某行某列的值,比如3行五列:基本上用直接的方法你取不到,因为这个控件,只是将数据画到屏上,其本身并不在内存中保存数据;
      

  2.   

    晕了难怪,搞.net的习惯了哈哈,那怎么办,我怎么读下面一行数据啊
      

  3.   

    从数据集中取,比如用Tadoquery控件,当dbGrid中定位到某一行时,用adoquery.FieldByName('字段名').asstring就可取出对应列的值了。
      

  4.   

    显示当前点击的这一行的栏位的Column0栏位数值实现方法-->VarAsType(AViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column0.Index], varString)
    想显示哪个栏位只要改变Column的号码就可以了。
      

  5.   

    能贴段代码吗?我刚刚搞delphi,啥都不明白
      

  6.   

    从dbgrid关联的数据集里头取,用RecNo赋值来控制行,字段名来控制列
      

  7.   

    给你个例子:{获取当前行的相关数据,用于显示在结果窗口中进行编辑}
    procedure TfmTotalSum_NCJCSJTJ.cxGrid1DBTableView1CellClick(
      Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
    begin
        ShowFormStr[1]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column4.Index], varString));//检测结果
        ShowFormStr[2]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column2.Index], varString));//样品品种
        ShowFormStr[3]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column6.Index], varString));//检测人
        ShowFormStr[4]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column5.Index], varString));//检测时间
        ShowFormStr[5]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column7.Index], varString));//生产单位
        ShowFormStr[6]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column8.Index], varString));//单位地址
        ShowFormStr[7]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column13.Index], varString));//生产日期
        ShowFormStr[8]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column9.Index], varString)); //仪器编号
        ShowFormStr[9]:=trim(VarAsType(ACellViewInfo.GridRecord.DisplayTexts[cxGrid1DBTableView1Column14.Index], varString));//备注end;
      

  8.   

    xiaofeixia__9999(光之影) ( ) 信誉:100    Blog  2006-9-28 16:55:52  得分: 0  
     晕了难怪,搞.net的习惯了哈哈,那怎么办,我怎么读下面一行数据啊ADO.NET相对于ADO最出色的改变(个人认为)就是对于脱机数据和联机数据的处理。ADO种提供了一个Recordset对象作为脱机数据缓存。就相当于ADO.NET中的DataSet对象。在ADO.NET中,你一般会将查询到的数据填充到一个DataSet对象中,而这个DataSet对象和联机对象在完成数据填充后,就不再存在任何关系,然后你的表格组件和这个DataSet关联,所以你可以方便的通过DataSet对象处理脱机数据。
      
    在ADO中,如果你用Adoquery查询数据,并且设置了和dbgrid的关联,那么要获得查询到的数据,你可以通过下面的办法//直接根据和dbgrid连接的数据集组件来完成
      ADOQuery1.First;
      while not ADOQuery1.Eof do
      begin
        Memo1.Lines.Add(ADOQuery1.FieldByName('fieldname').AsString);
        Next;
      end;//间接的通过dbgrid的dataset来完成  DBGrid1.DataSource.DataSet.First;
      while not DBGrid1.DataSource.DataSet.Eof do
      begin
        Memo1.Lines.Add(DBGrid1.DataSource.DataSet.FieldByName('fieldname').AsString)
        DBGrid1.DataSource.DataSet.Next;
      end;
     
      

  9.   

    换个方法吧  
    DBGrid1.DataSource.DataSet.RecNO:=3;  //第三行
    Showmessage(DBGrid1.DataSource.DataSet.Fields[4].AsString)  //第五列