recNo的值为什么始终为-1?

xbm2002 2003-09-29 08:13:32
为是dbgrideh的不同行显示不同颜色
用 if table1.recNo mod 2=0 then
但是在程序执行过程中recNo的值始终为-1
...全文
261 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
fsqcling 2003-09-29
  • 打赏
  • 举报
回复
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高得多.
RamjetZhang 2003-09-29
  • 打赏
  • 举报
回复
select count(yourField or *) from your table不就完事了么?
大型数据库跟桌面型数据库不一样,默认一条记录一条记录塞给你,还是单向不能回走的,哪象桌面数据库一次把一整陀数据往回塞任你处理。
sncel 2003-09-29
  • 打赏
  • 举报
回复
看看我的,添加一个计算字段。
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;
}


}
xbm2002 2003-09-29
  • 打赏
  • 举报
回复
对,我用的就是oracle
谢谢!
dickeybird888 2003-09-29
  • 打赏
  • 举报
回复
RECNO之所以为-1是因为你所建立的数据库没有系统创建的自动增加类型的字段!
bbs791109 2003-09-29
  • 打赏
  • 举报
回复
建議用ADO吧﹐adodataset1.recno應該是對的。
IORILI 2003-09-29
  • 打赏
  • 举报
回复
你应该加

Table1.First;
While Not Table1.Eof Do
superhjw 2003-09-29
  • 打赏
  • 举报
回复
oracle也是-1,总是-1。
其他的我没试验。
angle097113 2003-09-29
  • 打赏
  • 举报
回复
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;
cobi 2003-09-29
  • 打赏
  • 举报
回复
对某些数据库来讲,recno始终会是-1的
但是也可能是没有记录所致
whqcfp 2003-09-29
  • 打赏
  • 举报
回复
是表中没有记录所致!

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.
horse_h 2003-09-29
  • 打赏
  • 举报
回复
up

5,391

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