在DBGIRD不显示表的主键的列当焦点发生变化时如何根据其它显示的列来获得主键值?数据表:序号       日期     摘要     明细     
1(主键)  12.5     aaa      111
2          12.6     bbb      222
3          12.6     bbb      222现在在DBGIRD中只显示 日期 摘要 明细( sql语句:  select   日期,摘要,明细  from 表 )例如焦点在    3          12.6     bbb      222如何取得 序号 3  ?

解决方案 »

  1.   

    select 序号 where 日期= and 摘要=  and 明细=....省略号为具体的值
      

  2.   

    to :lovendII(流氓都做了城管)   
     
     
       select 序号 where 日期= and 摘要=  and 明细=....省略号为具体的值
      数据库中有可能存在日期、摘要、明细都相同的的记录,也就是说只有序号是唯一确定的。 
      

  3.   

    你select * 出来,但在DBGRID里把只需要显示的字段显示出来就可以了,这样就可以显示序号了
      

  4.   

    直接编辑DGBrid 的clumns把需要显示的字段加进去这个知道吧
      

  5.   

    直接query.fieldbyname('序号').asinteger就行了。因为dbgrid只是数据感知控件,他只是把和他关联的query中的数据显示出来而已。因此,dbgrid焦点在第几行,query的cursor就定位在相应的记录上,你要取这条记录的某个字段值,就简单的用fieldbyname方法就行了
      

  6.   

    没必要让序号字段显示出来,你可以将序号读出,在dbgrid的cellclick事件中写
    edit1.text:=fieldbyname('xh').asstring;
      

  7.   

    NightCloud() 兄的我同意 我自己就是经常这样做的 不知道楼主在困惑什么
      

  8.   

    谢谢 NightCloud()   zhangxing1164(云云)
    我一直以为当query 查询结果传递到 dbgrid 后就结束了与它的联系
    不清楚dbgrid焦点的移动会带动query的cursor。
      

  9.   

    select的时候还是要把IDselect出来,只不过不要让dbgrid显示就行了