線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1105
推到 Plurk!
推到 Facebook!

PARADOX资料在ApplyUpdates时出错

尚未結案
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-19 14:48:21 IP:218.5.xxx.xxx 未訂閱
小弟使用PARADOX,在保存数据时有时会出错,错误现象就是显示CPU Window的Disassembly pane.一旦出错DataBase Desktop也无法打开,即使已打开也变得无法响应。 经反复跟踪,发现是在执行ApplyUpdates或CommitUpdates时出错. 小弟面对Disassembly pane束手无策,请各个大大帮忙分析问题原因,或告诉我怎样查错. 發表人 - fangwy 於 2003/12/19 15:02:13
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-21 01:22:02 IP:61.217.xxx.xxx 未訂閱
引言: 小弟使用PARADOX,在保存数据时有时会出错,错误现象就是显示CPU Window的Disassembly pane.一旦出错DataBase Desktop也无法打开,即使已打开也变得无法响应。 经反复跟踪,发现是在执行ApplyUpdates或CommitUpdates时出错. 小弟面对Disassembly pane束手无策,请各个大大帮忙分析问题原因,或告诉我怎样查错.
使用TQuery作交易功能嗎?
屬性:
  AutoCalcFields  = True
  CacheUpdate     = True
  UpdateObject    = UpdateSQL1
