TQuery.RecNo第一和最后一条为(-1),而不是1和Recordcount. 具体的解决办法。有效这重赏,参与者清赏。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先让Query自动的浏览一下就应该可以了;Query1.First;Query1.Last;Query1.RecoedCount;Query1.RecNo; 很简单,给你的Delphi打上补丁Delphi6 update 2.exe和Delphi 6 Runtime Library Update Pack.exe—————————————————————————————————宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。————————————————————————————————— 把你的Delphi打上补丁。不行的话写代码搞定这两行喽。你是用了计算字段吧,如果是的话可以在oncalcfields事件中写代码判断当前记录的位置,然后强制置为1和recordcount 在数据库定义中EOF的概念为数据库最后一笔记录或超出记录范围 也就是说你用的数据库不支持RecordNo! 数据集指针位置不对或不在浏览状态.先Query1.First一下再调用:Query1.RecNo再Query1.Last,Query1.RecNo 很多数据库都是这样的,Oracle也会这样的,用代码搞定它吧。 给你代码看看.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; }} //---------------------------------------------------------------------------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; ......} RecNo并不是所有数据库都支持的,支持的有SQLServer、Paradox等,Oracle不行。—————————————————————————————————宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。————————————————————————————————— sncel(地狱情人) :有没有DELPHI的代码呀? 中间的就不理它啦First 和 Last只要判断Query1.Bof和Query1.Eof就可以啦 中间的就不理它啦First 和 Last只要判断Query1.Bof和Query1.Eof就可以啦 中间的就不理它啦First 和 Last只要判断Query1.Bof和Query1.Eof就可以啦 好象头尾都是会触发Query1.Bof,而Query1.Eof发生的时候,是从Eof离开的时候。怪呀!我还是分不开两个状态,要嘛都是1,要嘛都是count. 我想TQuery.RecNo是这样的排列Record Position RecNo=========================Query1.BOF -11st record 12nd record 2... ...The last record nQuery1.EOF -1所以,你可以加个判断,看位置是否到了BOF或者EOF。 分页问题 FastReport 如何实现打印一页没打满时,后面自动用空的表格填满!!! 如何提取DBGrid选中行的数据 ADO程序员参考一本 这样的SQL语句怎么写? 要计算两个日期之间相隔的天数,应该怎样写代码? 我的sql真的很菜,提问送分 嘿嘿,这里人气好些,帮我看看http://expert.csdn.net/expert/topic/624/624656.xml delphi如何把excel表导入sql server里面??? 创业公司现招delphi高手加盟 我发现Delphi的Bug啦!!!! 请教如下问题,望您指导。
Query1.First;
Query1.Last;
Query1.RecoedCount;
Query1.RecNo;
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
你是用了计算字段吧,如果是的话可以在oncalcfields事件中写代码判断当前记录的位置,然后强制置为1和recordcount
先Query1.First一下再调用:Query1.RecNo
再Query1.Last,Query1.RecNo
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;
}
}
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;
......
}
并不是所有数据库都支持的,支持的有SQLServer、Paradox等,Oracle不行。—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————
有没有DELPHI的代码呀?
First 和 Last
只要判断
Query1.Bof
和
Query1.Eof
就可以啦
First 和 Last
只要判断
Query1.Bof
和
Query1.Eof
就可以啦
First 和 Last
只要判断
Query1.Bof
和
Query1.Eof
就可以啦
怪呀!我还是分不开两个状态,要嘛都是1,要嘛都是count.
=========================
Query1.BOF -1
1st record 1
2nd record 2
... ...
The last record n
Query1.EOF -1所以,你可以加个判断,看位置是否到了BOF或者EOF。