全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1043
推到 Plurk!
推到 Facebook!

資料庫寫入的問題

答題得分者是:yachanga
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-26 09:47:09 IP:61.59.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-26 10:01:45 IP:61.218.xxx.xxx 未訂閱
配合 TDatabase 的 Transaction 處理就可以了
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-26 11:35:42 IP:61.59.xxx.xxx 未訂閱
引言: 配合 TDatabase 的 Transaction 處理就可以了
大大 是這樣子嗎?? Database1.TransIsolation:=tiDirtyRead;
yachanga
資深會員


發表:24
回覆:335
積分:296
註冊:2003-09-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-26 16:00:51 IP:210.68.xxx.xxx 未訂閱
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; ~悠遊法國號~
系統時間:2024-05-19 13:23:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!