Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL Query sequential bearbeiten (https://www.delphipraxis.net/21276-sql-query-sequential-bearbeiten.html)

Alliya 30. Apr 2004 08:57


SQL Query sequential bearbeiten
 
Also habe folgendes Problem.
Ich arbeite mit Delphi 7 Pro und mit MySQLDAC.

Nach dem Import einer Tabelle in MySQL werden die Sonderzeichen falsch dargestellt.
Jetzt will ich sie wieder durch die richtigen Sonderzeichen austauschen.

So sieht mein code aus:

Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer;
begin
  with ProgressBar1 do
  begin
    Min := 0;
    Max := MySQLquery1.RecordCount;
    MySQLquery1.First;
    for i := Min to Max do
    begin
      MySQLQuery1.Edit;
      MySQLQuery1Name.Value := StringReplace(MySQLQuery1Name.Value, '³' , 'ü',[rfIgnoreCase]);
      Position := i;
      MySQLquery1.Next;
    end;
  end;
end;
Wenn ich das bearbeiten des Datensatzes weg lasse, geht er die ganzen Datensätze der Query durch.
Sobald ich einen bearbeite, scheint er immer wieder beim ersten anzufangen, so komm ich nie weiter als bis zum zweiten Datensatz.

Weiß jemand Rat?

Gollum 30. Apr 2004 09:02

Re: SQL Query sequential bearbeiten
 
Hallo,

Delphi-Quellcode:
    begin
      MySQLQuery1.Edit;
      MySQLQuery1Name.Value := StringReplace(MySQLQuery1Name.Value, '³' , 'ü',[rfIgnoreCase]);
      MySQLQuery1.Post; // <-- Änderung in DB schreiben
      Position := i;
      MySQLquery1.Next;
    end;
Was ich aber nicht verstehe ist, dass Du die Änderungen nicht mit einer Query machst. Etwa in der Form:
Code:
UPDATE Tabelle SET Feld=NeuerEintrag
Durch die Anweisung werden alle Felder auf einmal aktualisiert und Du sparst Dir die Schleife.

Robert_G 30. Apr 2004 09:04

Re: SQL Query sequential bearbeiten
 
Herzlich willkommen hier in der Delphi-PRAXIS :hello:

Das ist eigentlich ganz einfach...
SQL:
SQL-Code:
Update DeineTabelle t
Set   t.DeinFeld = Replace(t.DeinFeld , :i_SearchStr, :i_ReplStr)
in Delphi:
Delphi-Quellcode:
With Query Do
Begin
  SQL.Text :=
    'Update DeineTabelle t' + #10 +
    'Set   t.DeinFeld = Replace(t.DeinFeld , :i_SearchStr, :i_ReplStr)';
  // Parameterzuweisung
  With Parameters Do
    ParamByName('i_SearchStr').Value := ABC;
    ParamByName('i_ReplStr').Value  := XYZ;
  End;
  // Ausführen
  ExecSQL;
End;
Eventuell musst du noch ein Query.Prepare o.ä. ausführen, bevor du die Parameterwerte übergeben kannst.

Alliya 30. Apr 2004 09:30

Re: SQL Query sequential bearbeiten
 
Ahh, wirklich ganz einfach - wenn man gesagt bekommt wies geht :D
Danke ihr beiden :)
Hab Roberts SQL Lösung genommen und hat auch geklappt. Wußte nicht das man mit SQL auch einzelne Zeichen in einem String verändern kann, und hatte auch nix gefunden. Deshalb hatte ich zu der Delphi Lösung gegriffen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:27 Uhr.

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