起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 398|回复: 2

[强][关注]常见的数据集的错误

[复制链接]
发表于 2004-12-27 12:07:55 | 显示全部楼层 |阅读模式
1.数据集是一次只编辑一条记录,因此数据集的状态也是针对某一条记录的,而不是针对所有记录的
DataSet.First;
DataSet.Edit;
While not DataSet.Eof do
begin
  DataSet.FieldByName('ZD1').AsString := ‘aaa’;
  DataSet.Next;
End;
DataSet.Post
应该写成
DataSet.First;
While not DataSet.Eof do
begin
  DataSet.Edit;
  DataSet.FieldByName('ZD1').AsString := ‘aaa’;
  DataSet.Post;
DataSet.Next;
End;
在每一次循环时候,设置数据集状态,而不是在循环开始前设置数据集状态。
回复

使用道具 举报

 楼主| 发表于 2004-12-27 12:11:27 | 显示全部楼层

没有区分出数据集的客户端保存和服务端提交

错误写法:
DataSet.First;
While not DataSet.Eof do
begin
  DataSet.Edit;
  DataSet.FieldByName(‘’).AsString := ‘aaa’;
  DataSet.Post;
  DataSet.ApplyUpdates(True);
DataSet.Next;
End;
应该写成:
DataSet.First;
While not DataSet.Eof do
begin
  DataSet.Edit;
  DataSet.FieldByName(‘’).AsString := ‘aaa’;
  DataSet.Post;
  DataSet.Next;
End;
DataSet.ApplyUpdates(True);

数据集的Post是客户端保存,当前数据的修改保存在客户端。ApplyUpdates是提交服务端动作,把客户端数据集作的所有数据修改、删除、增加等都提交给业务服务器,由业务服务器提交给数据库。
如果每个循环中都提交服务器,那么由于服务器交互频繁,数据量大的情况下,会造成速度慢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-12-27 12:14:52 | 显示全部楼层

在事件处理程序中,修改按钮状态

procedure DataSetBZSJJ1.AfterPost(..)
begin
  btnSave.Enabled := False;
end;

由TAction直接决定按钮的状态,而不应该在事件中修改按钮状态,如果按钮状态比较复杂,可以在TAction的OnUpdate事件中写。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-3-29 00:01 , Processed in 0.050702 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表