Das mag schon möglich sein, aber ein Flaschenhals ist definitiv das Update mit dem gezeigten Verfahren.
Dafür sollte man ein prepared Statement mit einem Parameter nehmen.
Das geht erheblich schneller.
Eine
Query erstellen mit folgendem
SQL-Text
Code:
UPDATE MeineTabelle SET name = :CryptName WHERE MeineTabelle.ID = :ID
Die DataSource der Abfrage-
Query als MasterSource der Update-
Query festlegen.
Delphi-Quellcode:
UpdateQuery.Prepare;
try
while not AbfrageQuery.EOF do
begin
UpdateQuery.ParamByName( 'CryptName' ) := Crypt( AbfrageQuery.FieldByName( 'name' ).AsString );
UpdateQuery.ExecSQL;
AbfrageQuery.Next;
end;
finally
UpdateQuery.Unprepare;
end;
Ob der Aufruf genau so funktioniert hängt von den verwendeten Komponenten und
DB ab.
Hallo,
leider funktioniert dies nicht.
Im Prinzip möchte ich ein Feld, welches verschlüsselt ist entschlüsseln.
Bei vorgeschlagener Vorgenhensweise erhalte ich die
Exception, dass das Feld name nicht gefunden wurde.
Auch das Ersetzen durch
sqlText := 'Update Tabelle set name ='+ Crypt(Tabelle.FieildbyName('name').value, "WEDRFXEFCRTT"))+ 'where name = name;';
hilt nicht
Äh, bitte Transferleistung aktivieren ... DU kennst die korrekte Bezeichnung deiner Felder, WIR nicht!
Allerdings:
Code:
UPDATE
...
WHERE
name = name
ist irgendwie sinnentleert, kann man dann auch gleich weglassen