DS_Feld einer Query bei allen selektierten DS ändern

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.

DS_Feld einer Query bei allen selektierten DS ändern

Beitragvon Aliobaba » 11. Feb 2017, 08:16 DS_Feld einer Query bei allen selektierten DS ändern

Hallo

Wenn ich nach dem Ausführen einer "komplizierten" Query (Select ... Join!) ein bestimmtes Feld aller gefundenen Datensätze mit einem neuen Feldinhalt füllen möchte, dann habe ich dies bisher immer so gemacht, dass ich Datensatz für Datensatz durchgegangen bin, um das gewünschte Feld mit dem gewünschten neuen Inhalt zu füllen:

Code: Alles auswählen
Form1.Meine_komplizierte_Query.first.
while not Form1.Meine_komplizierte_Query.EOF do
              begin
                Form1.Meine_komplizierte_Query.Edit;
                Form1.DB_Mein_zu_aenderndes_Feld.text := Mein_neuer_Text.text ;
                Form1.Meine_komplizierte_Query.Post;
                Form1.Meine_komplizierte_Query.Next;
              end;

Das funktioniert recht gut, ist aber möglicherweise nicht besonders elegant.
Gibt es eine Möglichkeit, mit einem einzigen Befehl das gewünschte Feld aller gefundenen Datensätze "in einem Rutsch" mit dem neuen gewünschten Wert zu füllen, ohne jeden Datensatz einzeln aufrufen zu müssen?
Das erneute Aufrufen meiner "komplizierten Query" innerhalb eines SQL-Update-Befehls ist schwierig, da der ursprüngliche Select-Befehl schon "länger zurück liegt" und außerdem sich die Variablen geändert haben, mit denen der Select-Befehl gearbeitet hat.

Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Aliobaba
 
Beiträge: 369
Registriert: 1. Mai 2012, 08:11

Beitragvon Soner » 11. Feb 2017, 15:25 Re: DS_Feld einer Query bei allen selektierten DS ändern

Du kannst die SQL-Bedingung die zum Auswahl der Datensätze geführt hat in einer String-Variable speichern und bei Update-SQL verwenden.
Soner
 
Beiträge: 411
Registriert: 26. Sep 2012, 23:07
Wohnort: Hamburg
OS, Lazarus, FPC: Win7Pro-32Bit, Immer letzte Lazarus Release mit SVN-Fixes | 
CPU-Target: 32Bit
Nach oben

Beitragvon Aliobaba » 11. Feb 2017, 16:04 Re: DS_Feld einer Query bei allen selektierten DS ändern

Ah so! Danke, Soner!

Allerdings ist der "ehemaile" "Select-Befehl" kein einfacher String, sondern setzt sich aus "Konstrukten" zusammen wie
z.B.:
Params.ParamValues['Zahl1'] := KrFKRubrikID;
Params.ParamValues['Zahl2'] := KTextID;
Ich fürchte, das wird mir zu kompliziert, so dass ich weiter dann mal lieber die "Query-Liste" mit "Query.next" "durchblättere" und Datensatz für Datensatz bearbeite:
Irgendwie nicht schön - ein ordentlicher SQL-Befehl wäre mir lieber - , aber es funktioniert.

Nochmals Vielen Dank!
Aliobaba
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )
Aliobaba
 
Beiträge: 369
Registriert: 1. Mai 2012, 08:11

• Themenende •

Zurück zu Datenbanken



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste

porpoises-institution
accuracy-worried