为是dbgrideh的不同行显示不同颜色
用 if table1.recNo mod 2=0 then
但是在程序执行过程中recNo的值始终为-1

解决方案 »

  1.   

    是表中没有记录所致!As implemented in TDataSet, the value of RecNo is always -1. Ordinarily an application does not access RecNo at the TDataSet level. Instead a redeclared and implemented RecNo property in a descendant class such as TTable is accessed. RecNo provides a fallback property for derived datasets that do not support record numbers.
      

  2.   

    对某些数据库来讲,recno始终会是-1的
    但是也可能是没有记录所致
      

  3.   

    With Table1Do
      Begin
        Close;
        SQL.Clear;
        SQL.Add(' SELECT * FROM Kehu ');
        Open;
        Count := RecordCount;
      End;
      Table1.First;
      While Not Table1.Eof Do
      Begin
        If Table1.RecNo Mod 2 = 0 Then
    ..........
    Table1.Next;
    End;
      

  4.   

    oracle也是-1,总是-1。
    其他的我没试验。
      

  5.   

    你应该加Table1.First;
    While Not Table1.Eof Do
      

  6.   

    建議用ADO吧﹐adodataset1.recno應該是對的。
      

  7.   

    RECNO之所以为-1是因为你所建立的数据库没有系统创建的自动增加类型的字段!
      

  8.   

    对,我用的就是oracle
    谢谢!
      

  9.   

    看看我的,添加一个计算字段。
    void __fastcall TfrmSelectTag::ClientDataSet1CalcFields(TDataSet *DataSet)
    {
    /**************************************************************
      函数名:ClientDataSet1CalcFields(TDataSet *DataSet)
      用途:指定记录显示的编号
      输入参数列表:DataSet
      输入参数1   TDataSet   传递方法(地址)
      返回值:
      类型
      修改者:
      修改日期:
    **************************************************************/
          if(ClientDataSet1->RecNo==-1)
          {
            if(RecordState==false)
            {
              ClientDataSet1->FieldByName("RecordID")->Value=1;
             }
            else
            {
              ClientDataSet1->FieldByName("RecordID")->Value=
              ClientDataSet1->RecordCount;
            }
          }
          else
          {
           ClientDataSet1->FieldByName("RecordID")->Value=ClientDataSet1->RecNo;
          }
    }
      

  10.   

    select count(yourField or *) from your table不就完事了么?
    大型数据库跟桌面型数据库不一样,默认一条记录一条记录塞给你,还是单向不能回走的,哪象桌面数据库一次把一整陀数据往回塞任你处理。
      

  11.   

    As implemented in TDataSet, the value of RecNo is always -1. Ordinarily an application does not access RecNo at the TDataSet level. Instead a redeclared and implemented RecNo property in a descendant class such as TTable is accessed. RecNo provides a fallback property for derived datasets that do not support record numbers.在帮助中有说明在TDataSet没有实现该方法, 在TBDEDataSet类中实现了,关键代码delphi没提供,但是delphi 是用自己的方法移动光标实现的,看代码有几个条件限制,当记录数很多时,返回-1;建议不要用这方法,可写sql语句用数据库来处理,效率比delhpi高得多.