在线等待!Please Help Me,怎样判断一记录的内容是否有改变? (100分)

  • 主题发起人 主题发起人 cailihui
  • 开始时间 开始时间
C

cailihui

Unregistered / Unconfirmed
GUEST, unregistred user!
使用AdoTable,请问怎样判断某一记录的内容有无改变,
可能改了某一些字段的内容,也可能没有。
需要的是一通用方法!

请帮帮我,万分感谢!
 
关注一下,也想知道
 
用UpdateStatus;
 
用UpdateStatus是不行的,因為:
假如現在有一值為'ABC',我將其更改成123,然后再改回去,那麼這時應該是沒有改變,
但用UpdateStatus是無法檢測出這一种情況的!
 
各位請幫我想想辦法!
 
你在DataSet的OnAfterSroll事件把当前记录的数据全部保存起来,然后一一比较不就ok了
 
用触发器啊,它可以监视数据修改的发生。可以把修改过的内容写入日志之类的
数据表阿,你什么时候都可以查询,哪些内容、什么时候发生变化拉!
 
那只能自己用个数组来记录每条记录的状态,
或者做个原始表的备份,进行比较。
 
To: qianwt
這辦法也太笨了! 我想這樣實現,在一公共單元中寫一函數,然后:

function DataIsModified(CurrentDataSet:TadoTable):Boolean; //當前記錄數據是否被更改
var
x:Shortint;
begin
With CurrentDataSet do
begin
For x:=0 to CurrentDataSet.FieldCount - 1 do
begin
if 條件語句成立表示有改變
Result:=True;
Exit; //退出循環
end;
end;
end;
Result:=False; //沒有改變
End;

現在的問題是:這個條件怎樣去判斷?
 
不能用觸發器!(因為要考慮數據庫的變換)
 
建议做个原始表的备份,进行比较。这样较简单,但效率可能就不行了,
自己用数组做设计时有点烦啊,因为要通用,
 
To 卡色:
這樣太麻煩了,再想想,想以前在VFP中這种問題一條語句就搞定了!
 

简单问题复杂化
 
也可以配和UpdateStatus,把修改过的记录下来,(原值,修改值),在再每一次修改中
比较;
 
To yczjs:
那你說應該怎樣的簡單化,該不會是不管不無改變都Update吧?
 
为什么要判断它没有改变呢?
 
To 卡色:
我原想是將某字段的OldValue,Value,CurValue做比較,但不行,我用的數據庫是Postgre
 
adotable.modified
不行吗?
 
To:雪中漫步
不行!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部