請問關於資料庫Commit時所發生的錯誤 |
尚未結案
|
keny1024
一般會員 發表:6 回覆:8 積分:2 註冊:2010-03-19 發送簡訊給我 |
各位先進,大家好:
想寫一個關於進貨作業Master-Detail的架構,但在SQLConnection1.Commit時發生了錯誤,訊息如下: Project Pmain.exe raised exception class TDBXError with message 'SQL State:42S22, SQL Error Code:207' 無效的資料行名稱'SUMMON_FLAG'。 SQL State:42S22, SQL Error Code:207 無效的資料行名稱'STORE_NAME' SQL State:42S22, SQL Error Code:207 無效的資料行名稱'STORE_NO' ... SQL State:42S2'. 我的程式碼如下: [code delphi] procedure TFrmInto_Stock.BitBtn3Click(Sender: TObject); var vTD : TTransactionDesc; rtotal_m,vqty,vprice,vsub_money : real; begin if (NOT SQLConnection1.InTransaction) then begin vTD.TransactionID := 1; vTD.IsolationLevel := xilREADCOMMITTED; SQLConnection1.StartTransaction(vTD); try rtotal_m:=0; ClientDataSet2.First; while ClientDataSet2.EOF <> TRUE do begin if (ClientDataSet2.state <> dsEdit) and (ClientDataSet2.state <> dsInsert) then ClientDataSet2.Edit; ClientDataSet2.FieldByName('SUB_TOTAL_M').Value:=ClientDataSet2.FieldByName('PRICE').Value*ClientDataSet2.FieldByName('QTY').Value; rtotal_m:=rtotal_m ClientDataSet2.FieldByName('SUB_TOTAL_M').Value; ClientDataSet2.Next; end; ClientDataSet1.FieldByName('TOTAL_M').value:=rtotal_m; ClientDataSet1.Post; if (ClientDataSet2.state <> dsEdit) and (ClientDataSet2.state <> dsInsert) then ClientDataSet2.Edit; if (ClientDataSet1.state <> dsEdit) and (ClientDataSet1.state <> dsInsert) then ClientDataSet1.Edit; if ClientDataSet2.ChangeCount > 0 then ClientDataSet2.ApplyUpdates(0); if ClientDataSet1.ChangeCount > 0 then ClientDataSet1.ApplyUpdates(0); SQLConnection1.Commit(vTD); except on e : Exception do begin ShowMessage(e.Message); SQLConnection1.Rollback(vTD); end; end; end; end; [/code] 懇請協助 感恩! |
inungh
初階會員 發表:0 回覆:27 積分:25 註冊:2011-06-19 發送簡訊給我 |
|
keny1024
一般會員 發表:6 回覆:8 積分:2 註冊:2010-03-19 發送簡訊給我 |
===================引 用 inungh 文 章=================== It seems that the filed is missing. Please check your field name is same as your backend database, inung 感謝inung的提醒,但我檢查資料庫(MS SQL 2005)中Master的Table及Master的ClientDataSet的Fields Editor欄位名稱並無不符,且不管detail的資料筆數有幾筆,在Debug的狀態下都會發生2次錯誤,detail的資料會存入資料庫,但Master不會,不知是何原因?希望諸位先進指點迷津。 Keny1024 |
inungh
初階會員 發表:0 回覆:27 積分:25 註冊:2011-06-19 發送簡訊給我 |
|
keny1024
一般會員 發表:6 回覆:8 積分:2 註冊:2010-03-19 發送簡訊給我 |
===================引 用 inungh 文 章=================== Check the field type and make sure value not out of range. inung 感謝inung的熱心協助,依您的方式檢查並無不符之處,嘗試將這些欄位從master的ClientDataSet中刪除,結果在Debug的狀態下依然會發生2次錯誤,錯誤的訊息還是SQL State:42S22, SQL Error Code:207,無效的資料行名稱已從之前刪除的欄位,變成新的欄位名稱,錯誤就發生在ClientDataSet的AfterCancel事件執行後,不知是何原因?希望諸位前輩指點指點。 Keny1024 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |