儲存問題 |
尚未結案
|
selina
一般會員 發表:39 回覆:64 積分:20 註冊:2002-12-05 發送簡訊給我 |
請教各位大大:
我的介面如下:
InvoiceNo : DBEdit1 To: DBEDit2 Address: DBEDit3 (table1: Quotation, dataSource1)
---------------------
Name : Quantity : (table2 : Quotation_Item, DataSource2)
---------------------
: :
---------------------
DBNavigator1 (DataSource1)
table1 : InvoiceNo, Customer, Address
table2 : InvoiceNo, Name, Quantity
table1-table2 - 1對多
我目前的作法是:
procedure TForm1.Query2BeforePost()
begin
ADOQuery2.FieldByName('InvoiceNo').Asstring := DBEdit1.text;
end;
procedure TForm1.DBnavigatorBeforeAction()
begin
if Button = Post then
儲存到table1
end;
目前問題是:
1.如果執行到一半,關閉Form1的話,它只儲存Name, Quantity的資料到table2而不會儲存DBEdit1.text,DBEdit2.text,DBEdit3.text的資料到table1,因為還沒按Post.
2.如果在過程中,我改變InvoiceNo, 那Name, Quantity中的invoiceNo不會改成新的iNoviceNo. 因為想了很久都想不出解決方法,所以想請教各位大大一些意見.
謝謝
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
selina
一般會員 發表:39 回覆:64 積分:20 註冊:2002-12-05 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 因為您使用ADO存取資料庫﹐ADOConnection元件具有資料交易的方法來掌控資料表異動的正确性﹐兩個資料表的異動全部完成后﹐在沒有CommitTrans之前﹐其變動只是存在于快取區﹐必須等到執行ADOConnection的CommitTrans方法﹐才會將異動存入資料庫中﹐如果任何一方沒有完成﹐并沒有CommitTrans時﹐先前的已變動的資料將恢复到變動前的狀態﹐這樣的話﹐就能保証資料的一致性﹐如您所說﹐如果還沒有完成Post即關機的話﹐即沒有触發CommitTrans﹐那其先存入的資料內容將被取消(RollbackTrans)﹒ 參考看看﹗ =====================
努力,相信會獲得美麗!
忻晟
------
忻晟 |
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |