📄 updbommh.pas
字号:
unit updBOMMH;
interface
uses sysUtils, dbtables, db, bde, updBase;
type
TUpdateBOMMH = class(TBaseUpdateUnit)
private
FOtherVar: variant;
function update_byBOMI09(xQrySource: TQuery): Boolean;
public
function update(xQrySource: TQuery; xAction: string;
var xMsg: variant; xOtherVar: variant; xUserData: variant): Boolean;
end;
implementation
function TUpdateBOMMH.update(xQrySource: TQuery; xAction: string;
var xMsg: variant; xOtherVar: variant; xUserData: variant): Boolean;
begin
Result := True;
self.saveVar(xAction, xOtherVar, xUserData);
FOtherVar:= xOtherVar;
try
setDBName(xQrySource.databaseName);
if (compareText(self.SourceTxnCode, 'TXNBOMI09') = 0) then
Result := update_byBOMI09(xQrySource)
else
begin
end;
finally
//VarArrayUnlock(self.Msg);
self.Query1.close;
self.Query1.UnPrepare;
end;
xMsg := self.Msg;
end;
function TUpdateBOMMH.update_byBOMI09(xQrySource: TQuery): Boolean;
var
mExist: Boolean;
mMH001,mMH002,mMH003:String;
begin
Result := True;
self.Msg[0] := 'skip';
self.Msg[1] := 'BOMMH';
with xQrySource do
begin
self.Msg[2] := FieldByName('TH001').asString+' '+FieldByName('TH002').asString+' '+
FieldByName('TH003').asString;
end;
try
if xQrySource.FieldByName('TH012').asString='Y' then
begin
if (self.Action = 'A') then
begin
with Query2 do
begin
close;
SQL.clear;
RequestLive := False;
SQL.add('select * from $$BOMMH');
SQL.add(' where MH001=:MH001 and MH005=''Y'' ');
ParamByName('MH001').asString := xQrySource.FieldByName('TH001').asString;
open;
first;
if not eof then
begin
mMH001:=FieldByName('MH001').asString;
mMH002:=FieldByName('MH002').asString;
mMH003:=FieldByName('MH003').asString;
self.NewFlag := FieldByName('FLAG').asInteger + 1;
if self.NewFlag > C_MAXFLAG then self.NewFlag := 1;
close;
SQL.clear;
RequestLive := False;
SQL.add('UPDATE $$BOMTH SET TH009=:TH009,TH010=:TH010 ');
SQL.add(' WHERE TH001=:TH001 AND TH002=:TH002 AND TH003=:TH003 AND TH004=:TH004 ');
ParamByName('TH001').asString := xQrySource.FieldByName('TH001').asString;
ParamByName('TH002').asString := xQrySource.FieldByName('TH002').asString;
ParamByName('TH003').asString := xQrySource.FieldByName('TH003').asString;
ParamByName('TH004').asString := xQrySource.FieldByName('TH004').asString;
ParamByName('TH009').asString := mMH002;
ParamByName('TH010').asString := mMH003;
TransSqlCommand(Query2);
EXECSQL;
close;
SQL.clear;
RequestLive := False;
SQL.add('UPDATE $$BOMMH SET MH005=''N'',FLAG=:FLAG ');
SQL.add(' WHERE MH001=:MH001 AND MH002=:MH002 AND MH003=:MH003 ');
ParamByName('MH001').asString := mMH001;
ParamByName('MH002').asString := mMH002;
ParamByName('MH003').asString := mMH003;
ParamByName('FLAG').asInteger := self.NewFlag;
TransSqlCommand(Query2);
EXECSQL;
end;
end;
end //絋粄
else
begin
if (xQrySource.FieldByName('TH009').asString<>'') and
(xQrySource.FieldByName('TH010').asString<>'') then
begin
with Query2 do
begin
close;
SQL.clear;
RequestLive := False;
SQL.add('select * from $$BOMMH');
SQL.add(' where MH001=:MH001 and MH002=:MH002');
SQL.add(' and MH003=:MH003 ');
ParamByName('MH001').asString := xQrySource.FieldByName('TH001').asString;
ParamByName('MH002').asString := xQrySource.FieldByName('TH009').asString;
ParamByName('MH003').asString := xQrySource.FieldByName('TH010').asString;
open;
first;
if not eof then
begin
self.NewFlag := FieldByName('FLAG').asInteger + 1;
if self.NewFlag > C_MAXFLAG then self.NewFlag := 1;
close;
SQL.clear;
RequestLive := False;
SQL.add('UPDATE $$BOMMH SET MH005=''Y'',FLAG=:FLAG ');
SQL.add(' where MH001=:MH001 and MH002=:MH002');
SQL.add(' and MH003=:MH003 ');
ParamByName('MH001').asString := xQrySource.FieldByName('TH001').asString;
ParamByName('MH002').asString := xQrySource.FieldByName('TH009').asString;
ParamByName('MH003').asString := xQrySource.FieldByName('TH010').asString;
ParamByName('FLAG').asInteger := self.NewFlag;
TransSqlCommand(Query2);
EXECSQL;
end;
end;
end;
end;
end;
with self.Query1 do
begin
close;
SQL.clear;
RequestLive := False;
SQL.add('select * from $$BOMMH');
SQL.add(' where MH001=:MH001 and MH002=:MH002');
SQL.add(' and MH003=:MH003 ');
ParamByName('MH001').asString := xQrySource.FieldByName('TH001').asString;
ParamByName('MH002').asString := xQrySource.FieldByName('TH002').asString;
ParamByName('MH003').asString := xQrySource.FieldByName('TH003').asString;
open;
first;
mExist := not eof;
if ((not mExist) and (self.Action = 'A')) then
begin
close;
SQL.clear;
RequestLive := False;
SQL.add('INSERT INTO $$BOMMH (MH001 ,MH002 ,MH003 ,MH004 ,MH005 ,MH006,MH007,MH008 ,MH009 ,MH010 , ');
SQL.add(' COMPANY ,CREATOR ,USR_GROUP ,CREATE_DATE ,FLAG ) ');
SQL.add('VALUES (:MH001 ,:MH002 ,:MH003 ,:MH004 ,:MH005 ,:MH006,:MH007,:MH008 ,:MH009 ,:MH010 , ');
SQL.add(' :COMPANY ,:CREATOR ,:USR_GROUP ,:CREATE_DATE ,1) ');
ParamByName('MH001').asString := xQrySource.FieldByName('TH001').asString;
ParamByName('MH002').asString := xQrySource.FieldByName('TH002').asString;
ParamByName('MH003').asString := xQrySource.FieldByName('TH003').asString;
ParamByName('MH004').asString := xQrySource.FieldByName('TH011').asString;
ParamByName('MH005').asString := xQrySource.FieldByName('TH012').asString;
ParamByName('MH006').asString := xQrySource.FieldByName('TH013').asString;
ParamByName('MH007').asString := xQrySource.FieldByName('TH014').asString;
ParamByName('MH008').asString := xQrySource.FieldByName('TH015').asString;
ParamByName('MH009').asString := xQrySource.FieldByName('TH016').asString;
ParamByName('MH010').asString := xQrySource.FieldByName('TH017').asString;
ParamByName('COMPANY').asString :=self.FCOMPANY;
ParamByName('CREATOR').asString :=self.FCREATOR;
ParamByName('USR_GROUP').asString :=self.FUSR_GROUP;
ParamByName('CREATE_DATE').asString :=self.FCREATE_DATE;
try
TransSqlCommand(Query1);
EXECSQL;
except
on E: EDBEngineError do
begin
if E.Errors[0].ErrorCode <> DBIERR_KEYVIOL then raise
else //糶
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -