具体的解决办法。有效这重赏,参与者清赏。

解决方案 »

  1.   

    先让Query自动的浏览一下就应该可以了;
    Query1.First;
    Query1.Last;
    Query1.RecoedCount;
    Query1.RecNo;
      

  2.   

    很简单,给你的Delphi打上补丁Delphi6 update 2.exe和Delphi 6 Runtime Library Update Pack.exe—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  3.   

    把你的Delphi打上补丁。不行的话写代码搞定这两行喽。
    你是用了计算字段吧,如果是的话可以在oncalcfields事件中写代码判断当前记录的位置,然后强制置为1和recordcount
      

  4.   

    在数据库定义中EOF的概念为数据库最后一笔记录或超出记录范围
      

  5.   

    也就是说你用的数据库不支持RecordNo!
      

  6.   

    数据集指针位置不对或不在浏览状态.
    先Query1.First一下再调用:Query1.RecNo
    再Query1.Last,Query1.RecNo
      

  7.   

    很多数据库都是这样的,Oracle也会这样的,用代码搞定它吧。
      

  8.   

    给你代码看看.
    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;
          }
    }
      

  9.   

    //---------------------------------------------------------------------------
    void __fastcall TfrmSelectTag::grdDBGridEh1Enter(TObject *Sender)
    {
    /**************************************************************
      函数名:grdDBGridEh1Enter(TObject *Sender)
      用途:设置记录状态(RecordState)的标志为true
      输入参数列表:Sender
      输入参数1   TObject   传递方法(地址)
      返回值:
      类型
      修改者:
      修改日期:
    **************************************************************/     RecordState=true;
    }
    //---------------------------------------------------------------------------
    void __fastcall TfrmSelectTag::cmdFindTagClick(TObject *Sender)
    {
    /**************************************************************
      函数名:cmdFindTagClick(TObject *Sender)
      用途:开始查找指定条件的TAG参数
      输入参数列表:Sender
      输入参数1   TObject   传递方法(地址)
      返回值:
      类型
      修改者:
      修改日期:
    **************************************************************/
        RecordState=false;
        ......
    }
      

  10.   

    RecNo
    并不是所有数据库都支持的,支持的有SQLServer、Paradox等,Oracle不行。—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  11.   

    sncel(地狱情人) :
    有没有DELPHI的代码呀?
      

  12.   

    中间的就不理它啦
    First 和 Last
    只要判断
    Query1.Bof

    Query1.Eof
    就可以啦
      

  13.   

    中间的就不理它啦
    First 和 Last
    只要判断
    Query1.Bof

    Query1.Eof
    就可以啦
      

  14.   

    中间的就不理它啦
    First 和 Last
    只要判断
    Query1.Bof

    Query1.Eof
    就可以啦
      

  15.   

    好象头尾都是会触发Query1.Bof,而Query1.Eof发生的时候,是从Eof离开的时候。
    怪呀!我还是分不开两个状态,要嘛都是1,要嘛都是count.
      

  16.   

    我想TQuery.RecNo是这样的排列Record Position    RecNo
    =========================
    Query1.BOF         -1
    1st record          1
    2nd record          2
    ...                 ...
    The last record     n
    Query1.EOF          -1所以,你可以加个判断,看位置是否到了BOF或者EOF。