發表人 - leo2568 於 2003/12/21 01:23:09
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-22 09:11:23 IP:218.5.xxx.xxx 未訂閱
如leo2568兄所述设置: AutoCalcFields = True CacheUpdate = True UpdateObject = UpdateSQL1 但是有一个表是用TTable,另一个表是用TQuery,但至于是哪一个的ApplyUpdates出错很难确定.我的程式是一只循环写数据的测试程式,有时只循环写几笔只出错,有时却循环大几十笔,所以较难跟踪,我是采取每执行一条语句将这条语句记录到.TXT文件,出错时看执行到哪一条. 程式代码如下: procedure TInvPrintF.Ins_InvTa; //把发票数据插入数据数据表 var i: integer; dwTmp: dWord; begin taTwInv.First; WriteLn(F , 'taTwInv.First'); for i := 1 to taTwInv.RecordCount do begin with taTaxBody do begin SetKey; FieldByName('Inv_Date').Value := pdDate; FieldByName('Inv_type').asstring := '0'; FieldByName('Inv_id').asstring := psInvNo; //Trim(meInv_No.text); FieldByName('Inv_flag').asstring := SYS_INVTYPE; //发票状态 FieldByName('Inv_Seq').asInteger := taTwInv.FieldByName('Inv_Seq').asInteger; if GotoKey then begin ShowMessage('inv_date=' FormatDateTime('yyyy/mm/dd', pdDate) Chr(13) 'inv_type=0' Chr(13) 'inv_id=' Trim(psInvNo) Chr(13) 'inv_flag=' SYS_INVTYPE Chr(13) 'inv_seq=' IntToStr(taTwInv.FieldByName('Inv_Seq').asInteger)); end; Append; FieldByName('Inv_Date').Value := pdDate; FieldByName('Inv_type').asstring := '0'; FieldByName('Inv_id').asstring := psInvNo; //Trim(meInv_No.text); FieldByName('Inv_flag').asstring := SYS_INVTYPE; //发票状态 FieldByName('Inv_Seq').asInteger := taTwInv.FieldByName('Inv_Seq').asInteger; FieldByName('Item_nm').asstring := taTwInv.FieldByName('Item_nm').asstring; FieldByName('Item_unt').asstring := taTwInv.FieldByName('Item_unt').asstring; FieldByName('Item_qty').asFloat := taTwInv.FieldByName('Item_qty').asFloat; FieldByName('Item_prc').asFloat := taTwInv.FieldByName('Item_prc').asFloat; FieldByName('Item_Amt').asFloat := taTwInv.FieldByName('Item_Amt').asFloat; FieldByName('Item_dsc').asInteger := taTwInv.FieldByName('Item_dsc').asInteger; FieldByName('Item_tip').asInteger := taTwInv.FieldByName('Item_tip').asInteger; FieldByName('tax_id').asInteger := taTwInv.FieldByName('tax_id').asInteger; Post; end; if taTwInv.eof = false then taTwInv.Next; end; WriteLn(F , 'if taTwInv.eof = false then taTwInv.Next;'); WriteLn(F , 'end;'); with quTaxHead do begin with TQuery.Create(nil) do begin try DataBaseName := 'starinv'; SQL.Add(quTaxHead.SQL.Text); SQL.Add(' where inv_date=:inv_date and inv_type=:inv_type and inv_id=:inv_id and inv_flag=:inv_flag'); ParamByName('Inv_Date').Value := pdDate; ParamByName('Inv_type').asstring := '0'; ParamByName('Inv_id').asstring := psInvNo; //Trim(meInv_No.text); ParamByName('Inv_flag').asstring := SYS_INVTYPE; //发票状态 Open; if RecordCount <> 0 then begin ShowMessage('inv_date=' FormatDateTime('yyyy/mm/dd', pdDate) Chr(13) 'inv_type=0' Chr(13) 'inv_id=' Trim(psInvNo) Chr(13) 'inv_flag=' SYS_INVTYPE); end; finally Free; end; end; Append; FieldByName('Inv_Date').Value := pdDate; FieldByName('Inv_type').asstring := '0'; //发票类型 FieldByName('Inv_id').asstring := psInvNo; //trim(meInv_No.text); FieldByName('Inv_time').Value := Time; FieldByName('Mch_id').asstring := Trim(edDevice_No.text); FieldByName('Inv_Price').Value := strtoFloat(Copy(edSum_Price.Text, 3, Length(edSum_Price.Text) - 2)); FieldByName('Oper_id').asstring := SYS_OPRCODE; FieldByName('Oper_nm').asstring := SYS_OPRNAME; FieldByName('Payer_id').Value := cboxPayer_Nm.ItemIndex; FieldByName('Payer_Nm').asstring := cboxPayer_Nm.text; if cboxOwner_id.Visible = false then dwTmp := 0 else dwTmp := strtoint(trim(cboxOwner_id.Text)); FieldByName('Owner_id').Value := dwTmp; FieldByName('Owner_Nm').asstring := edOwner_Nm.text; FieldByName('Pay_Mode').asstring := inttostr(cboxPay_Mode.ItemIndex); FieldByName('Chq_No').asstring := edChq_No.text; FieldByName('Inv_Code').asstring := edInv_code.text; FieldByName('Inv_flag').asstring := SYS_INVTYPE; //发票状态 FieldByName('Inv_Note').asstring := ''; FieldByName('Prt_Num').value := 1; Post; end; WriteLn(F , 'Post;'); WriteLn(F , 'end;'); quTaxHead.Database.TransIsolation := tiDirtyRead; //事务处理 WriteLn(F , 'quTaxHead.Database.TransIsolation := tiDirtyRead;'); WriteLn(F , '*************************************************'); quTaxHead.Database.StartTransaction; WriteLn(F , 'quTaxHead.Database.StartTransaction;'); WriteLn(F , '*************************************************'); try WriteLn(F , 'try'); WriteLn(F , '*************************************************'); quTaxHead.ApplyUpdates; WriteLn(F , 'quTaxHead.ApplyUpdates;'); WriteLn(F , '*************************************************'); taTaxBody.ApplyUpdates; WriteLn(F , 'taTaxBody.ApplyUpdates;'); WriteLn(F , '*************************************************'); quTaxHead.Database.Commit; WriteLn(F , 'quTaxHead.Database.Commit;'); WriteLn(F , '*************************************************'); except WriteLn(F , 'except'); WriteLn(F , '*************************************************'); quTaxHead.Database.Rollback; WriteLn(F , 'quTaxHead.Database.Rollback;'); WriteLn(F , '*************************************************'); end; WriteLn(F , 'end;'); WriteLn(F , '*************************************************'); quTaxHead.CommitUpdates; WriteLn(F , 'quTaxHead.CommitUpdates;'); WriteLn(F , '*************************************************'); taTaxBody.CommitUpdates; WriteLn(F , 'taTaxBody.CommitUpdates;'); WriteLn(F , '*************************************************'); end;
leo2568
中階會員


發表:54
回覆:124
積分:70
註冊:2003-09-21

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