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

有關 Delphi 程式執行時候,怎麼只有二個小時而已 ??

尚未結案
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-10 10:33:44 IP:200.76.xxx.xxx 未訂閱
由於公司所處的環境 網路品質不是很好 常常網路會有瞬斷的情形發生 因為在程式開發的過程中 特別重視在 Exception Handling 的部份 前幾天在各位先進的幫忙之下,總算將程式改版完成 此程式能夠在網路斷線之下,利用 Timer 倒數 30 秒繼續 Retry connect Network 因此這支程式能夠一直不間斷的執行 但是今天試了幾次,發現這支程式會在執行 2 個小時之後自動停止並關掉 煩請各位先進提供寶貴經驗給小弟 謝謝
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-10 12:48:26 IP:200.76.xxx.xxx 未訂閱
在請教過朋友這類的問題後 他答覆大概是記憶體釋放的問題 必須在一段時間內要作一次釋放的動作 因此參考了多位先進分享的文章之後 下載了程式正在試驗當中 期望會有新的發現..
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-13 00:57:00 IP:200.76.xxx.xxx 未訂閱
在試著從 Release Memory 這個步驟來做之後 結果還是一樣 程式只有執行 2 小時多就自動關閉 由於程式裡有用到 Application function.. 因為在程式結束時我再試著將它 Application.Terminate 結果還是一樣 請教各位先進,還有哪一部份需要再注意的地方? 謝謝
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-13 01:21:36 IP:203.204.xxx.xxx 未訂閱
gmi711 你好 由於不知你是用什麼元件連線,或是連線後做了什麼事,或許以下連結有所幫助 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48665
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-16 05:02:16 IP:61.30.xxx.xxx 未訂閱
Chance 36 你好 拜讀了您提供連結的文章之後 在結式結尾處加上了 FreeAndNil 以及 SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFF, $FFFFFF) 之後 發覺並未如預期的效果,仍然是只有跑個二個半小時就結束了 在試了一周之後還是沒有更好的解答 在此附上原始碼請教各位先進指導迷津一番,謝謝 // ================================================================================================== // Session : ReceivePicking_1.pas (Receiving Picking List--insert data) // Author : LJ Chen // Create Date : 2004/03/10 // // ================================================================================================== // Modify ID Author Modify Purpose // --------- -------------- ---------------------------------------------------------------- // 040419-01 Dan Chiou Add customer item check function // 040310-01 LJ Chen Create ReceivePicking Session for Receiving Picking List(insert data) // 040707-01 Dan Chiou Add exception handling // ================================================================================================== unit ReceivePickingSF_1; interface uses Windows, Messages, Sysutils, Classes, Graphics, Controls, Forms, Dialogs, bvUtil, Dbtables, Db, Stdctrls, Filectrl, Inifiles, Phio, Phbasic, Extctrls, ComCtrls; type TFrmReceivePicking_1 = class(TForm) DBcms: TDatabase; DBTriton: TDatabase; QDS: TQuery; QDS_Session: TSession; ProgressBar: TProgressBar; Memo_Receive_Picking_Data: TMemo; Process_Status_Line: TLabel; Count: TEdit; Status_Bar: TEdit; Timer1: TTimer; procedure FormCreate(Sender: Tobject); procedure FormActivate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private procedure Update_Cds_Error(DataSet: Tdataset; E: EDataBaseError; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction); procedure Show_Memo_Line_Data(Par_Momo_Data: string); function Create_Cds(Par_DbName: string; Par_Owner: Tcomponent; const Par_Name: string = ''): Tquery; function Cds_Execute(var Par_CdsDb: Tdatabase; var Par_Cds: Tquery): Boolean; procedure Receive_Picking_Data; function Prepare_Set_Status(Par_NCMP, Par_PINO: Integer): Boolean; function Update_Error_Log(Par_NCMP, Par_PINO: Integer; Par_CUNO, Par_DSCA: string): Boolean; procedure Next_Process; { Private Declarations } public function Q_Open(MYquery: Tquery; mSQL: string): Boolean; procedure Q_Execute(MYquery: Tquery; mSQL: string); function GetLine(var MultiLines: Variant; N: integer): string; function Session_Constraint(Par_ses, Par_constra: WideString; const Par_Para: WideString = ''): WideString; function Assign_Number(const GroupNCMP, PARA: WideString): Integer; function CreateQuery(mDBname: string; mOWNER: Tcomponent; const mName: string = ''): Tquery; procedure QueryUpdateError(DataSet: TDataSet; E: EDatabaseError; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction); function Cds_Open(Par_Cds: Tquery; Par_Sql: string): Boolean; { Public Declarations } end; var FrmReceivePicking_1: TFrmReceivePicking_1; Us_LOGFILE_ON_OFF, Us_LOGFILE_PATH: string; Par_NCMP, Par_PINO, Par_ORNO, Par_PONO, Par_GRUP: Integer; Par_CUNO, Par_DSCA, Par_PTYP: string; implementation {$R *.dfm} var cdsCMS, Cds_CTmp, Cds_Tmp, Cds_CSav, Cds_TTmp: TQuery; procedure TFrmReceivePicking_1.Receive_Picking_Data; var Lines: Variant; C002, C021, C029, C022, C071, C062, C066, C067, C101, T000, T012: Tquery; Par_CFRW, T_CSEL, HCUNO, strbuf, strITEM, result, MPAK: string; mCommit, isPDD: boolean; EPS_prepare, mEPSflag, ISAME_ADD: WordBool; Par_DDTA: TDateTime; Par_USER, Par_SESID, Par_APAR,Par_CCOR: string; nCountT21: Integer; procedure DoUPdateCMPPS021; begin C021.Edit; C021.FieldByName('RUNID').Asstring := Par_PTYP; C021.FieldByName('STATUS').Asinteger := 0; C021.FieldByName('EPS_PAKNO').Asstring := ''; C021.FieldByName('INVN').Asstring := CDS_CTmp.Fieldbyname('TTYP').Asstring CDS_CTmp.Fieldbyname('INVN').Asstring; C021.FieldByName('ORNO').Asstring := IntToStr(CDS_CTmp.Fieldbyname('ORNO').Asinteger); C021.FieldByName('COTP').Asstring := CDS_CTmp.Fieldbyname('COTP').Asstring; C021.FieldByName('CORG').Asstring := IntToStr(CDS_CTmp.Fieldbyname('CORG').Asinteger); C021.FieldByName('MPAK').Asstring := MPAK; C021.FieldByName('CRTE').Asstring := TRIM(CDS_CTmp.Fieldbyname('CRTE').Asstring); C021.FieldByName('CFRW').Asstring := Par_CFRW; C021.FieldByName('REFA').Asstring := CDS_CTmp.Fieldbyname('REFA').Asstring; C021.FieldByName('CUNO').Asstring := CDS_CTmp.Fieldbyname('CUNO').Asstring; C021.FieldByName('WBIL').AsInteger := StrToInt(Get000(IntToStr(Par_PINO), 6)); C021.FieldByName('FILE_DESADV').AsString := 'N'; C021.FieldByName('FILE_ACS').AsString := 'N'; C021.FieldByName('PDD').AsString := 'N'; C021.FieldByName('SERI_NO').AsInteger := 1; C021.FieldByName('ACTNO').AsString := ''; C021.FieldByName('HAWB').AsString := ''; C021.FieldByName('OMCU').AsString := CDS_CTmp.FieldByName('OMCU').AsString; C021.FieldByName('INST').AsString := CDS_CTmp.FieldByName('INST').AsString; C021.FieldByName('HCUNO').Asstring := CDS_CTmp.Fieldbyname('OCST').Asstring; if Cds_Open(T000, '0SELECT T$BARC FROM TRITON.TTCCOM910' Get000(IntToStr(Par_NCMP), 3) ' WHERE T$CUNO = ' QuotedStr(CDS_CTmp.Fieldbyname('CUNO').asstring)) and (T000.Fieldbyname('T$BARC').Asinteger = 2) then C021.FieldByName('BARC').Asstring := 'N' else C021.FieldByName('BARC').Asstring := 'Y'; if CDS_CTmp.FieldByname('INVD').AsString = '' then C021.FieldByName('INVD').AsString := '' else C021.FieldByName('INVD').Value := FormatDateTime('YYYY/MM/DD', CDS_CTmp.FieldByname('INVD').Value); end; procedure fp_InsertCMPPS08X(Par_NCMP, Par_ORNO, Par_PINO, Par_PONO: string); var Par_PRIC, sSQL: String; begin // Insert Into CMPPS080 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS080' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin if CDS_Open(T000, '0SELECT T080.T$TTYP, T080.T$INVN, T080.T$CURR, ' ' T080.T$CDEC, T080.T$DSCA, T080.T$CPAY, ' ' T080.T$PDSC, T080.T$SCIR, T080.T$COMP, T081.T$SCIP ' ' FROM TRITON.TTDEPS080' Get000(IntToStr(Par_GRUP), 3) ' T080,' ' TRITON.TTDEPS081' Get000(IntToStr(Par_GRUP), 3) ' T081 ' ' WHERE T081.T$COMP = T080.T$COMP ' ' AND T081.T$TTYP = T080.T$TTYP ' ' AND T081.T$INVN = T080.T$INVN ' ' AND T081.T$PONO = ' Par_PONO ' AND T081.T$SRNB = ' CDS_Tmp.Fieldbyname('SRNB').AsString ' AND T080.T$COMP = ' Par_NCMP ' AND T080.T$ORNO = ' Par_ORNO) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := T000.FieldByName('T$COMP').Value; cdsCMS.FieldByName('PINO').Value := Par_PINO; cdsCMS.FieldByName('INVN').AsString := T000.FieldByName('T$TTYP').AsString Get000(T000.FieldByName('T$INVN').AsString, 8); cdsCMS.FieldByName('CURR').Value := T000.FieldByName('T$CURR').Value; cdsCMS.FieldByName('CDEC').Value := T000.FieldByName('T$CDEC').Value; cdsCMS.FieldByName('DDSC').Value := T000.FieldByName('T$DSCA').Value; cdsCMS.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; cdsCMS.FieldByName('PDSC').Value := T000.FieldByName('T$PDSC').Value; cdsCMS.FieldByName('SCIR').Value := T000.FieldByName('T$SCIR').Value; Par_PRIC := T000.FieldByName('T$SCIP').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; end; { else begin Show_Memo_Line_Data(format(' This ORNO: %S ' #13 ' EPS Invoice Head Data Is Null' ' (Ref. CMPPS080 Table)', [Par_ORNO])); Abort; end; } end; // Insert into CMPPS081 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS081 ' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO ' AND PONO = ' Par_PONO) then begin if (CDS_Open(T000, '0SELECT T$ORNO, T$PONO, T$ITEM, T$REFD, ' ' T$REFC, T$CPON, T$CPON, T$CPRT, ' ' T$CUMN, T$CITM, T$CUIT, T$TREF, ' ' T$COPO, T$CSOL, T$SOLN, T$SLCD, ' ' TO_DATE(DECODE(TO_CHAR(T$RQDT,''YYYY/MM/DD''),''9999/01/01'',NULL,TO_CHAR(T$RQDT,''YYYY/MM/DD'')),''YYYY/MM/DD'') T$RQDT, ' ' T$UPCC, T$DELG, T$SOSL, T$SCIP ' ' FROM TRITON.TTDSLS941' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO ' AND T$PONO = ' Par_PONO)) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').AsString := Par_NCMP; cdsCMS.FieldByName('ORNO').AsString := T000.FieldByName('T$ORNO').AsString; cdsCMS.FieldByName('PONO').AsString := T000.FieldByName('T$PONO').AsString; cdsCMS.FieldByName('ITEM').AsString := Trim(T000.FieldByName('T$ITEM').AsString); cdsCMS.FieldByName('REFD').AsString := Trim(T000.FieldByName('T$REFD').AsString); cdsCMS.FieldByName('REFC').AsString := Trim(T000.FieldByName('T$REFC').AsString); cdsCMS.FieldByName('CPON').AsString := Trim(T000.FieldByName('T$CPON').AsString); cdsCMS.FieldByName('CPRT').AsString := Trim(T000.FieldByName('T$CPRT').AsString); cdsCMS.FieldByName('CUMN').AsString := Trim(T000.FieldByName('T$CUMN').AsString); cdsCMS.FieldByName('CITM').AsString := Trim(T000.FieldByName('T$CITM').AsString); cdsCMS.FieldByName('CUIT').AsString := Trim(T000.FieldByName('T$CUIT').AsString); cdsCMS.FieldByName('TREF').AsString := Trim(T000.FieldByName('T$TREF').AsString); cdsCMS.FieldByName('COPO').AsString := Trim(T000.FieldByName('T$COPO').AsString); cdsCMS.FieldByName('CSOL').AsString := Trim(T000.FieldByName('T$CSOL').AsString); cdsCMS.FieldByName('SOLN').AsString := Trim(T000.FieldByName('T$SOLN').AsString); cdsCMS.FieldByName('SLCD').AsString := Trim(T000.FieldByName('T$SLCD').AsString); cdsCMS.FieldByName('RQDT').AsString := Trim(T000.FieldByName('T$RQDT').AsString); cdsCMS.FieldByName('UPCC').AsString := Trim(T000.FieldByName('T$UPCC').AsString); cdsCMS.FieldByName('DELG').AsString := Trim(T000.FieldByName('T$DELG').AsString); cdsCMS.FieldByName('SOSL').AsString := Trim(T000.FieldByName('T$SOSL').AsString); cdsCMS.FieldByName('SCIP').AsString := Par_PRIC; cdsCMS.FieldByName('DDTA').AsDateTime := Par_DDTA; cdsCMS.FieldByName('APAR').AsString := Par_APAR; end; if CDS_Open(T000, '0SELECT T$CODT FROM TRITON.TTDSLS981' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then begin cdsCMS.FieldByName('CODT').Value := T000.FieldByName('T$CODT').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; end; end; // INSERT CMPPS082 { if not Q_Open(C082, 'SELECT * FROM CMPPS082 ' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin if Q_Open(T000, '0SELECT T988.T$COMP, T988.T$TTYP, T988.T$INVN, T988.T$ORNO, T988.T$CUNO, T988.T$REFA, ' ' T988.T$CCUR, T988.T$CPAY, T988.T$CDEC, T988.T$DDSC, T988.T$PDSC, T988.T$INVD ' ' FROM TRITON.TTDSLS988' Get000(Par_NCMP, 3) ' T988, ' ' TRITON.TTDSLS989' Get000(Par_NCMP, 3) ' T989 ' ' WHERE T988.T$COMP = T989.T$COMP ' ' AND T988.T$TTYP = T989.T$TTYP ' ' AND T988.T$INVN = T989.T$INVN ' ' AND T988.T$ORNO = T989.T$ORNO ' ' AND T989.T$SORN = ' Par_ORNO ' AND T989.T$SPON = ' Par_PONO ' AND T989.T$SSEQ = ' CDS_Tmp.Fieldbyname('SRNB').AsString) then begin C082.Append; C082.FieldByName('NCMP').AsString := Par_NCMP; C082.FieldByName('PINO').Value := Par_PINO; C082.FieldByName('COMP').Value := T000.FieldByName('T$COMP').Value; C082.FieldByName('INVN').Value := T000.FieldByName('T$TTYP').Value Get000(T000.FieldByName('T$INVN').Value, 8); C082.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; C082.FieldByName('CUNO').Value := T000.FieldByName('T$CUNO').Value; C082.FieldByName('REFA').Value := T000.FieldByName('T$REFA').Value; C082.FieldByName('CCUR').Value := T000.FieldByName('T$CCUR').Value; C082.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; C082.FieldByName('CDEC').Value := T000.FieldByName('T$CDEC').Value; C082.FieldByName('DDSC').Value := T000.FieldByName('T$DDSC').Value; if T000.FieldByname('T$INVD').AsString = '' then C082.FieldByName('INVD').AsString := '' else C082.FieldByName('INVD').Value := FormatDateTime('YYYY/MM/DD', T000.FieldByname('T$INVD').Value); C082.POST; C082.ApplyUpdates; end; end; } // INSERT CMPPS083 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS083 ' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').AsInteger := StrToInt(Par_NCMP); cdsCMS.FieldByName('PINO').AsInteger := StrToInt(Par_PINO); cdsCMS.FieldByName('CCOR').Value := Par_CCOR; if CDS_Open(T000, '0SELECT * FROM TRITON.TTDSLS042' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO ' AND T$CKOR = 1') then begin cdsCMS.FieldByName('NAMA').Value := T000.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T000.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T000.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T000.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T000.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T000.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T000.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T000.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end else if Par_CCOR <> '' then begin if CDS_Open(T012, '0SELECT * FROM TRITON.TTCCOM012' Get000(IntToStr(Par_GRUP), 3) ' WHERE T$CUNO = ' QuotedStr(Par_CUNO) ' AND T$CCOR = ' QuotedStr(Par_CCOR)) then begin cdsCMS.FieldByName('NAMA').Value := T012.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T012.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T012.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T012.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T012.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T012.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T012.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T012.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end; end else if CDS_Open(T000, '0SELECT * FROM TRITON.TTCCOM010' Get000(IntToStr(Par_GRUP), 3) ' WHERE T$CUNO = ' QuotedStr(Par_CUNO)) then begin cdsCMS.FieldByName('NAMA').Value := T000.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T000.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T000.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T000.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T000.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T000.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T000.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T000.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end else begin Show_Memo_Line_Data(format('--> This PINO: %S ' #13 ' Picking List Postal Adress ' ' (Ref. CMPPS083 Table)', [Par_PINO])); Abort; end; C029.Post; C029.ApplyUpdates; end; // insert cmpps084 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS084 ' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO) then begin if CDS_Open(T000, '0SELECT * FROM TRITON.TTDSLS851' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then begin while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := Par_ORNO; cdsCMS.FieldByName('CTYP').Value := Trim(T000.FieldByName('T$CTYP').Value); cdsCMS.FieldByName('NAME').Value := Trim(T000.FieldByName('T$NAME').Value); cdsCMS.FieldByName('IDCD').Value := Trim(T000.FieldByName('T$IDCD').Value); cdsCMS.FieldByName('NAMA').Value := Trim(T000.FieldByName('T$NAMA').Value); cdsCMS.FieldByName('NAMB').Value := Trim(T000.FieldByName('T$NAMB').Value); cdsCMS.FieldByName('ADDA').Value := Trim(T000.FieldByName('T$ADDA').Value); cdsCMS.FieldByName('ADDB').Value := Trim(T000.FieldByName('T$ADDB').Value); cdsCMS.FieldByName('CTYA').Value := Trim(T000.FieldByName('T$CTYA').Value); cdsCMS.FieldByName('CTYB').Value := Trim(T000.FieldByName('T$CTYB').Value); cdsCMS.FieldByName('PSTC').Value := Trim(T000.FieldByName('T$PSTC').Value); cdsCMS.FieldByName('CCTY').Value := Trim(T000.FieldByName('T$CCTY').Value); cdsCMS.FieldByName('STNO').Value := Trim(T000.FieldByName('T$STNO').Value); cdsCMS.FieldByName('DPNO').Value := Trim(T000.FieldByName('T$DPNO').Value); cdsCMS.FieldByName('CTNA').Value := Trim(T000.FieldByName('T$CTNA').Value); cdsCMS.FieldByName('CMNO').Value := Trim(T000.FieldByName('T$CMNO').Value); cdsCMS.FieldByName('ADDC').Value := Trim(T000.FieldByName('T$ADDC').Value); cdsCMS.FieldByName('ADDD').Value := Trim(T000.FieldByName('T$ADDD').Value); cdsCMS.Post; cdsCMS.ApplyUpdates; T000.next; end; end; end; // INSERT CMPPS085 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS085' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO) then if Session_Constraint('PPSM02S01', 'ORDER_MSG_SLS847') = 'Y' then begin if CDS_Open(T000, '0SELECT T$MESS,T$SEQN, T$INSN, T$ORNO,T$PONO ' ' FROM TRITON.TTDSLS852' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; cdsCMS.FieldByName('PONO').Value := T000.FieldByName('T$PONO').Value; cdsCMS.FieldByName('INSN').Value := T000.FieldByName('T$INSN').Value; cdsCMS.FieldByName('SEQN').Value := T000.FieldByName('T$SEQN').Value; cdsCMS.FieldByName('MESS').Value := T000.FieldByName('T$MESS').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; T000.Next; end; end else if CDS_Open(T000, '0SELECT T$MESS, T$SEQN, T$ORNO, T$PONO ' ' FROM TRITON.TTDSLS847' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; cdsCMS.FieldByName('PONO').Value := T000.FieldByName('T$PONO').Value; cdsCMS.FieldByName('INSN').Value := T000.FieldByName('T$INSN').Value; cdsCMS.FieldByName('SEQN').Value := T000.FieldByName('T$SEQN').Value; cdsCMS.FieldByName('MESS').Value := T000.FieldByName('T$MESS').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; T000.Next; end; if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS090 ' ' WHERE NCMP = ' Get000(Par_NCMP, 3) ' AND ITEM = ' QuotedStr(Trim(strITEM))) then Begin if CDS_Open(T000, '0SELECT T001.T$ITEM, T001.T$DSCA, T902.T$GNDS, T001.T$CSEL, ' ' T902.T$BCLA, T902.T$MCLA, T902.T$SCLA, T001.T$CTYO, ' ' T902.T$BKFG, T902.T$MCNO, T902.T$UCCC, T902.T$RELE ' ' FROM TRITON.TTIITM001' Get000(Par_NCMP, 3) ' T001, ' ' TRITON.TTIITM902' Get000(Par_NCMP, 3) ' T902 ' ' WHERE LTRIM(RTRIM(T001.T$ITEM)) = LTRIM(RTRIM(T902.T$ITEM))' ' AND LTRIM(RTRIM(T001.T$ITEM)) = ' QuotedStr(Trim(strITEM))) then while Not T000.Eof do Begin If (TRIM(T000.FieldByName('T$ITEM').AsString) = '') And (Par_NCMP = ' ') then T000.Next Else Begin cdsCMS.Append ; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ITEM').Value := Trim(T000.FieldByName('T$ITEM').Value); cdsCMS.FieldByName('DSCA').Value := T000.FieldByName('T$DSCA').Value; cdsCMS.FieldByName('GNDS').Value := T000.FieldByName('T$GNDS').Value; cdsCMS.FieldByName('CSEL').Value := T000.FieldByName('T$CSEL').Value; cdsCMS.FieldByName('BCLA').Value := T000.FieldByName('T$BCLA').Value; cdsCMS.FieldByName('MCLA').Value := T000.FieldByName('T$MCLA').Value; cdsCMS.FieldByName('SCLA').Value := T000.FieldByName('T$SCLA').Value; cdsCMS.FieldByName('CTYO').Value := T000.FieldByName('T$CTYO').Value; cdsCMS.FieldByName('BKFG').Value := T000.FieldByName('T$BKFG').Value; cdsCMS.FieldByName('MCNO').Value := T000.FieldByName('T$MCNO').Value; cdsCMS.FieldByName('UCCC').Value := T000.FieldByName('T$UCCC').Value; cdsCMS.FieldByName('RELE').Value := T000.FieldByName('T$RELE').Value; cdsCMS.Post ; cdsCMS.ApplyUpdates ; T000.Next ; End; End; End; { // INSERT CMPPS094 DATA if not Q_Open(C094, '0SELECT * FROM CMPPS094' ' WHERE NCMP = ' Par_NCMP ' AND CUNO = ' QuotedStr(CDS_CTmp.FieldByName('OCST').AsString) ' AND CCTY = ' QuotedStr(C029.FieldByName('CCTY').AsString)) then Begin if Q_Open(T000, '0SELECT * FROM TRITON.TTDSLS853' par_NCMP ' WHERE T$OCST = ' QuotedStr(CDS_CTmp.FieldByName('OCST').AsString) ' AND T$SHIP = ' QuotedStr(C029.FieldByName('CCTY').AsString)) then while not T000.Eof do Begin C094.Append; C094.FieldByName('NCMP').Value := Par_NCMP; C094.FieldByName('CUNO').Value := T000.FieldByName('T$OCST').Value; C094.FieldByName('CCTY').Value := T000.FieldByName('T$SHIP').Value; C094.FieldByName('CCUR').Value := T000.FieldByName('T$CCUR').Value; C094.FieldByName('SLTA').Value := T000.FieldByName('T$SLTA').Value; C094.FieldByName('SLTB').Value := T000.FieldByName('T$SLTB').Value; C094.FieldByName('SLTC').Value := T000.FieldByName('T$SLTC').Value; C094.FieldByName('SLTD').Value := T000.FieldByName('T$SLTD').Value; C094.FieldByName('SLTE').Value := T000.FieldByName('T$SLTE').Value; C094.FieldByName('SLBA').Value := T000.FieldByName('T$SLBA').Value; C094.FieldByName('SLBB').Value := T000.FieldByName('T$SLBB').Value; C094.FieldByName('SLBC').Value := T000.FieldByName('T$SLBC').Value; C094.FieldByName('SLBD').Value := T000.FieldByName('T$SLBD').Value; C094.FieldByName('SLBE').Value := T000.FieldByName('T$SLBE').Value; C094.FieldByName('TERM').Value := T000.FieldByName('T$TERM').Value; C094.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; C094.POST; C094.ApplyUpdates; T000.Next ; End; End; } end; function ff_Compare_Picking: string; var fs_HCUNO, fs_CRTE, fs_MPAK, fs_CFRW, fs_File_DESADV, fs_CDEL, fs_CCTY: String; fs_CCOR, fs_BILL_CCTY, fs_NAMC, fs_NAMD, fs_NAME, fs_NAMF, fs_PSTC, fs_ALLOW_COMBINE: String; fn_COMBINE_TYPE: Integer; Receive_Keepdata: Array of String; begin if High(Receive_Keepdata) < 2 then Setlength(Receive_Keepdata, 3); if ISAME_ADD and C029.Active and C021.Active then begin if Receive_Keepdata[0] <> 'Y' then begin Receive_Keepdata[0] := 'Y'; Receive_Keepdata[1] := C021.FieldbyName('NCMP').Asstring; Receive_Keepdata[2] := C021.FieldbyName('PINO').Asstring; end else begin Cds_Open(Cds_Tmp, '0SELECT C021.HCUNO HCUNO, C021.CRTE CRTE, C021.MPAK MPAK, C021.CFRW CFRW, ' ' C021.FILE_DESADV FILE_DESADV, C021.CDEL CDEL, C021.CCTY CCTY, C021.CCOR CCOR,' ' C021.BILL_CCTY BILL_CCTY, C021.NAMC NAMC, C021.NAMD NAMD, C021.NAME NAME, ' ' C021.NAMF NAMF, C021.PSTC PSTC, ' ' UPPER(NVL(C020.ALLOW_COMBINE, ''N'')) ALLOW_COMBINE, ' ' NVL(C020.COMBINE_TYPE, 0) COMBINE_TYPE ' ' FROM CMPPS020 C020, ' ' (SELECT C021.NCMP NCMP, C021.HCUNO HCUNO, C021.CRTE CRTE, C021.MPAK MPAK, ' ' C021.CFRW CFRW, C021.FILE_DESADV FILE_DESADV, ' ' NVL(C029.CDEL, ''NVL'') CDEL, NVL(C029.CCTY, ''NVL'') CCTY, ' ' NVL(C029.CCOR, ''NVL'') CCOR, NVL(C029.BILL_CCTY, ''NVL'') BILL_CCTY, ' ' NVL(C029.NAMC, ''NVL'') NAMC, NVL(C029.NAMD, ''NVL'') NAMD, ' ' NVL(C029.NAME, ''NVL'') NAME, NVL(C029.NAMF, ''NVL'') NAMF, ' ' NVL(C029.PSTC, ''NVL'') PSTC ' ' FROM CMPPS021 C021, CMPPS029 C029 ' ' WHERE C021.NCMP = ' IntToStr(Par_NCMP) ' AND C021.PINO IN (' Receive_Keepdata[2] ', ' C021.FieldbyName('PINO').AsString ')' ' AND C029.NCMP = C021.NCMP ' ' AND C029.PINO = C021.PINO) C021 ' ' WHERE C020.NCMP ( ) = C021.NCMP ' ' AND C020.CUNO ( ) = C021.HCUNO ' ' AND C020.CCTY ( ) = C021.CCTY ' ' AND C020.CFRW ( ) = C021.CFRW'); fs_HCUNO := Cds_Tmp.FieldbyName('HCUNO').AsString; fs_CRTE := Cds_Tmp.FieldbyName('CRTE').AsString; fs_MPAK := Cds_Tmp.FieldbyName('MPAK').AsString; fs_CFRW := Cds_Tmp.FieldbyName('CFRW').AsString; fs_CDEL := Cds_Tmp.FieldbyName('CDEL').AsString; fs_CCTY := Cds_Tmp.FieldbyName('CCTY').AsString; fs_CCOR := Cds_Tmp.FieldbyName('CCOR').AsString; fs_NAMC := Cds_Tmp.FieldbyName('NAMC').AsString; fs_NAMD := Cds_Tmp.FieldbyName('NAMD').AsString; fs_NAME := Cds_Tmp.FieldbyName('NAME').AsString; fs_NAMF := Cds_Tmp.FieldbyName('NAMF').AsString; fs_PSTC := Cds_Tmp.FieldbyName('PSTC').AsString; fs_BILL_CCTY := Cds_Tmp.FieldbyName('BILL_CCTY').AsString; fs_FILE_DESADV := Cds_Tmp.FieldbyName('FILE_DESADV').AsString; fs_ALLOW_COMBINE := Cds_Tmp.FieldbyName('ALLOW_COMBINE').AsString; fn_COMBINE_TYPE := Cds_Tmp.FieldbyName('COMBINE_TYPE').AsInteger; Cds_Tmp.Next; if fs_ALLOW_COMBINE <> 'Y' then begin Result := 'These Picking List Not Allowed Combined' #13 'Please Maintain Combine Shipment Mechanism Data' #13 '(Ref. CMPPS020 Table)'; exit; end; if fs_HCUNO <> Cds_Tmp.FieldbyName('HCUNO').AsString then begin Result := 'These Picking List''s Customer Must be Same.'; exit; end; if fs_CRTE <> Cds_Tmp.FieldbyName('CRTE').AsString then begin Result := 'These Picking List''s Ship Way Must be same.'; exit; end; if fs_MPAK <> Cds_Tmp.FieldbyName('MPAK').AsString then begin Result := 'These Picking List''s Packing Method Must be Same.'; exit; end; if fs_CFRW <> Cds_Tmp.FieldbyName('CFRW').AsString then begin Result := 'These Picking List''s Forwarder Agent Must be Same.'; exit; end; if fs_FILE_DESADV <> Cds_Tmp.FieldbyName('FILE_DESADV').AsString then begin Result := 'These Picking List''s had Generated EDI DesAdv.'; exit; end; if fn_COMBINE_TYPE <> Cds_Tmp.FieldbyName('COMBINE_TYPE').AsInteger then begin Result := 'These Picking List''s [COMBINE_TYPE] Must be Same' #13 'Please Maintain Combine Shipment Mechanism Data' #13 '(Ref. CMPPS020 Table)'; exit; end; case fn_COMBINE_TYPE of 1: begin // Combine by Address if (fs_NAMC <> Cds_Tmp.FieldbyName('NAMC').AsString) or (fs_NAMD <> Cds_Tmp.FieldbyName('NAMD').AsString) or
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-07-16 05:04:16 IP:61.30.xxx.xxx 未訂閱
Chance 36 你好 拜讀了您提供連結的文章之後 在程式結尾處加上了 FreeAndNil 以及 SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFF, $FFFFFF) 之後 發覺並未如預期的效果,仍然是只有跑個二個半小時就結束了 在試了一周之後還是沒有更好的解答 在此附上原始碼請教各位先進指導迷津一番,謝謝 // ================================================================================================== // Session : ReceivePicking_1.pas (Receiving Picking List--insert data) // Author : LJ Chen // Create Date : 2004/03/10 // // ================================================================================================== // Modify ID Author Modify Purpose // --------- -------------- ---------------------------------------------------------------- // 040419-01 Dan Chiou Add customer item check function // 040310-01 LJ Chen Create ReceivePicking Session for Receiving Picking List(insert data) // 040707-01 Dan Chiou Add exception handling // ================================================================================================== unit ReceivePickingSF_1; interface uses Windows, Messages, Sysutils, Classes, Graphics, Controls, Forms, Dialogs, bvUtil, Dbtables, Db, Stdctrls, Filectrl, Inifiles, Phio, Phbasic, Extctrls, ComCtrls; type TFrmReceivePicking_1 = class(TForm) DBcms: TDatabase; DBTriton: TDatabase; QDS: TQuery; QDS_Session: TSession; ProgressBar: TProgressBar; Memo_Receive_Picking_Data: TMemo; Process_Status_Line: TLabel; Count: TEdit; Status_Bar: TEdit; Timer1: TTimer; procedure FormCreate(Sender: Tobject); procedure FormActivate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private procedure Update_Cds_Error(DataSet: Tdataset; E: EDataBaseError; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction); procedure Show_Memo_Line_Data(Par_Momo_Data: string); function Create_Cds(Par_DbName: string; Par_Owner: Tcomponent; const Par_Name: string = ''): Tquery; function Cds_Execute(var Par_CdsDb: Tdatabase; var Par_Cds: Tquery): Boolean; procedure Receive_Picking_Data; function Prepare_Set_Status(Par_NCMP, Par_PINO: Integer): Boolean; function Update_Error_Log(Par_NCMP, Par_PINO: Integer; Par_CUNO, Par_DSCA: string): Boolean; procedure Next_Process; { Private Declarations } public function Q_Open(MYquery: Tquery; mSQL: string): Boolean; procedure Q_Execute(MYquery: Tquery; mSQL: string); function GetLine(var MultiLines: Variant; N: integer): string; function Session_Constraint(Par_ses, Par_constra: WideString; const Par_Para: WideString = ''): WideString; function Assign_Number(const GroupNCMP, PARA: WideString): Integer; function CreateQuery(mDBname: string; mOWNER: Tcomponent; const mName: string = ''): Tquery; procedure QueryUpdateError(DataSet: TDataSet; E: EDatabaseError; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction); function Cds_Open(Par_Cds: Tquery; Par_Sql: string): Boolean; { Public Declarations } end; var FrmReceivePicking_1: TFrmReceivePicking_1; Us_LOGFILE_ON_OFF, Us_LOGFILE_PATH: string; Par_NCMP, Par_PINO, Par_ORNO, Par_PONO, Par_GRUP: Integer; Par_CUNO, Par_DSCA, Par_PTYP: string; implementation {$R *.dfm} var cdsCMS, Cds_CTmp, Cds_Tmp, Cds_CSav, Cds_TTmp: TQuery; procedure TFrmReceivePicking_1.Receive_Picking_Data; var Lines: Variant; C002, C021, C029, C022, C071, C062, C066, C067, C101, T000, T012: Tquery; Par_CFRW, T_CSEL, HCUNO, strbuf, strITEM, result, MPAK: string; mCommit, isPDD: boolean; EPS_prepare, mEPSflag, ISAME_ADD: WordBool; Par_DDTA: TDateTime; Par_USER, Par_SESID, Par_APAR,Par_CCOR: string; nCountT21: Integer; procedure DoUPdateCMPPS021; begin C021.Edit; C021.FieldByName('RUNID').Asstring := Par_PTYP; C021.FieldByName('STATUS').Asinteger := 0; C021.FieldByName('EPS_PAKNO').Asstring := ''; C021.FieldByName('INVN').Asstring := CDS_CTmp.Fieldbyname('TTYP').Asstring CDS_CTmp.Fieldbyname('INVN').Asstring; C021.FieldByName('ORNO').Asstring := IntToStr(CDS_CTmp.Fieldbyname('ORNO').Asinteger); C021.FieldByName('COTP').Asstring := CDS_CTmp.Fieldbyname('COTP').Asstring; C021.FieldByName('CORG').Asstring := IntToStr(CDS_CTmp.Fieldbyname('CORG').Asinteger); C021.FieldByName('MPAK').Asstring := MPAK; C021.FieldByName('CRTE').Asstring := TRIM(CDS_CTmp.Fieldbyname('CRTE').Asstring); C021.FieldByName('CFRW').Asstring := Par_CFRW; C021.FieldByName('REFA').Asstring := CDS_CTmp.Fieldbyname('REFA').Asstring; C021.FieldByName('CUNO').Asstring := CDS_CTmp.Fieldbyname('CUNO').Asstring; C021.FieldByName('WBIL').AsInteger := StrToInt(Get000(IntToStr(Par_PINO), 6)); C021.FieldByName('FILE_DESADV').AsString := 'N'; C021.FieldByName('FILE_ACS').AsString := 'N'; C021.FieldByName('PDD').AsString := 'N'; C021.FieldByName('SERI_NO').AsInteger := 1; C021.FieldByName('ACTNO').AsString := ''; C021.FieldByName('HAWB').AsString := ''; C021.FieldByName('OMCU').AsString := CDS_CTmp.FieldByName('OMCU').AsString; C021.FieldByName('INST').AsString := CDS_CTmp.FieldByName('INST').AsString; C021.FieldByName('HCUNO').Asstring := CDS_CTmp.Fieldbyname('OCST').Asstring; if Cds_Open(T000, '0SELECT T$BARC FROM TRITON.TTCCOM910' Get000(IntToStr(Par_NCMP), 3) ' WHERE T$CUNO = ' QuotedStr(CDS_CTmp.Fieldbyname('CUNO').asstring)) and (T000.Fieldbyname('T$BARC').Asinteger = 2) then C021.FieldByName('BARC').Asstring := 'N' else C021.FieldByName('BARC').Asstring := 'Y'; if CDS_CTmp.FieldByname('INVD').AsString = '' then C021.FieldByName('INVD').AsString := '' else C021.FieldByName('INVD').Value := FormatDateTime('YYYY/MM/DD', CDS_CTmp.FieldByname('INVD').Value); end; procedure fp_InsertCMPPS08X(Par_NCMP, Par_ORNO, Par_PINO, Par_PONO: string); var Par_PRIC, sSQL: String; begin // Insert Into CMPPS080 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS080' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin if CDS_Open(T000, '0SELECT T080.T$TTYP, T080.T$INVN, T080.T$CURR, ' ' T080.T$CDEC, T080.T$DSCA, T080.T$CPAY, ' ' T080.T$PDSC, T080.T$SCIR, T080.T$COMP, T081.T$SCIP ' ' FROM TRITON.TTDEPS080' Get000(IntToStr(Par_GRUP), 3) ' T080,' ' TRITON.TTDEPS081' Get000(IntToStr(Par_GRUP), 3) ' T081 ' ' WHERE T081.T$COMP = T080.T$COMP ' ' AND T081.T$TTYP = T080.T$TTYP ' ' AND T081.T$INVN = T080.T$INVN ' ' AND T081.T$PONO = ' Par_PONO ' AND T081.T$SRNB = ' CDS_Tmp.Fieldbyname('SRNB').AsString ' AND T080.T$COMP = ' Par_NCMP ' AND T080.T$ORNO = ' Par_ORNO) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := T000.FieldByName('T$COMP').Value; cdsCMS.FieldByName('PINO').Value := Par_PINO; cdsCMS.FieldByName('INVN').AsString := T000.FieldByName('T$TTYP').AsString Get000(T000.FieldByName('T$INVN').AsString, 8); cdsCMS.FieldByName('CURR').Value := T000.FieldByName('T$CURR').Value; cdsCMS.FieldByName('CDEC').Value := T000.FieldByName('T$CDEC').Value; cdsCMS.FieldByName('DDSC').Value := T000.FieldByName('T$DSCA').Value; cdsCMS.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; cdsCMS.FieldByName('PDSC').Value := T000.FieldByName('T$PDSC').Value; cdsCMS.FieldByName('SCIR').Value := T000.FieldByName('T$SCIR').Value; Par_PRIC := T000.FieldByName('T$SCIP').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; end; { else begin Show_Memo_Line_Data(format(' This ORNO: %S ' #13 ' EPS Invoice Head Data Is Null' ' (Ref. CMPPS080 Table)', [Par_ORNO])); Abort; end; } end; // Insert into CMPPS081 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS081 ' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO ' AND PONO = ' Par_PONO) then begin if (CDS_Open(T000, '0SELECT T$ORNO, T$PONO, T$ITEM, T$REFD, ' ' T$REFC, T$CPON, T$CPON, T$CPRT, ' ' T$CUMN, T$CITM, T$CUIT, T$TREF, ' ' T$COPO, T$CSOL, T$SOLN, T$SLCD, ' ' TO_DATE(DECODE(TO_CHAR(T$RQDT,''YYYY/MM/DD''),''9999/01/01'',NULL,TO_CHAR(T$RQDT,''YYYY/MM/DD'')),''YYYY/MM/DD'') T$RQDT, ' ' T$UPCC, T$DELG, T$SOSL, T$SCIP ' ' FROM TRITON.TTDSLS941' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO ' AND T$PONO = ' Par_PONO)) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').AsString := Par_NCMP; cdsCMS.FieldByName('ORNO').AsString := T000.FieldByName('T$ORNO').AsString; cdsCMS.FieldByName('PONO').AsString := T000.FieldByName('T$PONO').AsString; cdsCMS.FieldByName('ITEM').AsString := Trim(T000.FieldByName('T$ITEM').AsString); cdsCMS.FieldByName('REFD').AsString := Trim(T000.FieldByName('T$REFD').AsString); cdsCMS.FieldByName('REFC').AsString := Trim(T000.FieldByName('T$REFC').AsString); cdsCMS.FieldByName('CPON').AsString := Trim(T000.FieldByName('T$CPON').AsString); cdsCMS.FieldByName('CPRT').AsString := Trim(T000.FieldByName('T$CPRT').AsString); cdsCMS.FieldByName('CUMN').AsString := Trim(T000.FieldByName('T$CUMN').AsString); cdsCMS.FieldByName('CITM').AsString := Trim(T000.FieldByName('T$CITM').AsString); cdsCMS.FieldByName('CUIT').AsString := Trim(T000.FieldByName('T$CUIT').AsString); cdsCMS.FieldByName('TREF').AsString := Trim(T000.FieldByName('T$TREF').AsString); cdsCMS.FieldByName('COPO').AsString := Trim(T000.FieldByName('T$COPO').AsString); cdsCMS.FieldByName('CSOL').AsString := Trim(T000.FieldByName('T$CSOL').AsString); cdsCMS.FieldByName('SOLN').AsString := Trim(T000.FieldByName('T$SOLN').AsString); cdsCMS.FieldByName('SLCD').AsString := Trim(T000.FieldByName('T$SLCD').AsString); cdsCMS.FieldByName('RQDT').AsString := Trim(T000.FieldByName('T$RQDT').AsString); cdsCMS.FieldByName('UPCC').AsString := Trim(T000.FieldByName('T$UPCC').AsString); cdsCMS.FieldByName('DELG').AsString := Trim(T000.FieldByName('T$DELG').AsString); cdsCMS.FieldByName('SOSL').AsString := Trim(T000.FieldByName('T$SOSL').AsString); cdsCMS.FieldByName('SCIP').AsString := Par_PRIC; cdsCMS.FieldByName('DDTA').AsDateTime := Par_DDTA; cdsCMS.FieldByName('APAR').AsString := Par_APAR; end; if CDS_Open(T000, '0SELECT T$CODT FROM TRITON.TTDSLS981' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then begin cdsCMS.FieldByName('CODT').Value := T000.FieldByName('T$CODT').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; end; end; // INSERT CMPPS082 { if not Q_Open(C082, 'SELECT * FROM CMPPS082 ' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin if Q_Open(T000, '0SELECT T988.T$COMP, T988.T$TTYP, T988.T$INVN, T988.T$ORNO, T988.T$CUNO, T988.T$REFA, ' ' T988.T$CCUR, T988.T$CPAY, T988.T$CDEC, T988.T$DDSC, T988.T$PDSC, T988.T$INVD ' ' FROM TRITON.TTDSLS988' Get000(Par_NCMP, 3) ' T988, ' ' TRITON.TTDSLS989' Get000(Par_NCMP, 3) ' T989 ' ' WHERE T988.T$COMP = T989.T$COMP ' ' AND T988.T$TTYP = T989.T$TTYP ' ' AND T988.T$INVN = T989.T$INVN ' ' AND T988.T$ORNO = T989.T$ORNO ' ' AND T989.T$SORN = ' Par_ORNO ' AND T989.T$SPON = ' Par_PONO ' AND T989.T$SSEQ = ' CDS_Tmp.Fieldbyname('SRNB').AsString) then begin C082.Append; C082.FieldByName('NCMP').AsString := Par_NCMP; C082.FieldByName('PINO').Value := Par_PINO; C082.FieldByName('COMP').Value := T000.FieldByName('T$COMP').Value; C082.FieldByName('INVN').Value := T000.FieldByName('T$TTYP').Value Get000(T000.FieldByName('T$INVN').Value, 8); C082.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; C082.FieldByName('CUNO').Value := T000.FieldByName('T$CUNO').Value; C082.FieldByName('REFA').Value := T000.FieldByName('T$REFA').Value; C082.FieldByName('CCUR').Value := T000.FieldByName('T$CCUR').Value; C082.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; C082.FieldByName('CDEC').Value := T000.FieldByName('T$CDEC').Value; C082.FieldByName('DDSC').Value := T000.FieldByName('T$DDSC').Value; if T000.FieldByname('T$INVD').AsString = '' then C082.FieldByName('INVD').AsString := '' else C082.FieldByName('INVD').Value := FormatDateTime('YYYY/MM/DD', T000.FieldByname('T$INVD').Value); C082.POST; C082.ApplyUpdates; end; end; } // INSERT CMPPS083 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS083 ' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').AsInteger := StrToInt(Par_NCMP); cdsCMS.FieldByName('PINO').AsInteger := StrToInt(Par_PINO); cdsCMS.FieldByName('CCOR').Value := Par_CCOR; if CDS_Open(T000, '0SELECT * FROM TRITON.TTDSLS042' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO ' AND T$CKOR = 1') then begin cdsCMS.FieldByName('NAMA').Value := T000.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T000.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T000.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T000.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T000.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T000.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T000.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T000.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end else if Par_CCOR <> '' then begin if CDS_Open(T012, '0SELECT * FROM TRITON.TTCCOM012' Get000(IntToStr(Par_GRUP), 3) ' WHERE T$CUNO = ' QuotedStr(Par_CUNO) ' AND T$CCOR = ' QuotedStr(Par_CCOR)) then begin cdsCMS.FieldByName('NAMA').Value := T012.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T012.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T012.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T012.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T012.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T012.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T012.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T012.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end; end else if CDS_Open(T000, '0SELECT * FROM TRITON.TTCCOM010' Get000(IntToStr(Par_GRUP), 3) ' WHERE T$CUNO = ' QuotedStr(Par_CUNO)) then begin cdsCMS.FieldByName('NAMA').Value := T000.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T000.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T000.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T000.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T000.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T000.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T000.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T000.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end else begin Show_Memo_Line_Data(format('--> This PINO: %S ' #13 ' Picking List Postal Adress ' ' (Ref. CMPPS083 Table)', [Par_PINO])); Abort; end; C029.Post; C029.ApplyUpdates; end; // insert cmpps084 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS084 ' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO) then begin if CDS_Open(T000, '0SELECT * FROM TRITON.TTDSLS851' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then begin while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := Par_ORNO; cdsCMS.FieldByName('CTYP').Value := Trim(T000.FieldByName('T$CTYP').Value); cdsCMS.FieldByName('NAME').Value := Trim(T000.FieldByName('T$NAME').Value); cdsCMS.FieldByName('IDCD').Value := Trim(T000.FieldByName('T$IDCD').Value); cdsCMS.FieldByName('NAMA').Value := Trim(T000.FieldByName('T$NAMA').Value); cdsCMS.FieldByName('NAMB').Value := Trim(T000.FieldByName('T$NAMB').Value); cdsCMS.FieldByName('ADDA').Value := Trim(T000.FieldByName('T$ADDA').Value); cdsCMS.FieldByName('ADDB').Value := Trim(T000.FieldByName('T$ADDB').Value); cdsCMS.FieldByName('CTYA').Value := Trim(T000.FieldByName('T$CTYA').Value); cdsCMS.FieldByName('CTYB').Value := Trim(T000.FieldByName('T$CTYB').Value); cdsCMS.FieldByName('PSTC').Value := Trim(T000.FieldByName('T$PSTC').Value); cdsCMS.FieldByName('CCTY').Value := Trim(T000.FieldByName('T$CCTY').Value); cdsCMS.FieldByName('STNO').Value := Trim(T000.FieldByName('T$STNO').Value); cdsCMS.FieldByName('DPNO').Value := Trim(T000.FieldByName('T$DPNO').Value); cdsCMS.FieldByName('CTNA').Value := Trim(T000.FieldByName('T$CTNA').Value); cdsCMS.FieldByName('CMNO').Value := Trim(T000.FieldByName('T$CMNO').Value); cdsCMS.FieldByName('ADDC').Value := Trim(T000.FieldByName('T$ADDC').Value); cdsCMS.FieldByName('ADDD').Value := Trim(T000.FieldByName('T$ADDD').Value); cdsCMS.Post; cdsCMS.ApplyUpdates; T000.next; end; end; end; // INSERT CMPPS085 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS085' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO) then if Session_Constraint('PPSM02S01', 'ORDER_MSG_SLS847') = 'Y' then begin if CDS_Open(T000, '0SELECT T$MESS,T$SEQN, T$INSN, T$ORNO,T$PONO ' ' FROM TRITON.TTDSLS852' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; cdsCMS.FieldByName('PONO').Value := T000.FieldByName('T$PONO').Value; cdsCMS.FieldByName('INSN').Value := T000.FieldByName('T$INSN').Value; cdsCMS.FieldByName('SEQN').Value := T000.FieldByName('T$SEQN').Value; cdsCMS.FieldByName('MESS').Value := T000.FieldByName('T$MESS').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; T000.Next; end; end else if CDS_Open(T000, '0SELECT T$MESS, T$SEQN, T$ORNO, T$PONO ' ' FROM TRITON.TTDSLS847' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; cdsCMS.FieldByName('PONO').Value := T000.FieldByName('T$PONO').Value; cdsCMS.FieldByName('INSN').Value := T000.FieldByName('T$INSN').Value; cdsCMS.FieldByName('SEQN').Value := T000.FieldByName('T$SEQN').Value; cdsCMS.FieldByName('MESS').Value := T000.FieldByName('T$MESS').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; T000.Next; end; if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS090 ' ' WHERE NCMP = ' Get000(Par_NCMP, 3) ' AND ITEM = ' QuotedStr(Trim(strITEM))) then Begin if CDS_Open(T000, '0SELECT T001.T$ITEM, T001.T$DSCA, T902.T$GNDS, T001.T$CSEL, ' ' T902.T$BCLA, T902.T$MCLA, T902.T$SCLA, T001.T$CTYO, ' ' T902.T$BKFG, T902.T$MCNO, T902.T$UCCC, T902.T$RELE ' ' FROM TRITON.TTIITM001' Get000(Par_NCMP, 3) ' T001, ' ' TRITON.TTIITM902' Get000(Par_NCMP, 3) ' T902 ' ' WHERE LTRIM(RTRIM(T001.T$ITEM)) = LTRIM(RTRIM(T902.T$ITEM))' ' AND LTRIM(RTRIM(T001.T$ITEM)) = ' QuotedStr(Trim(strITEM))) then while Not T000.Eof do Begin If (TRIM(T000.FieldByName('T$ITEM').AsString) = '') And (Par_NCMP = ' ') then T000.Next Else Begin cdsCMS.Append ; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ITEM').Value := Trim(T000.FieldByName('T$ITEM').Value); cdsCMS.FieldByName('DSCA').Value := T000.FieldByName('T$DSCA').Value; cdsCMS.FieldByName('GNDS').Value := T000.FieldByName('T$GNDS').Value; cdsCMS.FieldByName('CSEL').Value := T000.FieldByName('T$CSEL').Value; cdsCMS.FieldByName('BCLA').Value := T000.FieldByName('T$BCLA').Value; cdsCMS.FieldByName('MCLA').Value := T000.FieldByName('T$MCLA').Value; cdsCMS.FieldByName('SCLA').Value := T000.FieldByName('T$SCLA').Value; cdsCMS.FieldByName('CTYO').Value := T000.FieldByName('T$CTYO').Value; cdsCMS.FieldByName('BKFG').Value := T000.FieldByName('T$BKFG').Value; cdsCMS.FieldByName('MCNO').Value := T000.FieldByName('T$MCNO').Value; cdsCMS.FieldByName('UCCC').Value := T000.FieldByName('T$UCCC').Value; cdsCMS.FieldByName('RELE').Value := T000.FieldByName('T$RELE').Value; cdsCMS.Post ; cdsCMS.ApplyUpdates ; T000.Next ; End; End; End; { // INSERT CMPPS094 DATA if not Q_Open(C094, '0SELECT * FROM CMPPS094' ' WHERE NCMP = ' Par_NCMP ' AND CUNO = ' QuotedStr(CDS_CTmp.FieldByName('OCST').AsString) ' AND CCTY = ' QuotedStr(C029.FieldByName('CCTY').AsString)) then Begin if Q_Open(T000, '0SELECT * FROM TRITON.TTDSLS853' par_NCMP ' WHERE T$OCST = ' QuotedStr(CDS_CTmp.FieldByName('OCST').AsString) ' AND T$SHIP = ' QuotedStr(C029.FieldByName('CCTY').AsString)) then while not T000.Eof do Begin C094.Append; C094.FieldByName('NCMP').Value := Par_NCMP; C094.FieldByName('CUNO').Value := T000.FieldByName('T$OCST').Value; C094.FieldByName('CCTY').Value := T000.FieldByName('T$SHIP').Value; C094.FieldByName('CCUR').Value := T000.FieldByName('T$CCUR').Value; C094.FieldByName('SLTA').Value := T000.FieldByName('T$SLTA').Value; C094.FieldByName('SLTB').Value := T000.FieldByName('T$SLTB').Value; C094.FieldByName('SLTC').Value := T000.FieldByName('T$SLTC').Value; C094.FieldByName('SLTD').Value := T000.FieldByName('T$SLTD').Value; C094.FieldByName('SLTE').Value := T000.FieldByName('T$SLTE').Value; C094.FieldByName('SLBA').Value := T000.FieldByName('T$SLBA').Value; C094.FieldByName('SLBB').Value := T000.FieldByName('T$SLBB').Value; C094.FieldByName('SLBC').Value := T000.FieldByName('T$SLBC').Value; C094.FieldByName('SLBD').Value := T000.FieldByName('T$SLBD').Value; C094.FieldByName('SLBE').Value := T000.FieldByName('T$SLBE').Value; C094.FieldByName('TERM').Value := T000.FieldByName('T$TERM').Value; C094.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; C094.POST; C094.ApplyUpdates; T000.Next ; End; End; } end; function ff_Compare_Picking: string; var fs_HCUNO, fs_CRTE, fs_MPAK, fs_CFRW, fs_File_DESADV, fs_CDEL, fs_CCTY: String; fs_CCOR, fs_BILL_CCTY, fs_NAMC, fs_NAMD, fs_NAME, fs_NAMF, fs_PSTC, fs_ALLOW_COMBINE: String; fn_COMBINE_TYPE: Integer; Receive_Keepdata: Array of String; begin if High(Receive_Keepdata) < 2 then Setlength(Receive_Keepdata, 3); if ISAME_ADD and C029.Active and C021.Active then begin if Receive_Keepdata[0] <> 'Y' then begin Receive_Keepdata[0] := 'Y'; Receive_Keepdata[1] := C021.FieldbyName('NCMP').Asstring; Receive_Keepdata[2] := C021.FieldbyName('PINO').Asstring; end else begin Cds_Open(Cds_Tmp, '0SELECT C021.HCUNO HCUNO, C021.CRTE CRTE, C021.MPAK MPAK, C021.CFRW CFRW, ' ' C021.FILE_DESADV FILE_DESADV, C021.CDEL CDEL, C021.CCTY CCTY, C021.CCOR CCOR,' ' C021.BILL_CCTY BILL_CCTY, C021.NAMC NAMC, C021.NAMD NAMD, C021.NAME NAME, ' ' C021.NAMF NAMF, C021.PSTC PSTC, ' ' UPPER(NVL(C020.ALLOW_COMBINE, ''N'')) ALLOW_COMBINE, ' ' NVL(C020.COMBINE_TYPE, 0) COMBINE_TYPE ' ' FROM CMPPS020 C020, ' ' (SELECT C021.NCMP NCMP, C021.HCUNO HCUNO, C021.CRTE CRTE, C021.MPAK MPAK, ' ' C021.CFRW CFRW, C021.FILE_DESADV FILE_DESADV, ' ' NVL(C029.CDEL, ''NVL'') CDEL, NVL(C029.CCTY, ''NVL'') CCTY, ' ' NVL(C029.CCOR, ''NVL'') CCOR, NVL(C029.BILL_CCTY, ''NVL'') BILL_CCTY, ' ' NVL(C029.NAMC, ''NVL'') NAMC, NVL(C029.NAMD, ''NVL'') NAMD, ' ' NVL(C029.NAME, ''NVL'') NAME, NVL(C029.NAMF, ''NVL'') NAMF, ' ' NVL(C029.PSTC, ''NVL'') PSTC ' ' FROM CMPPS021 C021, CMPPS029 C029 ' ' WHERE C021.NCMP = ' IntToStr(Par_NCMP) ' AND C021.PINO IN (' Receive_Keepdata[2] ', ' C021.FieldbyName('PINO').AsString ')' ' AND C029.NCMP = C021.NCMP ' ' AND C029.PINO = C021.PINO) C021 ' ' WHERE C020.NCMP ( ) = C021.NCMP ' ' AND C020.CUNO ( ) = C021.HCUNO ' ' AND C020.CCTY ( ) = C021.CCTY ' ' AND C020.CFRW ( ) = C021.CFRW'); fs_HCUNO := Cds_Tmp.FieldbyName('HCUNO').AsString; fs_CRTE := Cds_Tmp.FieldbyName('CRTE').AsString; fs_MPAK := Cds_Tmp.FieldbyName('MPAK').AsString; fs_CFRW := Cds_Tmp.FieldbyName('CFRW').AsString; fs_CDEL := Cds_Tmp.FieldbyName('CDEL').AsString; fs_CCTY := Cds_Tmp.FieldbyName('CCTY').AsString; fs_CCOR := Cds_Tmp.FieldbyName('CCOR').AsString; fs_NAMC := Cds_Tmp.FieldbyName('NAMC').AsString; fs_NAMD := Cds_Tmp.FieldbyName('NAMD').AsString; fs_NAME := Cds_Tmp.FieldbyName('NAME').AsString; fs_NAMF := Cds_Tmp.FieldbyName('NAMF').AsString; fs_PSTC := Cds_Tmp.FieldbyName('PSTC').AsString; fs_BILL_CCTY := Cds_Tmp.FieldbyName('BILL_CCTY').AsString; fs_FILE_DESADV := Cds_Tmp.FieldbyName('FILE_DESADV').AsString; fs_ALLOW_COMBINE := Cds_Tmp.FieldbyName('ALLOW_COMBINE').AsString; fn_COMBINE_TYPE := Cds_Tmp.FieldbyName('COMBINE_TYPE').AsInteger; Cds_Tmp.Next; if fs_ALLOW_COMBINE <> 'Y' then begin Result := 'These Picking List Not Allowed Combined' #13 'Please Maintain Combine Shipment Mechanism Data' #13 '(Ref. CMPPS020 Table)'; exit; end; if fs_HCUNO <> Cds_Tmp.FieldbyName('HCUNO').AsString then begin Result := 'These Picking List''s Customer Must be Same.'; exit; end; if fs_CRTE <> Cds_Tmp.FieldbyName('CRTE').AsString then begin Result := 'These Picking List''s Ship Way Must be same.'; exit; end; if fs_MPAK <> Cds_Tmp.FieldbyName('MPAK').AsString then begin Result := 'These Picking List''s Packing Method Must be Same.'; exit; end; if fs_CFRW <> Cds_Tmp.FieldbyName('CFRW').AsString then begin Result := 'These Picking List''s Forwarder Agent Must be Same.'; exit; end; if fs_FILE_DESADV <> Cds_Tmp.FieldbyName('FILE_DESADV').AsString then begin Result := 'These Picking List''s had Generated EDI DesAdv.'; exit; end; if fn_COMBINE_TYPE <> Cds_Tmp.FieldbyName('COMBINE_TYPE').AsInteger then begin Result := 'These Picking List''s [COMBINE_TYPE] Must be Same' #13 'Please Maintain Combine Shipment Mechanism Data' #13 '(Ref. CMPPS020 Table)'; exit; end; case fn_COMBINE_TYPE of 1: begin // Combine by Address if (fs_NAMC <> Cds_Tmp.FieldbyName('NAMC').AsString) or (fs_NAMD <> Cds_Tmp.FieldbyName('NAMD').AsString) or
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-07-16 05:06:49 IP:61.30.xxx.xxx 未訂閱
Chance 36 你好 拜讀了您提供連結的文章之後 在程式結尾處加上了 FreeAndNil 以及 SetProcessWorkingSetSize(GetCurrentProcess, $FFFFFF, $FFFFFF) 之後 發覺並未如預期的效果,仍然是只有跑個二個半小時就結束了 在試了一周之後還是沒有更好的解答 在此附上原始碼請教各位先進指導迷津一番,謝謝 // ================================================================================================== // Session : ReceivePicking_1.pas (Receiving Picking List--insert data) // Author : LJ Chen // Create Date : 2004/03/10 // // ================================================================================================== // Modify ID Author Modify Purpose // --------- -------------- ---------------------------------------------------------------- // 040419-01 Dan Chiou Add customer item check function // 040310-01 LJ Chen Create ReceivePicking Session for Receiving Picking List(insert data) // 040707-01 Dan Chiou Add exception handling // ================================================================================================== unit ReceivePickingSF_1; interface uses Windows, Messages, Sysutils, Classes, Graphics, Controls, Forms, Dialogs, bvUtil, Dbtables, Db, Stdctrls, Filectrl, Inifiles, Phio, Phbasic, Extctrls, ComCtrls; type TFrmReceivePicking_1 = class(TForm) DBcms: TDatabase; DBTriton: TDatabase; QDS: TQuery; QDS_Session: TSession; ProgressBar: TProgressBar; Memo_Receive_Picking_Data: TMemo; Process_Status_Line: TLabel; Count: TEdit; Status_Bar: TEdit; Timer1: TTimer; procedure FormCreate(Sender: Tobject); procedure FormActivate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private procedure Update_Cds_Error(DataSet: Tdataset; E: EDataBaseError; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction); procedure Show_Memo_Line_Data(Par_Momo_Data: string); function Create_Cds(Par_DbName: string; Par_Owner: Tcomponent; const Par_Name: string = ''): Tquery; function Cds_Execute(var Par_CdsDb: Tdatabase; var Par_Cds: Tquery): Boolean; procedure Receive_Picking_Data; function Prepare_Set_Status(Par_NCMP, Par_PINO: Integer): Boolean; function Update_Error_Log(Par_NCMP, Par_PINO: Integer; Par_CUNO, Par_DSCA: string): Boolean; procedure Next_Process; { Private Declarations } public function Q_Open(MYquery: Tquery; mSQL: string): Boolean; procedure Q_Execute(MYquery: Tquery; mSQL: string); function GetLine(var MultiLines: Variant; N: integer): string; function Session_Constraint(Par_ses, Par_constra: WideString; const Par_Para: WideString = ''): WideString; function Assign_Number(const GroupNCMP, PARA: WideString): Integer; function CreateQuery(mDBname: string; mOWNER: Tcomponent; const mName: string = ''): Tquery; procedure QueryUpdateError(DataSet: TDataSet; E: EDatabaseError; UpdateKind: TUpdateKind; var UpdateAction: TUpdateAction); function Cds_Open(Par_Cds: Tquery; Par_Sql: string): Boolean; { Public Declarations } end; var FrmReceivePicking_1: TFrmReceivePicking_1; Us_LOGFILE_ON_OFF, Us_LOGFILE_PATH: string; Par_NCMP, Par_PINO, Par_ORNO, Par_PONO, Par_GRUP: Integer; Par_CUNO, Par_DSCA, Par_PTYP: string; implementation {$R *.dfm} var cdsCMS, Cds_CTmp, Cds_Tmp, Cds_CSav, Cds_TTmp: TQuery; procedure TFrmReceivePicking_1.Receive_Picking_Data; var Lines: Variant; C002, C021, C029, C022, C071, C062, C066, C067, C101, T000, T012: Tquery; Par_CFRW, T_CSEL, HCUNO, strbuf, strITEM, result, MPAK: string; mCommit, isPDD: boolean; EPS_prepare, mEPSflag, ISAME_ADD: WordBool; Par_DDTA: TDateTime; Par_USER, Par_SESID, Par_APAR,Par_CCOR: string; nCountT21: Integer; procedure DoUPdateCMPPS021; begin C021.Edit; C021.FieldByName('RUNID').Asstring := Par_PTYP; C021.FieldByName('STATUS').Asinteger := 0; C021.FieldByName('EPS_PAKNO').Asstring := ''; C021.FieldByName('INVN').Asstring := CDS_CTmp.Fieldbyname('TTYP').Asstring CDS_CTmp.Fieldbyname('INVN').Asstring; C021.FieldByName('ORNO').Asstring := IntToStr(CDS_CTmp.Fieldbyname('ORNO').Asinteger); C021.FieldByName('COTP').Asstring := CDS_CTmp.Fieldbyname('COTP').Asstring; C021.FieldByName('CORG').Asstring := IntToStr(CDS_CTmp.Fieldbyname('CORG').Asinteger); C021.FieldByName('MPAK').Asstring := MPAK; C021.FieldByName('CRTE').Asstring := TRIM(CDS_CTmp.Fieldbyname('CRTE').Asstring); C021.FieldByName('CFRW').Asstring := Par_CFRW; C021.FieldByName('REFA').Asstring := CDS_CTmp.Fieldbyname('REFA').Asstring; C021.FieldByName('CUNO').Asstring := CDS_CTmp.Fieldbyname('CUNO').Asstring; C021.FieldByName('WBIL').AsInteger := StrToInt(Get000(IntToStr(Par_PINO), 6)); C021.FieldByName('FILE_DESADV').AsString := 'N'; C021.FieldByName('FILE_ACS').AsString := 'N'; C021.FieldByName('PDD').AsString := 'N'; C021.FieldByName('SERI_NO').AsInteger := 1; C021.FieldByName('ACTNO').AsString := ''; C021.FieldByName('HAWB').AsString := ''; C021.FieldByName('OMCU').AsString := CDS_CTmp.FieldByName('OMCU').AsString; C021.FieldByName('INST').AsString := CDS_CTmp.FieldByName('INST').AsString; C021.FieldByName('HCUNO').Asstring := CDS_CTmp.Fieldbyname('OCST').Asstring; if Cds_Open(T000, '0SELECT T$BARC FROM TRITON.TTCCOM910' Get000(IntToStr(Par_NCMP), 3) ' WHERE T$CUNO = ' QuotedStr(CDS_CTmp.Fieldbyname('CUNO').asstring)) and (T000.Fieldbyname('T$BARC').Asinteger = 2) then C021.FieldByName('BARC').Asstring := 'N' else C021.FieldByName('BARC').Asstring := 'Y'; if CDS_CTmp.FieldByname('INVD').AsString = '' then C021.FieldByName('INVD').AsString := '' else C021.FieldByName('INVD').Value := FormatDateTime('YYYY/MM/DD', CDS_CTmp.FieldByname('INVD').Value); end; procedure fp_InsertCMPPS08X(Par_NCMP, Par_ORNO, Par_PINO, Par_PONO: string); var Par_PRIC, sSQL: String; begin // Insert Into CMPPS080 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS080' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin if CDS_Open(T000, '0SELECT T080.T$TTYP, T080.T$INVN, T080.T$CURR, ' ' T080.T$CDEC, T080.T$DSCA, T080.T$CPAY, ' ' T080.T$PDSC, T080.T$SCIR, T080.T$COMP, T081.T$SCIP ' ' FROM TRITON.TTDEPS080' Get000(IntToStr(Par_GRUP), 3) ' T080,' ' TRITON.TTDEPS081' Get000(IntToStr(Par_GRUP), 3) ' T081 ' ' WHERE T081.T$COMP = T080.T$COMP ' ' AND T081.T$TTYP = T080.T$TTYP ' ' AND T081.T$INVN = T080.T$INVN ' ' AND T081.T$PONO = ' Par_PONO ' AND T081.T$SRNB = ' CDS_Tmp.Fieldbyname('SRNB').AsString ' AND T080.T$COMP = ' Par_NCMP ' AND T080.T$ORNO = ' Par_ORNO) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := T000.FieldByName('T$COMP').Value; cdsCMS.FieldByName('PINO').Value := Par_PINO; cdsCMS.FieldByName('INVN').AsString := T000.FieldByName('T$TTYP').AsString Get000(T000.FieldByName('T$INVN').AsString, 8); cdsCMS.FieldByName('CURR').Value := T000.FieldByName('T$CURR').Value; cdsCMS.FieldByName('CDEC').Value := T000.FieldByName('T$CDEC').Value; cdsCMS.FieldByName('DDSC').Value := T000.FieldByName('T$DSCA').Value; cdsCMS.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; cdsCMS.FieldByName('PDSC').Value := T000.FieldByName('T$PDSC').Value; cdsCMS.FieldByName('SCIR').Value := T000.FieldByName('T$SCIR').Value; Par_PRIC := T000.FieldByName('T$SCIP').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; end; { else begin Show_Memo_Line_Data(format(' This ORNO: %S ' #13 ' EPS Invoice Head Data Is Null' ' (Ref. CMPPS080 Table)', [Par_ORNO])); Abort; end; } end; // Insert into CMPPS081 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS081 ' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO ' AND PONO = ' Par_PONO) then begin if (CDS_Open(T000, '0SELECT T$ORNO, T$PONO, T$ITEM, T$REFD, ' ' T$REFC, T$CPON, T$CPON, T$CPRT, ' ' T$CUMN, T$CITM, T$CUIT, T$TREF, ' ' T$COPO, T$CSOL, T$SOLN, T$SLCD, ' ' TO_DATE(DECODE(TO_CHAR(T$RQDT,''YYYY/MM/DD''),''9999/01/01'',NULL,TO_CHAR(T$RQDT,''YYYY/MM/DD'')),''YYYY/MM/DD'') T$RQDT, ' ' T$UPCC, T$DELG, T$SOSL, T$SCIP ' ' FROM TRITON.TTDSLS941' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO ' AND T$PONO = ' Par_PONO)) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').AsString := Par_NCMP; cdsCMS.FieldByName('ORNO').AsString := T000.FieldByName('T$ORNO').AsString; cdsCMS.FieldByName('PONO').AsString := T000.FieldByName('T$PONO').AsString; cdsCMS.FieldByName('ITEM').AsString := Trim(T000.FieldByName('T$ITEM').AsString); cdsCMS.FieldByName('REFD').AsString := Trim(T000.FieldByName('T$REFD').AsString); cdsCMS.FieldByName('REFC').AsString := Trim(T000.FieldByName('T$REFC').AsString); cdsCMS.FieldByName('CPON').AsString := Trim(T000.FieldByName('T$CPON').AsString); cdsCMS.FieldByName('CPRT').AsString := Trim(T000.FieldByName('T$CPRT').AsString); cdsCMS.FieldByName('CUMN').AsString := Trim(T000.FieldByName('T$CUMN').AsString); cdsCMS.FieldByName('CITM').AsString := Trim(T000.FieldByName('T$CITM').AsString); cdsCMS.FieldByName('CUIT').AsString := Trim(T000.FieldByName('T$CUIT').AsString); cdsCMS.FieldByName('TREF').AsString := Trim(T000.FieldByName('T$TREF').AsString); cdsCMS.FieldByName('COPO').AsString := Trim(T000.FieldByName('T$COPO').AsString); cdsCMS.FieldByName('CSOL').AsString := Trim(T000.FieldByName('T$CSOL').AsString); cdsCMS.FieldByName('SOLN').AsString := Trim(T000.FieldByName('T$SOLN').AsString); cdsCMS.FieldByName('SLCD').AsString := Trim(T000.FieldByName('T$SLCD').AsString); cdsCMS.FieldByName('RQDT').AsString := Trim(T000.FieldByName('T$RQDT').AsString); cdsCMS.FieldByName('UPCC').AsString := Trim(T000.FieldByName('T$UPCC').AsString); cdsCMS.FieldByName('DELG').AsString := Trim(T000.FieldByName('T$DELG').AsString); cdsCMS.FieldByName('SOSL').AsString := Trim(T000.FieldByName('T$SOSL').AsString); cdsCMS.FieldByName('SCIP').AsString := Par_PRIC; cdsCMS.FieldByName('DDTA').AsDateTime := Par_DDTA; cdsCMS.FieldByName('APAR').AsString := Par_APAR; end; if CDS_Open(T000, '0SELECT T$CODT FROM TRITON.TTDSLS981' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then begin cdsCMS.FieldByName('CODT').Value := T000.FieldByName('T$CODT').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; end; end; // INSERT CMPPS082 { if not Q_Open(C082, 'SELECT * FROM CMPPS082 ' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin if Q_Open(T000, '0SELECT T988.T$COMP, T988.T$TTYP, T988.T$INVN, T988.T$ORNO, T988.T$CUNO, T988.T$REFA, ' ' T988.T$CCUR, T988.T$CPAY, T988.T$CDEC, T988.T$DDSC, T988.T$PDSC, T988.T$INVD ' ' FROM TRITON.TTDSLS988' Get000(Par_NCMP, 3) ' T988, ' ' TRITON.TTDSLS989' Get000(Par_NCMP, 3) ' T989 ' ' WHERE T988.T$COMP = T989.T$COMP ' ' AND T988.T$TTYP = T989.T$TTYP ' ' AND T988.T$INVN = T989.T$INVN ' ' AND T988.T$ORNO = T989.T$ORNO ' ' AND T989.T$SORN = ' Par_ORNO ' AND T989.T$SPON = ' Par_PONO ' AND T989.T$SSEQ = ' CDS_Tmp.Fieldbyname('SRNB').AsString) then begin C082.Append; C082.FieldByName('NCMP').AsString := Par_NCMP; C082.FieldByName('PINO').Value := Par_PINO; C082.FieldByName('COMP').Value := T000.FieldByName('T$COMP').Value; C082.FieldByName('INVN').Value := T000.FieldByName('T$TTYP').Value Get000(T000.FieldByName('T$INVN').Value, 8); C082.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; C082.FieldByName('CUNO').Value := T000.FieldByName('T$CUNO').Value; C082.FieldByName('REFA').Value := T000.FieldByName('T$REFA').Value; C082.FieldByName('CCUR').Value := T000.FieldByName('T$CCUR').Value; C082.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; C082.FieldByName('CDEC').Value := T000.FieldByName('T$CDEC').Value; C082.FieldByName('DDSC').Value := T000.FieldByName('T$DDSC').Value; if T000.FieldByname('T$INVD').AsString = '' then C082.FieldByName('INVD').AsString := '' else C082.FieldByName('INVD').Value := FormatDateTime('YYYY/MM/DD', T000.FieldByname('T$INVD').Value); C082.POST; C082.ApplyUpdates; end; end; } // INSERT CMPPS083 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS083 ' ' WHERE NCMP = ' Par_NCMP ' AND PINO = ' Par_PINO) then begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').AsInteger := StrToInt(Par_NCMP); cdsCMS.FieldByName('PINO').AsInteger := StrToInt(Par_PINO); cdsCMS.FieldByName('CCOR').Value := Par_CCOR; if CDS_Open(T000, '0SELECT * FROM TRITON.TTDSLS042' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO ' AND T$CKOR = 1') then begin cdsCMS.FieldByName('NAMA').Value := T000.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T000.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T000.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T000.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T000.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T000.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T000.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T000.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end else if Par_CCOR <> '' then begin if CDS_Open(T012, '0SELECT * FROM TRITON.TTCCOM012' Get000(IntToStr(Par_GRUP), 3) ' WHERE T$CUNO = ' QuotedStr(Par_CUNO) ' AND T$CCOR = ' QuotedStr(Par_CCOR)) then begin cdsCMS.FieldByName('NAMA').Value := T012.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T012.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T012.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T012.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T012.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T012.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T012.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T012.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end; end else if CDS_Open(T000, '0SELECT * FROM TRITON.TTCCOM010' Get000(IntToStr(Par_GRUP), 3) ' WHERE T$CUNO = ' QuotedStr(Par_CUNO)) then begin cdsCMS.FieldByName('NAMA').Value := T000.fieldbyname('T$NAMA').Value; cdsCMS.FieldByName('NAMB').Value := T000.fieldbyname('T$NAMB').Value; cdsCMS.FieldByName('NAMC').Value := T000.fieldbyname('T$NAMC').Value; cdsCMS.FieldByName('NAMD').Value := T000.fieldbyname('T$NAMD').Value; cdsCMS.FieldByName('NAME').Value := T000.fieldbyname('T$NAME').Value; cdsCMS.FieldByName('NAMF').Value := T000.fieldbyname('T$NAMF').Value; cdsCMS.FieldByName('CCTY').Value := T000.fieldbyname('T$CCTY').Value; cdsCMS.FieldByName('PSTC').Value := T000.fieldbyname('T$PSTC').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; C029.FieldByName('BILL_CCTY').Value := T000.Fieldbyname('T$CCTY').Value; end else begin Show_Memo_Line_Data(format('--> This PINO: %S ' #13 ' Picking List Postal Adress ' ' (Ref. CMPPS083 Table)', [Par_PINO])); Abort; end; C029.Post; C029.ApplyUpdates; end; // insert cmpps084 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS084 ' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO) then begin if CDS_Open(T000, '0SELECT * FROM TRITON.TTDSLS851' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then begin while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := Par_ORNO; cdsCMS.FieldByName('CTYP').Value := Trim(T000.FieldByName('T$CTYP').Value); cdsCMS.FieldByName('NAME').Value := Trim(T000.FieldByName('T$NAME').Value); cdsCMS.FieldByName('IDCD').Value := Trim(T000.FieldByName('T$IDCD').Value); cdsCMS.FieldByName('NAMA').Value := Trim(T000.FieldByName('T$NAMA').Value); cdsCMS.FieldByName('NAMB').Value := Trim(T000.FieldByName('T$NAMB').Value); cdsCMS.FieldByName('ADDA').Value := Trim(T000.FieldByName('T$ADDA').Value); cdsCMS.FieldByName('ADDB').Value := Trim(T000.FieldByName('T$ADDB').Value); cdsCMS.FieldByName('CTYA').Value := Trim(T000.FieldByName('T$CTYA').Value); cdsCMS.FieldByName('CTYB').Value := Trim(T000.FieldByName('T$CTYB').Value); cdsCMS.FieldByName('PSTC').Value := Trim(T000.FieldByName('T$PSTC').Value); cdsCMS.FieldByName('CCTY').Value := Trim(T000.FieldByName('T$CCTY').Value); cdsCMS.FieldByName('STNO').Value := Trim(T000.FieldByName('T$STNO').Value); cdsCMS.FieldByName('DPNO').Value := Trim(T000.FieldByName('T$DPNO').Value); cdsCMS.FieldByName('CTNA').Value := Trim(T000.FieldByName('T$CTNA').Value); cdsCMS.FieldByName('CMNO').Value := Trim(T000.FieldByName('T$CMNO').Value); cdsCMS.FieldByName('ADDC').Value := Trim(T000.FieldByName('T$ADDC').Value); cdsCMS.FieldByName('ADDD').Value := Trim(T000.FieldByName('T$ADDD').Value); cdsCMS.Post; cdsCMS.ApplyUpdates; T000.next; end; end; end; // INSERT CMPPS085 if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS085' ' WHERE NCMP = ' Par_NCMP ' AND ORNO = ' Par_ORNO) then if Session_Constraint('PPSM02S01', 'ORDER_MSG_SLS847') = 'Y' then begin if CDS_Open(T000, '0SELECT T$MESS,T$SEQN, T$INSN, T$ORNO,T$PONO ' ' FROM TRITON.TTDSLS852' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; cdsCMS.FieldByName('PONO').Value := T000.FieldByName('T$PONO').Value; cdsCMS.FieldByName('INSN').Value := T000.FieldByName('T$INSN').Value; cdsCMS.FieldByName('SEQN').Value := T000.FieldByName('T$SEQN').Value; cdsCMS.FieldByName('MESS').Value := T000.FieldByName('T$MESS').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; T000.Next; end; end else if CDS_Open(T000, '0SELECT T$MESS, T$SEQN, T$ORNO, T$PONO ' ' FROM TRITON.TTDSLS847' Get000(Par_NCMP, 3) ' WHERE T$ORNO = ' Par_ORNO) then while not T000.Eof do begin cdsCMS.Append; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ORNO').Value := T000.FieldByName('T$ORNO').Value; cdsCMS.FieldByName('PONO').Value := T000.FieldByName('T$PONO').Value; cdsCMS.FieldByName('INSN').Value := T000.FieldByName('T$INSN').Value; cdsCMS.FieldByName('SEQN').Value := T000.FieldByName('T$SEQN').Value; cdsCMS.FieldByName('MESS').Value := T000.FieldByName('T$MESS').Value; cdsCMS.POST; cdsCMS.ApplyUpdates; T000.Next; end; if not CDS_Open(cdsCMS, 'SELECT * FROM CMPPS090 ' ' WHERE NCMP = ' Get000(Par_NCMP, 3) ' AND ITEM = ' QuotedStr(Trim(strITEM))) then Begin if CDS_Open(T000, '0SELECT T001.T$ITEM, T001.T$DSCA, T902.T$GNDS, T001.T$CSEL, ' ' T902.T$BCLA, T902.T$MCLA, T902.T$SCLA, T001.T$CTYO, ' ' T902.T$BKFG, T902.T$MCNO, T902.T$UCCC, T902.T$RELE ' ' FROM TRITON.TTIITM001' Get000(Par_NCMP, 3) ' T001, ' ' TRITON.TTIITM902' Get000(Par_NCMP, 3) ' T902 ' ' WHERE LTRIM(RTRIM(T001.T$ITEM)) = LTRIM(RTRIM(T902.T$ITEM))' ' AND LTRIM(RTRIM(T001.T$ITEM)) = ' QuotedStr(Trim(strITEM))) then while Not T000.Eof do Begin If (TRIM(T000.FieldByName('T$ITEM').AsString) = '') And (Par_NCMP = ' ') then T000.Next Else Begin cdsCMS.Append ; cdsCMS.FieldByName('NCMP').Value := Par_NCMP; cdsCMS.FieldByName('ITEM').Value := Trim(T000.FieldByName('T$ITEM').Value); cdsCMS.FieldByName('DSCA').Value := T000.FieldByName('T$DSCA').Value; cdsCMS.FieldByName('GNDS').Value := T000.FieldByName('T$GNDS').Value; cdsCMS.FieldByName('CSEL').Value := T000.FieldByName('T$CSEL').Value; cdsCMS.FieldByName('BCLA').Value := T000.FieldByName('T$BCLA').Value; cdsCMS.FieldByName('MCLA').Value := T000.FieldByName('T$MCLA').Value; cdsCMS.FieldByName('SCLA').Value := T000.FieldByName('T$SCLA').Value; cdsCMS.FieldByName('CTYO').Value := T000.FieldByName('T$CTYO').Value; cdsCMS.FieldByName('BKFG').Value := T000.FieldByName('T$BKFG').Value; cdsCMS.FieldByName('MCNO').Value := T000.FieldByName('T$MCNO').Value; cdsCMS.FieldByName('UCCC').Value := T000.FieldByName('T$UCCC').Value; cdsCMS.FieldByName('RELE').Value := T000.FieldByName('T$RELE').Value; cdsCMS.Post ; cdsCMS.ApplyUpdates ; T000.Next ; End; End; End; { // INSERT CMPPS094 DATA if not Q_Open(C094, '0SELECT * FROM CMPPS094' ' WHERE NCMP = ' Par_NCMP ' AND CUNO = ' QuotedStr(CDS_CTmp.FieldByName('OCST').AsString) ' AND CCTY = ' QuotedStr(C029.FieldByName('CCTY').AsString)) then Begin if Q_Open(T000, '0SELECT * FROM TRITON.TTDSLS853' par_NCMP ' WHERE T$OCST = ' QuotedStr(CDS_CTmp.FieldByName('OCST').AsString) ' AND T$SHIP = ' QuotedStr(C029.FieldByName('CCTY').AsString)) then while not T000.Eof do Begin C094.Append; C094.FieldByName('NCMP').Value := Par_NCMP; C094.FieldByName('CUNO').Value := T000.FieldByName('T$OCST').Value; C094.FieldByName('CCTY').Value := T000.FieldByName('T$SHIP').Value; C094.FieldByName('CCUR').Value := T000.FieldByName('T$CCUR').Value; C094.FieldByName('SLTA').Value := T000.FieldByName('T$SLTA').Value; C094.FieldByName('SLTB').Value := T000.FieldByName('T$SLTB').Value; C094.FieldByName('SLTC').Value := T000.FieldByName('T$SLTC').Value; C094.FieldByName('SLTD').Value := T000.FieldByName('T$SLTD').Value; C094.FieldByName('SLTE').Value := T000.FieldByName('T$SLTE').Value; C094.FieldByName('SLBA').Value := T000.FieldByName('T$SLBA').Value; C094.FieldByName('SLBB').Value := T000.FieldByName('T$SLBB').Value; C094.FieldByName('SLBC').Value := T000.FieldByName('T$SLBC').Value; C094.FieldByName('SLBD').Value := T000.FieldByName('T$SLBD').Value; C094.FieldByName('SLBE').Value := T000.FieldByName('T$SLBE').Value; C094.FieldByName('TERM').Value := T000.FieldByName('T$TERM').Value; C094.FieldByName('CPAY').Value := T000.FieldByName('T$CPAY').Value; C094.POST; C094.ApplyUpdates; T000.Next ; End; End; } end; function ff_Compare_Picking: string; var fs_HCUNO, fs_CRTE, fs_MPAK, fs_CFRW, fs_File_DESADV, fs_CDEL, fs_CCTY: String; fs_CCOR, fs_BILL_CCTY, fs_NAMC, fs_NAMD, fs_NAME, fs_NAMF, fs_PSTC, fs_ALLOW_COMBINE: String; fn_COMBINE_TYPE: Integer; Receive_Keepdata: Array of String; begin if High(Receive_Keepdata) < 2 then Setlength(Receive_Keepdata, 3); if ISAME_ADD and C029.Active and C021.Active then begin if Receive_Keepdata[0] <> 'Y' then begin Receive_Keepdata[0] := 'Y'; Receive_Keepdata[1] := C021.FieldbyName('NCMP').Asstring; Receive_Keepdata[2] := C021.FieldbyName('PINO').Asstring; end else begin Cds_Open(Cds_Tmp, '0SELECT C021.HCUNO HCUNO, C021.CRTE CRTE, C021.MPAK MPAK, C021.CFRW CFRW, ' ' C021.FILE_DESADV FILE_DESADV, C021.CDEL CDEL, C021.CCTY CCTY, C021.CCOR CCOR,' ' C021.BILL_CCTY BILL_CCTY, C021.NAMC NAMC, C021.NAMD NAMD, C021.NAME NAME, ' ' C021.NAMF NAMF, C021.PSTC PSTC, ' ' UPPER(NVL(C020.ALLOW_COMBINE, ''N'')) ALLOW_COMBINE, ' ' NVL(C020.COMBINE_TYPE, 0) COMBINE_TYPE ' ' FROM CMPPS020 C020, ' ' (SELECT C021.NCMP NCMP, C021.HCUNO HCUNO, C021.CRTE CRTE, C021.MPAK MPAK, ' ' C021.CFRW CFRW, C021.FILE_DESADV FILE_DESADV, ' ' NVL(C029.CDEL, ''NVL'') CDEL, NVL(C029.CCTY, ''NVL'') CCTY, ' ' NVL(C029.CCOR, ''NVL'') CCOR, NVL(C029.BILL_CCTY, ''NVL'') BILL_CCTY, ' ' NVL(C029.NAMC, ''NVL'') NAMC, NVL(C029.NAMD, ''NVL'') NAMD, ' ' NVL(C029.NAME, ''NVL'') NAME, NVL(C029.NAMF, ''NVL'') NAMF, ' ' NVL(C029.PSTC, ''NVL'') PSTC ' ' FROM CMPPS021 C021, CMPPS029 C029 ' ' WHERE C021.NCMP = ' IntToStr(Par_NCMP) ' AND C021.PINO IN (' Receive_Keepdata[2] ', ' C021.FieldbyName('PINO').AsString ')' ' AND C029.NCMP = C021.NCMP ' ' AND C029.PINO = C021.PINO) C021 ' ' WHERE C020.NCMP ( ) = C021.NCMP ' ' AND C020.CUNO ( ) = C021.HCUNO ' ' AND C020.CCTY ( ) = C021.CCTY ' ' AND C020.CFRW ( ) = C021.CFRW'); fs_HCUNO := Cds_Tmp.FieldbyName('HCUNO').AsString; fs_CRTE := Cds_Tmp.FieldbyName('CRTE').AsString; fs_MPAK := Cds_Tmp.FieldbyName('MPAK').AsString; fs_CFRW := Cds_Tmp.FieldbyName('CFRW').AsString; fs_CDEL := Cds_Tmp.FieldbyName('CDEL').AsString; fs_CCTY := Cds_Tmp.FieldbyName('CCTY').AsString; fs_CCOR := Cds_Tmp.FieldbyName('CCOR').AsString; fs_NAMC := Cds_Tmp.FieldbyName('NAMC').AsString; fs_NAMD := Cds_Tmp.FieldbyName('NAMD').AsString; fs_NAME := Cds_Tmp.FieldbyName('NAME').AsString; fs_NAMF := Cds_Tmp.FieldbyName('NAMF').AsString; fs_PSTC := Cds_Tmp.FieldbyName('PSTC').AsString; fs_BILL_CCTY := Cds_Tmp.FieldbyName('BILL_CCTY').AsString; fs_FILE_DESADV := Cds_Tmp.FieldbyName('FILE_DESADV').AsString; fs_ALLOW_COMBINE := Cds_Tmp.FieldbyName('ALLOW_COMBINE').AsString; fn_COMBINE_TYPE := Cds_Tmp.FieldbyName('COMBINE_TYPE').AsInteger; Cds_Tmp.Next; if fs_ALLOW_COMBINE <> 'Y' then begin Result := 'These Picking List Not Allowed Combined' #13 'Please Maintain Combine Shipment Mechanism Data' #13 '(Ref. CMPPS020 Table)'; exit; end; if fs_HCUNO <> Cds_Tmp.FieldbyName('HCUNO').AsString then begin Result := 'These Picking List''s Customer Must be Same.'; exit; end; if fs_CRTE <> Cds_Tmp.FieldbyName('CRTE').AsString then begin Result := 'These Picking List''s Ship Way Must be same.'; exit; end; if fs_MPAK <> Cds_Tmp.FieldbyName('MPAK').AsString then begin Result := 'These Picking List''s Packing Method Must be Same.'; exit; end; if fs_CFRW <> Cds_Tmp.FieldbyName('CFRW').AsString then begin Result := 'These Picking List''s Forwarder Agent Must be Same.'; exit; end; if fs_FILE_DESADV <> Cds_Tmp.FieldbyName('FILE_DESADV').AsString then begin Result := 'These Picking List''s had Generated EDI DesAdv.'; exit; end; if fn_COMBINE_TYPE <> Cds_Tmp.FieldbyName('COMBINE_TYPE').AsInteger then begin Result := 'These Picking List''s [COMBINE_TYPE] Must be Same' #13 'Please Maintain Combine Shipment Mechanism Data' #13 '(Ref. CMPPS020 Table)'; exit; end; case fn_COMBINE_TYPE of 1: begin // Combine by Address if (fs_NAMC <> Cds_Tmp.FieldbyName('NAMC').AsString) or (fs_NAMD <> Cds_Tmp.FieldbyName('NAMD').AsString) or
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-07-17 01:01:48 IP:203.204.xxx.xxx 未訂閱
gmi711  你好     是否可以將你的程式壓縮後放到[會員求助程式檔案上傳區],這樣大家比較好研究程式內容,不然說實在的,光貼程式碼而且沒有縮格又沒有關鍵字highlight的效果,看起來眼睛真的很累很酸...    PS:在本站發表文章中的程式碼如何達到縮排對齊效果?  http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326    _______________________________________ 深藍的魚,祝您好運..........連.連
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-07-17 05:59:19 IP:61.30.xxx.xxx 未訂閱
Chance36 你好 原始檔上載路徑如下: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53375 謝謝
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-07-18 22:53:09 IP:203.204.xxx.xxx 未訂閱
gmi711  你好
在Receive_Picking_Data 程序中,竟看到一行指令如下(標示紅色者)    var
  cdsCMS, Cds_CTmp, Cds_Tmp, Cds_CSav, Cds_TTmp: TQuery; // 在公用區段宣告
