Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Daten in Tabelle korrigieren (https://www.delphipraxis.net/172784-daten-tabelle-korrigieren.html)

Ykcim 23. Jan 2013 20:50

AW: Daten in Tabelle korrigieren
 
Hallo,

vielen Dank für die schnelle Antwort!!!

Hier werden Daten angezeigt!
Delphi-Quellcode:
 SELECT WAAUNR, WAAUPO, OAAGNR
   FROM as400temp as A
  WHERE OATLKZ = ''
    AND OAAGNR <
        ( SELECT Max( OAAGNR )
            FROM as400temp
           WHERE WAAUNR = A.WAAUNR
             AND WAAUPO = A.WAAUPO
             AND OATLKZ = '9' )
    AND OAMANR not REGEXP 'HD|FA|KO';
Hier kommt die Fehlermeldung: Table 'nedcom.tmptab' doesn't exist
Delphi-Quellcode:
CREATE TEMPORARY TABLE tmpTab
 SELECT WAAUNR, WAAUPO, OAAGNR
   FROM as400temp as A
  WHERE OATLKZ = ''
    AND OAAGNR <
        ( SELECT Max( OAAGNR )
            FROM as400temp
           WHERE WAAUNR = A.WAAUNR
             AND WAAUPO = A.WAAUPO
             AND OATLKZ = '9' )
    AND OAMANR not REGEXP 'HD|FA|KO';

 SELECT *
   FROM tmpTab;
Hier werden die gleichen Daten wie oben angezeigt
Delphi-Quellcode:
SELECT WAAUNR, WAAUPO, OAAGNR
   FROM as400temp as A
  WHERE IFNULL( OATLKZ, '' ) = ''
    AND OAAGNR <
        ( SELECT Max( OAAGNR )
            FROM as400temp
           WHERE WAAUNR = A.WAAUNR
             AND WAAUPO = A.WAAUPO
             AND OATLKZ = '9' )
    AND OAMANR not REGEXP 'HD|FA|KO';
Gruß
Patrick

Sir Rufo 23. Jan 2013 21:05

AW: Daten in Tabelle korrigieren
 
Führst du etwa jedes Statement einzeln aus?

Ykcim 23. Jan 2013 21:21

AW: Daten in Tabelle korrigieren
 
Ich habe die ANweisungen erst zusammen ausgeführt, dann aber auch einzeln versucht...

Kann es sein, dass ich die Drop-Anweisung einzeln ausführen muss?

Ohne die habe ich es jetzt irgendwie ans Laufen bekommen, habe aber keine Ahnung warum.

Ich verwende den QueryBrowser. Kann es auch damit zusammenhängen?

Ich bin etwas verwirrt...

Ykcim 23. Jan 2013 21:27

AW: Daten in Tabelle korrigieren
 
Also, wenn ich die Anweisungen jetzt einzeln durchgehe, scheinen sie zu laufen, aber zusammen geht im Query-Browser nicht. ABer vielleicht hat mein Programm damit keine Probleme. Ich bin zurzeit noch nicht an dem Punkt, dass ich mein Programm testen kann. Ich programmiere also gerade blind. Ich muss noch zwei große Proceduren fertig bekommen, dann kann ich das Programm testen...

Ich werde gleich mal eben ein kleines eigenes Programm machen...

Melde mich gleich wieder.

Danke
Patrick

Ykcim 23. Jan 2013 21:46

AW: Daten in Tabelle korrigieren
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz