![]() |
Datenbank: ADS • Version: 9 • Zugriff über: Delphi
Update ausführen
Hallo, kurz vor Feierabend häng ich aufm Schlauch...
erstmal Code: .......
Delphi-Quellcode:
.. habe das ganze zuvor mit qAkteanhänge.SQL.Text := 'Update .... probiert, da meinte er ich soll bei solchen Statements execSQL verwenden. Soweit so gut, also verwende ich nun execSQL aber so meint er, dass der linken seite nichts zugewiesen werden kann wenn ich den : weglasse meint er := erwartet aber = gefunden?!?
procedure TForm1.Button1Click(Sender: TObject);
var iDatensätze: Integer; sNeueDatei: String; sAlteDatei: String; begin qAkteAnhänge.SQL.Text := 'SELECT ID_PersonalAkte, Dateiname, DateinameSave FROM PersonalAkte_Anhaenge'; qAkteAnhänge.Open; qAkteanhänge.First; for iDatensätze := 0 to qAkteanhänge.RecordCount - 1 do begin sNeueDatei := qAkteanhänge.FieldByName('ID_PersonalAkte').AsString + '_' + qAkteanhänge.FieldByName('Dateiname').AsString; sAlteDatei := qAkteanhänge.FieldByName('DateinameSave').AsString; //RenameFile(sAlteDatei, sNeueDatei); qAkteanhänge.ExecSQL := 'UPDATE Personalakte_Anhaenge SET DateinameSave=' + QuotedStr(sNeueDatei) + ' WHERE DateinameSave= ' + QuotedStr(sAlteDatei); // in dieser Line hab ich Probleme qAkteanhänge.Open; qAkteanhänge.Close; qAkteAnhänge.Next; end; end; Bin ausgepowert :pale: würde mich über Hilfe freuen, damit ich dass heute Abend noch fertig bekomme. |
AW: Update ausführen
Du brauchst eine 2. Query, sonst kannst Du ja nicht durch die Datensätze iterieren. Dieser weist Du dann ein parametrisiertes Statement zu (Query.SQL.Text := ), belegst die Parameter anhand der gefundenen Daten und führst es aus (Query.ExecSQL).
|
AW: Update ausführen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var iDatensätze: Integer; sNeueDatei: String; sAlteDatei: String; begin qAkteAnhänge.SQL.Text := 'SELECT ID_PersonalAkte, Dateiname, DateinameSave FROM PersonalAkte_Anhaenge'; qAkteAnhänge.Open; while not qAkteanhänge.Eof do begin sNeueDatei := qAkteanhänge.FieldByName('ID_PersonalAkte').AsString + '_' + qAkteanhänge.FieldByName('Dateiname').AsString; //sAlteDatei := qAkteanhänge.FieldByName('DateinameSave').AsString; //RenameFile(sAlteDatei, sNeueDatei); qAkteanhänge.Edit; qAkteanhänge['DateinameSave'] := sNeueDatei; qAkteanhänge.Post; qAkteAnhänge.Next; end; end; |
AW: Update ausführen
Jo, stimmt, ist in diesem Fall ja viel einfacher :oops:
[edit] Oder noch einfacher: die Abfrage ganz weglassen und alles im Update-Statement erledigen. Das dürfte auch der performanteste Weg sein. [/edit] |
AW: Update ausführen
[edit] Oder noch einfacher: die Abfrage ganz weglassen und alles im Update-Statement erledigen. Das dürfte auch der performanteste Weg sein. [/edit]
dazu muss ich ja eine neue Query hinzufügen und die bau ich dann einfach in meine Schleife ein. So sollte es gehn, werd ich gleich mal ausprobieren, vorrausgesetzt die VM startet mal :) |
AW: Update ausführen
hmn, irgendwas mach ich falsch....
Delphi-Quellcode:
der SQL stimmt doch, er soll für jeden Datensatz den alten Dateinamen durch den neuen ersetzen, aber das tut er nicht, in der DB stehn immer noch die selben werte....
begin
qAkteAnhänge.First; for iDatensätze := 0 to qAkteanhänge.RecordCount - 1 do begin sNeueDatei := qAkteAnhänge.FieldByName('ID_PersonalAkte').AsString + '_' + qAkteanhänge.FieldByName('Dateiname').AsString; sAlteDatei := qAkteAnhänge.FieldByName('DateinameSave').AsString; RenameFile(sPfadPersonal+sAlteDatei, sPfadPersonal+sNeueDatei); qNewAuftrag.SQL.Text := 'UPDATE Auftragakte_Anhaenge SET DateinameSave=' + QuotedStr(sNeueDatei) + 'WHERE DateinameSave=' +QuotedStr(sAlteDatei); qNewAuftrag.ExecSQL; qAkteAnhänge.Next; end; end; |
AW: Update ausführen
kommando zurück!!!!
hab im SQL.Text die falsche Tabelle angegeben. ^^ :) mal schaun, ich teste jetzte mal und wenns noch irgendwo Probleme geben sollte, melde ich mich. |
AW: Update ausführen
Was ich meinte:
SQL-Code:
Wieso clientseitig erledigen, was auch gleich auf dem Server geschehen könnte?
UPDATE
PersonalAkte_Anhaenge SET DateinameSave = CONCAT(ID_PersonalAkte, '_', Dateiname) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz