有關 Delphi 程式執行時候,怎麼只有二個小時而已 ?? |
尚未結案
|
gmi711
一般會員 發表:15 回覆:12 積分:5 註冊:2003-09-02 發送簡訊給我 |
|
gmi711
一般會員 發表:15 回覆:12 積分:5 註冊:2003-09-02 發送簡訊給我 |
|
gmi711
一般會員 發表:15 回覆:12 積分:5 註冊:2003-09-02 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
gmi711
一般會員 發表:15 回覆:12 積分:5 註冊:2003-09-02 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
gmi711 你好 是否可以將你的程式壓縮後放到[會員求助程式檔案上傳區],這樣大家比較好研究程式內容,不然說實在的,光貼程式碼而且沒有縮格又沒有關鍵字highlight的效果,看起來眼睛真的很累很酸... PS:在本站發表文章中的程式碼如何達到縮排對齊效果?
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326 _______________________________________
深藍的魚,祝您好運..........連.連
|
gmi711
一般會員 發表:15 回覆:12 積分:5 註冊:2003-09-02 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
|
gmi711
一般會員 發表:15 回覆:12 積分:5 註冊:2003-09-02 發送簡訊給我 |
|
gmi711
一般會員 發表:15 回覆:12 積分:5 註冊:2003-09-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |