问题如上,现在的结果就是我不能取得在DBGridEh中当前记录的编号了,也就是AdoQuery.RecNo的值始终不对.别的问题没有,DBGridEh显示正常.
如果这个问题没有办法解决,那还有什么办法可以获取DBGridEh中当前记录的编号(也就是行号)?

解决方案 »

  1.   

    你在sql里创建一个自增长列用以存储行号,不就完了吗
      

  2.   

    这是ADO的问题。你下在个最新的补丁就行了。
      

  3.   

    这是数据库游标类型的问题,哪个RecNo不是可靠的,最好别用它。
      

  4.   

    RecNo必须在数据库中有一个自动增加的字段才可以的,否则RecNo为-1
      

  5.   

    to:dickeybird888(于伟刚) 
    表里有自增字段,但还是不对.哪里有ADO的补丁好下呢?给个链接吧,谢谢了:)
      

  6.   

    我用的是D6,数据库是ACCESS2000.
      

  7.   

    DtlGrid.SumList.RecNo即可(DtlGrid为TDBGridEh的Name)
      

  8.   

    补充:如ADO LockType为ltOptimistic,可以取RecNo,如为ltBatchOptimistic则RecNo永远为-1,这是对的。
      

  9.   

    to:liqinxiong() 
    我的ADO LockType为ltOptimistic.
    试了DtlGrid.SumList.RecNo,依然为-1.
      

  10.   

    procedure TFormGenDoc.DtlGridGetCellParams(Sender: TObject;
      Column: TColumnEh; AFont: TFont; var Background: TColor;
      State: TGridDrawState);
    begin
      inherited;
      if DtlGrid.SumList.RecNo mod 2 = 1 then begin
        Background := FIRSTCOLOR;
        sncDBCurrencyInplaceEdit.Color := FIRSTCOLOR;
      end else begin
        Background := SECOUNDCOLOR;
        sncDBCurrencyInplaceEdit.Color := SECOUNDCOLOR;
      end;
    end;
    不可能啊!我就是用上述程式来改变每行的颜色的。其中ADO为ltBatchOptimistic
      

  11.   

    虽然结了,但还是要说。主要原因是你的DtlGrid.SumList.VirtualRecords没有为True;