一個dbgrid的問題,急!!!(傾囊而出,在線等)(40分)

  • 主题发起人 主题发起人 aier
  • 开始时间 开始时间
A

aier

Unregistered / Unconfirmed
GUEST, unregistred user!
在一個主從表的明細表里,我用了一個dbgrid連接datasource1,
datasource1的dataset設置為adotable1,
adotable1的connection再連接到adoconnection1,
adoconnection1與數據庫連接!
當我新增一條記錄還沒保存時,如果移到下一條記錄,它會自動保存此記錄!但我希望當我輸完所有明細資料(可能包括好几條記錄)時按"保存"才跟主表一起保存數據!
我的"新增"代碼是這樣的:
begin
with adotable1 do
begin
append;
end;
end;
問題:
1.是否可以按"新增"就在dbgrid中新增一行可以讓輸入,待輸完所有記錄再按"保存"存儲數據
2.保存數據時,如何實現批量保存?
各位大俠可以寫一個例子給我,謝謝!
 
缓存更新吗?设置DBGrid所关联的ADO数据集的控件
AdoQuery1.LockType = ltBatchOptimistic
最后的更新用UpdateBatch方法。
 
to:app2001
謝謝你!真沒想到纏繞我好几天的事情,卻讓你一句話給解決了!
順便再問你一個問題:
當我新增了几條記錄還未保存不小心按了關閉窗口時,怎樣寫一個警告對話框,提問用戶是否需要保存記錄!
 
if MessageBox(Handle,'是否保存记录?','提示',MB_ICONQUESTION or MB_YESNO)=idYes then
adotable1.UpdateBatch(arAll);
adotable1.CancelBatch(arAll);
 
to:dez_0609
謝謝你的解答,但是你這種做法是每次退出時都會提示是否保存,可我希望是在正常退出時不提示,只是在忘了保存時才提示!希望你能幫上我的忙
 
设置一个变量参数来判断是否正常退出,这样就能轻松解决了
 
设置一个全局的布尔型变量,一进入你的窗体时就赋其为假值,然后当你正常保存后赋为真值,再然后,在FormCloseQuery事件中判断该布尔变量,如果其为假,则询问,否则直接赋
CanClose为真,退出。
procedure TPanelForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if not bsave then
begin
if MessageBox(Handle,'是否保存记录?','提示',MB_ICONQUESTION or MB_YESNO)=idYes then
adotable1.UpdateBatch(arAll);
adotable1.CancelBatch(arAll);
end;
CanClose:=true;
end;
 
多人接受答案了。
 
后退
顶部