....
Procedure TFrmReceivePicking_1.Receive_Picking_Data;
...
Begin
  ....
  T012 := Create_Cds('TRITON', nil);
  T000 := Create_Cds('TRITON', nil);
  cdsCMS   := Create_Cds('CMS', nil);
  CDS_CTmp := Create_Cds('CMS', nil);
  CDS_Tmp  := Create_Cds('CMS', nil);  // 卻在程序內建立
  ......
  finally
    if DBCMS.Connected = True then DBCMS.Connected := False;
    Application.Terminate;  // 這裏怎麼會有這行呢?中止程式執行
    .......
    FreeAndNil(T000);
    FreeAndNil(T012);
    FreeAndNil(Cds_CTmp);
    FreeAndNil(Cds_Tmp);
    FreeAndNil(Cds_CSav); // 在程序內釋放
    ..........
  End;
  Next_Process;
End;
1.程序內竟有Application.Terminate;這行指令,直覺上它好像不應該在這個位罝,試試把它拿掉看看,結果如何? 2.如上綠色部份,TQuery宣告在公用區段,郤在程序內建立及釋放,只要程式正確執行倒還沒什大問題,只是覺得有點跨越權限的味道。 3.Receive_Picking_Data 中宣告的幾個TQuery應該可以拿到公用區段(或Form的公用區段)去,然後在Form.Create建立,在Form.OnDestroy釋放,省得重複的建立釋放,對於程式的效率應該會有幫助。 _______________________________________ 深藍的魚,祝您好運..........連.連
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-07-23 06:58:03 IP:200.76.xxx.xxx 未訂閱
Chance36 版大   以下的連結是修正後的原始碼,http://delphi.ktop.com.tw/topic.php?TOPIC_ID=53620 在採用您的三點建議如下:    1.程序內竟有Application.Terminate;這行指令,直覺上它好像不應該在這個位罝,試試把它拿掉看看,結果如何?    修正後:將 Application.Terminate 給拿掉 2.如上綠色部份,TQuery宣告在公用區段,郤在程序內建立及釋放,只要程式正確執行倒還沒什大問題,只是覺得有點跨越權限的味道。 修正後:將 TQuery 全數都放到公用區段 3.Receive_Picking_Data 中宣告的幾個TQuery應該可以拿到公用區段(或Form的公用區段)去,然後在Form.Create建立,在Form.OnDestroy釋放,省得重複的建立釋放,對於程式的效率應該會有幫助。 修正後:將 TQuery 全數都放到公用區段,用利用 Form.Create 及 Form.OnDestroy 來釋放 執行結果:原先執行的結果,很準時的會在執行 2 個半小時之後自動關閉;在Timer1 部份在開始執行時將狀態設為 False,等時間到時再將其設為 True現在可以延常為 3 個小時,但是仍舊會自動關閉程式。 持續測試當中...
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-07-24 05:47:54 IP:203.204.xxx.xxx 未訂閱
gmi711 你好     發現一個很大的可能性 1.FormActive 中 呼叫 Receive_Picking_Data  2. Receive_Picking_Data 程序中,不管中間過程如何,最後會呼叫到Next_Process  3. Next_Process 程序中最後又會呼叫到 Receive_Picking_Data 如此Receive_Picking_Data -> Next_Process ->Receive_Picking_Data -> Next_Process ->Receive_Picking_Data -> Next_Process ->.......哇無限層的呼叫下去那有不掛點的?     因此之故,你必須找個程序為主,建立一個迴圈,並在迴圈內呼叫另一個程序,而另一個程序則不可再呼叫這個程序;或另行建立一procedure ,在其中形成迴圈,並於迴圈中分別呼叫Receive_Picking_Data 、Next_Process 兩個程序,或.....總之就是不可形成循環的呼叫的狀況就對啦!另外要注意到,這支程式要如何關閉結束啊!好像沒看到結束的相關程式碼?    _______________________________________ 深藍的魚,祝您好運..........連.連 發表人 - chance36 於 2004/07/24 05:56:30
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-07-24 05:50:18 IP:203.204.xxx.xxx 未訂閱
不小心按到回覆 發表人 - chance36 於 2004/07/24 05:58:03
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-07-24 06:30:29 IP:61.30.xxx.xxx 未訂閱
Chance36 版大您好 這支程式最主要就是打算一開始執行之後, 就無止盡的跑下去,不管網路斷線或是資料有誤, 始終都能夠保持程式是在執行的情況,這也是我設成迴圈一直執行的原因, 所以開啟之後就沒有機會給它關掉,除非強制關閉 Process 才會結束離開 小弟我會再照著你的建議再測試看看 謝謝啦
gmi711
一般會員


發表:15
回覆:12
積分:5
註冊:2003-09-02

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-07-27 04:25:05 IP:61.30.xxx.xxx 未訂閱
感謝 Chance36 版大 上周六依照您的建議經過小部份的修改, 將 Receivepicking & Nex_Process 都改由 procedure 來控制 而不用無窮的迴圈來循環執行這段程式 在連續測試了 44 小時,已經不會每 2.5 小時就自動關閉程式了 仍然會持續進行測試, 非常感謝您的幫助,謝謝
系統時間:2024-10-07 11:31:56
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!