怎么取选中格的那一行的行号 或者取出选中格的那一行中的某一格的值 而且我想是写在双击某一行,弹出一个新窗口,而新窗口显示就是我所中的行的弹细结果还有一个问题就是 
用ADOQuery取值到DBgrideh中 为什么一直要Open,能不能把数据取出到dbgrideh后,就不占用数据库了datasource1.DataSet:=adoquery1;
dbgrideh1.DataSource:=datasource1;
try
with adoquery1 do
begin 
s:='sqlstr';
sql.Clear;
sql.Add(s)
open;
except
..
end;最后一个就是能不能向数据库一条一条手动取数据填充到到DBgrideh中

解决方案 »

  1.   

    dbgrideh1.Fields[7].Text  选中行第七个字段的值datamodule1.ADOQuery2.RecordCount就是dbgrideh的行数DataModule1.ADOQuery1.FieldByName('F1').Text     就是dbgrideh选中行的某个字段的值
    其他行都用adoquery来控制
      

  2.   

    怎么取选中格的那一行的行号
    DBgrideh.DataSource.DataSet.RecNo;选中格的那一行中的某一格的值
    DBgrideh.DataSource.DataSet.FieldByName('字段名').AsString;双击某一行,弹出一个新窗口,而新窗口显示就是我所中的行的弹细结果
    在OnDbClick事件中写
    //判断数据集状态后
    form1 := Tform1.Create(Application);
    form1.edit1.text := DBgrideh.DataSource.DataSet.FieldByName('字段名').AsString;
    form1.ShowModal;
    form1.Free;DBgrideh是绑定数据集的。
    DBgrideh设置readonly属性,
    按向下箭头或就可以增加一行新纪录,或和DBNavigator配合使用。
      

  3.   

    1、行号 dbgrideh1.DataSource.DataSet.RecNo;
    2、描述不清楚,你的数据表是明晰表,还只是一个表,需要单独把这条记录信息全部字段显示出来?
    3、因为dbgrideh是数据感应组件,你可以用内存表来做;
    4、那建议你用stringgrid来做了~~
      

  4.   

    前面二点你们都解释了 
    差三四点我补充一下第四点 就是我开始进行所有的录单,这时的单在数据库中
    而我想在一个form中进行对分次把一些单列以单号进行查找后进行手动一条一条添加入一个dbgrideh或上面说的stringgrid中 这时就产生了分组在dbgrid中 我要把这些分好的处理后我会加一个flag作为已经分了组 update入数据库 所以我才提出了第四点 倒底用什么最为适合第三点是我心中的一个疑问 就是为什么一直到要用open如我with..do end;加一个adoquery.closedbgrideh就没有数据了 为什么不能在本地产生一个本地表 缓存在本地 不用常open 
      

  5.   

      if UpperCase(DBEh1.selectedField.FieldName) = UpperCase('aaa') then
      begin
        if ADOQUERY.FieldByName('aaa').AsInteger<=0 then exit;
        From2 := TFrom2 .createdlg('aaa','','','','');
      end;