Hallo Zusammen,
mit dieser Procedure funktioniert es:
Delphi-Quellcode:
procedure TMain.ButtonAktualisierenClick(Sender: TObject);
var AGS:
string;
I: integer;
Query: TUniQuery;
begin
Query:=Main.MySelectQuery;
//Normalerweise wird die Query der Procedure der Klasse übergeben, das habe hier nur für den Test gemacht...
//Rückmeldefehler beheben
AGS:='
';
Query.SQL.Clear;
//AGs die nicht korrigiert werden sollen holen
Query.SQL.Add('
select Wert from einstellungen ');
Query.SQL.Add('
where einstellung= :Einstellung ');
Query.ParamByName('
Einstellung').AsString:='
Rueckm.nicht.korrigieren';
Query.Open;
if not Query.Eof
then begin
AGS:=
Query.Fields.Fields[0].Value;
Query.Next;
if Query.RecordCount>1
then begin
for I:=1
to Query.RecordCount -1
do begin
AGS:=AGS+'
|'+
Query.Fields.Fields[0].Value;
Query.Next;
end;
end;
end;
Query.SQL.Clear;
Query.SQL.Add('
CREATE TEMPORARY TABLE tmpTab ');
Query.SQL.Add('
SELECT WAAUNR, WAAUPO, OAAGNR ');
Query.SQL.Add('
FROM as400temp as A ');
Query.SQL.Add('
WHERE OATLKZ = ''
''
');
Query.SQL.Add('
AND OAAGNR < ');
Query.SQL.Add('
( SELECT Max( OAAGNR ) ');
Query.SQL.Add('
FROM as400temp ');
Query.SQL.Add('
WHERE WAAUNR = A.WAAUNR ');
Query.SQL.Add('
AND WAAUPO = A.WAAUPO ');
Query.SQL.Add('
AND OATLKZ = ''
9''
) ');
Query.SQL.Add('
AND OAMANR not REGEXP ''
'+AGS+'
''
; ');
Query.SQL.Add('
UPDATE as400temp ');
Query.SQL.Add('
SET OATLKZ = ''
9''
' );
Query.SQL.Add('
WHERE ( WAAUNR, WAAUPO, OAAGNR ) IN ( SELECT WAAUNR, WAAUPO, OAAGNR ');
Query.SQL.Add('
FROM tmpTab ); ');
Query.SQL.Add('
DROP TABLE tmpTab; ');
Query.Execute;
end;
Anregungen und Verbesserungen werden gerne angenommen!
Vielen Dank für die Unterstützung!!!
Gruß
Patrick