delphi的Table的最后是不是有一条隐藏的空记录?不然下面这段代码有点理解不了。 这段代码运行的结果是:一旦运行,表TBClass中的字段Authorized就全部变为True
问题是,一直搞不懂这表的最后一个记录TBClass.Last是什么时候变成True
这段代码明明只是给非Last的赋值成True嘛procedure TForm1.Button7Click(Sender: TObject);
begin
DataModule2.TBClass.First; //记录指针移到第一条记录
while not DataModule2.TBClass.Eof do //Eof布尔类型,用来判断是否指向最后一条记录
begin
DataModule2.TBClass.Edit; //使Table处于可编辑状态
DataModule2.TBClass.FieldByName('Authorized').AsBoolean:=True; //给TBClass表的字段Authorized赋值,变成True
DataModule2.TBClass.Post; //编辑的传递(保存)
DataModule2.TBClass.Next; //使记录指针指向下一条记录 end;
end;
问题是,一直搞不懂这表的最后一个记录TBClass.Last是什么时候变成True
这段代码明明只是给非Last的赋值成True嘛procedure TForm1.Button7Click(Sender: TObject);
begin
DataModule2.TBClass.First; //记录指针移到第一条记录
while not DataModule2.TBClass.Eof do //Eof布尔类型,用来判断是否指向最后一条记录
begin
DataModule2.TBClass.Edit; //使Table处于可编辑状态
DataModule2.TBClass.FieldByName('Authorized').AsBoolean:=True; //给TBClass表的字段Authorized赋值,变成True
DataModule2.TBClass.Post; //编辑的传递(保存)
DataModule2.TBClass.Next; //使记录指针指向下一条记录 end;
end;
解决方案 »
- 网络文件传输,这样的功能如何实现?
- 小问题复杂化
- 散点小分
- TGridEh中子控件的问题~~~
- 此题一直没人回答让我爽!!!
- idftp上传和下载文件时的文件大小问题
- 我下载了 ExpressQuantumGrid 4 Suite,但不知道怎么安装?
- ADO访问SQL,提示连接超时,点解?(急)
- 程序运行时出错:Access violation at address 004039f0 in module'passcheck.exe',Read of addess 00cl56f4 是什么原因
- 如何在dbgrid 中显示两个数据集的内容
- c/s 访问速度慢的问题?
- 客户端插入ACCESS数据库的问题
这话的意思不是当"指向最后一条记录"为假时,执行下面的语句吗,那假如选到了last不就是
DataModule2.TBClass.Eof为真的了吗,导致整个循环语句的判断部分为假,那就不能执行下面的语句了啊
这时候DataModule2.TBClass.Eof并不会被记录为true.因为DataModule2.TBClass.Eof是记录上次操作有没有错.你是倒数第二条,再next当然不会出错.只有当你是最后一条,再执行一次next的时候eof才变成true.你可以用单步调试看下eof的值是在什么时候变化的
数据库只有两条记录1,2query.First; //先定位到第一条while not query.Eof do
begin
... //对当前记录的各种操作
query.Next; //记录移到下一条
end;
end; 1.第一次执行query.Eof当然为假,所以执行循环体语句
2.执行循环体内Query.Next;记录移到第二条,此时他并不知道下面还有没有记录,所以query.Eof还是为假
3.所以while not query.Eof do返回真,继续执行循环体
4.再一次执行query.Next;此时查到后面已没有了记录,所以query.Eof返回真
5.再一次执行while not query.Eof do , 此时,query.Eof已经为真,也就是说while not query.Eof do 为假,所以跳出循环
6.所以数据库内两条记录都进行了操作不知道说的对不对,LZ自己理解理解...
而是再执行一次query.Next时,查不到数据,query.Eof才为真仅供参考而已...
LZ认为说的对,结帖时给点分,不然就算了!嘿嘿~~
如记录
1
2
3 <-最后一条记录
<-判断是否到达eof