資料庫寫入的問題 |
答題得分者是:yachanga
|
jacosun
一般會員 發表:42 回覆:64 積分:21 註冊:2003-04-18 發送簡訊給我 |
try
//將銷貨抬頭記錄寫入資料表
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('insert into sale_top(sale_no,sale_date,shop,man,Sale_money)');
Query1.SQL.Add('values ("' sale_no.Caption '","' FormatDateTime('yyyy/mm/dd',now) '","' copy(shop.caption,0,3) '","' manbox.Text '","' Label7.Caption '")');
Query1.ExecSQL; //寫入明細
Table2.First;
While not Table2.Eof do
begin
//寫入銷貨明細表
begin
Query1.Close;
Query1.SQL.clear;
Query1.SQL.Add('insert into sale_argument(sale_no,Thing_no,piece,weight,money,text)');
Query1.SQL.Add('values ("' sale_no.Caption '","' Table2.Fields[0].asstring '","' Table2.Fields[1].asstring '","' Table2.Fields[2].asstring '","' Table2.Fields[3].asstring '","' Table2.Fields[4].asstring '")');
Query1.ExecSQL;
end; //寫入總庫存表
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * From stock');
Query1.SQL.Add('where Thing_no="' Table2.Fields[0].asstring '" and shop="' copy(Shop.caption,0,3) '"' );
Query1.Open; Query2.close;
Query2.SQL.Clear;
Query2.SQL.Add('update Stock set Footage="' FormatFloat('0000.000',Query1.Fields[1].AsFloat-Table2.Fields[1].AsFloat) '",Weight="' formatfloat('0000.000',Query1.Fields[2].asfloat-Table2.Fields[2].asfloat) '"' );
Query2.SQL.Add('where Thing_no="' Table2.Fields[0].asstring '" and shop="' copy(Shop.caption,0,3) '"');
Query2.ExecSQL;
end;
Table2.Next;
end;
expcet
showmessage('error');
end;
請問大大們,上面的程式是有三個資料表需要增加資料的。
但,如果在第二個第三個資料表寫入時發生問題時.....
第一個資料表資料以經寫入了,請問我該如何才能讓他回覆到還沒寫入之前的呢?也就是說要三個資料表都新增(編輯)成功才算成功寫入。若其中一個有發生
錯誤,就三個回復。資料庫 ms-sql。先謝謝大大們了......
|
James
高階會員 發表:10 回覆:290 積分:220 註冊:2002-07-25 發送簡訊給我 |
|
jacosun
一般會員 發表:42 回覆:64 積分:21 註冊:2003-04-18 發送簡訊給我 |
|
yachanga
資深會員 發表:24 回覆:335 積分:296 註冊:2003-09-27 發送簡訊給我 |
try
Database1.StartTransaction;
//將銷貨抬頭記錄寫入資料表
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('insert into sale_top(sale_no,sale_date,shop,man,Sale_money)');
Query1.SQL.Add('values ("' sale_no.Caption '","' FormatDateTime('yyyy/mm/dd',now) '","' copy(shop.caption,0,3) '","' manbox.Text '","' Label7.Caption '")');
Query1.ExecSQL; //寫入明細
Table2.First;
While not Table2.Eof do
begin
//寫入銷貨明細表
begin
Query1.Close;
Query1.SQL.clear;
Query1.SQL.Add('insert into sale_argument(sale_no,Thing_no,piece,weight,money,text)');
Query1.SQL.Add('values ("' sale_no.Caption '","' Table2.Fields[0].asstring '","' Table2.Fields[1].asstring '","' Table2.Fields[2].asstring '","' Table2.Fields[3].asstring '","' Table2.Fields[4].asstring '")');
Query1.ExecSQL;
end; //寫入總庫存表
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * From stock');
Query1.SQL.Add('where Thing_no="' Table2.Fields[0].asstring '" and shop="' copy(Shop.caption,0,3) '"' );
Query1.Open; Query2.close;
Query2.SQL.Clear;
Query2.SQL.Add('update Stock set Footage="' FormatFloat('0000.000',Query1.Fields[1].AsFloat-Table2.Fields[1].AsFloat) '",Weight="' formatfloat('0000.000',Query1.Fields[2].asfloat-Table2.Fields[2].asfloat) '"' );
Query2.SQL.Add('where Thing_no="' Table2.Fields[0].asstring '" and shop="' copy(Shop.caption,0,3) '"');
Query2.ExecSQL;
end;
Table2.Next;
end;
Database1.commit;
expcet
Database1.rollback;
showmessage('error');
end; ~悠遊法國號~
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |