![]() |
Datenbank: SQL • Version: 2005 • Zugriff über: ADO
temporäres Problem mit dem Update auf Datensätze
Hallo zusammen,
ich schreibe Daten aus einer Text-Datei den Inhalt in eine SQL-DB. Dies funtioniert zum Anlegen enes Datensatzes wie folgt:
Delphi-Quellcode:
und folgend um die Daten zu kompletieren
if m = 0 then begin
adoquery1.sql.Clear; adoquery1.sql.text := 'Insert into auftraege ('+Temps1+') values ('''+temps2+''')';; adoquery1.ExecSQL; adoquery1.sql.clear; adoquery1.SQL.text := 'select max (ID) as MaxID from auftraege'; adoquery1.Open; timestamp := adoquery1.FindField('MaxID').AsString;
Delphi-Quellcode:
Jetzt habe ich das Problem wenn mehrere User unterschiedliche Daten einlesen, dass es beim Update zeitweise immer wieder zu Problemen kommt, und er in eine Exception läuft.
if m <> 0 then begin
adoquery1.sql.Clear; adoquery1.sql.text := 'update auftraege set '+Temps1+'='''+temps2+''' Where ID= '''+timestamp+''' ';; adoquery1.ExecSQL; inc(k); result := 0; Es wird aber von den unterschiedlichen Usern nie auf den selbigen Datensatz zugegriffen. Jemand eine Idee woran das liegen könnte? Danke. |
Re: temporäres Problem mit dem Update auf Datensätze
Ich würde SQL-Parameter verwenden:
Delphi-Quellcode:
adoquery1.sql.text := 'Insert into auftraege (:auft) values ( :wert);';
adoquery1.Parameter.ParamByName('auft').Value := temp1; adoquery1.Parameter.ParamByName('wert').Value := temp2; adoquery1.ExecSQL; |
Re: temporäres Problem mit dem Update auf Datensätze
Ok, habe ich bisher noch nicht genutz, und falle Prompt damit auf die Nase.
Auftraege kein gültiger Objektname
Delphi-Quellcode:
Was stimmt an der Syntax nicht?
adoquery1.sql.text := 'Insert into auftraege (:auft) values (:wert);';
adoquery1.Parameters.ParamByName('auft').Value := temps1; adoquery1.Parameters.ParamByName('wert').Value := temps2; adoquery1.ExecSQL; |
Re: temporäres Problem mit dem Update auf Datensätze
AFAIK gehen Parameter nur mit Feldwerten, nicht mit Feldbezeichnern. So könnte es aber gehen (ungetestet):
Delphi-Quellcode:
adoquery1.sql.text := Format('Insert into auftraege (%s) values (:wert);',[temps1]);
adoquery1.Parameters.ParamByName('wert').Value := temps2; adoquery1.ExecSQL; |
Re: temporäres Problem mit dem Update auf Datensätze
so funzt es:
Delphi-Quellcode:
adoquery1.sql.add ('Insert into auftraege (:auft) values (:wert);');
adoquery1.Parameters.ParamByName('auft').Value := temps1; adoquery1.Parameters.ParamByName('wert').Value := temps2; adoquery1.ExecSQL; |
Re: temporäres Problem mit dem Update auf Datensätze
Und wie funzt das mit den Parameters mit einem Update-Statement?
|
Re: temporäres Problem mit dem Update auf Datensätze
Genauso
SQL-Code:
update <tabelle> set <feld1> = :wert1, ...
|
Re: temporäres Problem mit dem Update auf Datensätze
wie ein Update Statement grundsätzlich funzt ist mir schon geläufig, aber es will mit den Parameters nicht funktionieren.
Die "(" gefällt ihm nicht.
Delphi-Quellcode:
adoquery1.sql.text := 'update auftraege set (:auft) = (:wert) Where ID= '''+timestamp+''';';
adoquery1.Parameters.ParamByName('auft').Value := temps1; adoquery1.Parameters.ParamByName('wert').Value := temps2; adoquery1.ExecSQL; |
Re: temporäres Problem mit dem Update auf Datensätze
Beim Update werden auch keine Klammern gesetzt.
|
Re: temporäres Problem mit dem Update auf Datensätze
Danke, habe es gerade bemerkt :oops:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:08 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 by Thomas Breitkreuz