Hallo und guten Tag!
Mein Problem ist der syntaktische Aufbau einer SQL-Query, die eine in meinem Programm angelegte Variable übernehmen, und deren Inhalt, per Update-Anweisung, in ein Dateifeld schreiben soll.
Zielsetzung:
Die Variable SiBu wird als Programm-Variable aus einem normalen Edit-Feld im Programm-ablauf befüllt. Der Eintrag wird dann in einer String-Variablen S abgelegt. An die Parameter-Variable :SiBu wird der Inhalt von S mit einem konstanten String ergänzt, und übergeben.
Danach soll per Query1.SQL.Text:= Update-Query………..das Feld eines DatenbankTable mit dem Inhalt des Parameters überschrieben werden. Der Parameter-String beinhaltet Pfadangaben, also auch mehrfach das Zeichen \ (Backslash).
Bisherige Versuche:
1. MyQuery1.Close;
MyQuery1.Params.CreateParam(ftString,':SiBu',ptOut put);
MyQuery1.ParamByName(':SiBu').AsString:= S + 'Sicherung Buchung\';
In den überwachten Ausdrücken werden die Daten in den Parameter :SiBu übernommen
MyQuery1.SQL.Text:= 'Update hb_sql.Pfade set SichernBuchenMySQL := :SiBu';
Aber auch
MyQuery1.SQL.Text:= 'Update hb_sql.Pfade set SichernBuchenMySQL = :SiBu';
MyQuery1.Execute;
Ergebnis
Das Datenfeld wird in seinem Eintrag auf NULL gesetzt.
Immerhin keine Fehlermeldung. Aber trotzdem falsch.
Dann habe ich im Forum-Beitrag Syntaxproblem bei SQL.Add eine Problemlösung gesehen, die ich übernehmen wollte.
2. MyQuery1.Close;
MyQuery1.SQL.Text:=
'MyQuery1.Insert into hb_sql.Pfade (SichernBuchenMySQL) values (:SiBu);' +
'MyQuery1.ParamByName(":SiBu").datatype:=ftString; ' +
'MyQuery1.ParamByName(":SiBu"):= S + "Sicherung Buchung\";';
MyQuery1.Execute;
Ergebnis: Siehe Aufnahme1
Danach habe ich eine weitere Syntaxänderung vorgenommen.
3. MyQuery1.Params.CreateParam(ftString,'SiBu',ptOutp ut);
MyQuery1.ParamByName('SiBu').AsString:= S + 'Sicherung Buchung\';
MyQuery1.SQL.Text:= '"Update hb_sql.Pfade set SichernBuchenMySQL =''''+SiBu"';
MyQuery1.Execute;
Ergebnis: Siehe Aufnahme 2
Alles, was ich im Thema bisher im Netz gelesen und an Büchern gewälzt habe, ging immer von Datenbankverbindungen mit Table´n aus, oder vom SQL- Befehlszeilen-Editor.
Das mein Befehls-Konstrukt nicht so ganz falsch sein kann, zeigte mir der nachfolgende Befehlstext, der einwandfrei ausgeführt wird. Allerdings mit einer SQL-Systemvariablen.
MyQuery1.Close;
//Nächste Anweisung überschreibt im Buchungen-Tabel DaJar mit aktuellem Jahr
MyQuery1.SQL.Text:= 'Update hb_sql.Buchung set DaJar = YEAR(CURDATE())';
MyQuery1.Execute;
Ergebnis: Alles korrekt.
Wer kann mir in diesem Thema aufs Pferd helfen? Ich danke dafür!
Mein Problem ist der syntaktische Aufbau einer SQL-Query, die eine in meinem Programm angelegte Variable übernehmen, und deren Inhalt, per Update-Anweisung, in ein Dateifeld schreiben soll.
Zielsetzung:
Die Variable SiBu wird als Programm-Variable aus einem normalen Edit-Feld im Programm-ablauf befüllt. Der Eintrag wird dann in einer String-Variablen S abgelegt. An die Parameter-Variable :SiBu wird der Inhalt von S mit einem konstanten String ergänzt, und übergeben.
Danach soll per Query1.SQL.Text:= Update-Query………..das Feld eines DatenbankTable mit dem Inhalt des Parameters überschrieben werden. Der Parameter-String beinhaltet Pfadangaben, also auch mehrfach das Zeichen \ (Backslash).
Bisherige Versuche:
1. MyQuery1.Close;
MyQuery1.Params.CreateParam(ftString,':SiBu',ptOut put);
MyQuery1.ParamByName(':SiBu').AsString:= S + 'Sicherung Buchung\';
In den überwachten Ausdrücken werden die Daten in den Parameter :SiBu übernommen
MyQuery1.SQL.Text:= 'Update hb_sql.Pfade set SichernBuchenMySQL := :SiBu';
Aber auch
MyQuery1.SQL.Text:= 'Update hb_sql.Pfade set SichernBuchenMySQL = :SiBu';
MyQuery1.Execute;
Ergebnis
Das Datenfeld wird in seinem Eintrag auf NULL gesetzt.
Immerhin keine Fehlermeldung. Aber trotzdem falsch.
Dann habe ich im Forum-Beitrag Syntaxproblem bei SQL.Add eine Problemlösung gesehen, die ich übernehmen wollte.
2. MyQuery1.Close;
MyQuery1.SQL.Text:=
'MyQuery1.Insert into hb_sql.Pfade (SichernBuchenMySQL) values (:SiBu);' +
'MyQuery1.ParamByName(":SiBu").datatype:=ftString; ' +
'MyQuery1.ParamByName(":SiBu"):= S + "Sicherung Buchung\";';
MyQuery1.Execute;
Ergebnis: Siehe Aufnahme1
Danach habe ich eine weitere Syntaxänderung vorgenommen.
3. MyQuery1.Params.CreateParam(ftString,'SiBu',ptOutp ut);
MyQuery1.ParamByName('SiBu').AsString:= S + 'Sicherung Buchung\';
MyQuery1.SQL.Text:= '"Update hb_sql.Pfade set SichernBuchenMySQL =''''+SiBu"';
MyQuery1.Execute;
Ergebnis: Siehe Aufnahme 2
Alles, was ich im Thema bisher im Netz gelesen und an Büchern gewälzt habe, ging immer von Datenbankverbindungen mit Table´n aus, oder vom SQL- Befehlszeilen-Editor.
Das mein Befehls-Konstrukt nicht so ganz falsch sein kann, zeigte mir der nachfolgende Befehlstext, der einwandfrei ausgeführt wird. Allerdings mit einer SQL-Systemvariablen.
MyQuery1.Close;
//Nächste Anweisung überschreibt im Buchungen-Tabel DaJar mit aktuellem Jahr
MyQuery1.SQL.Text:= 'Update hb_sql.Buchung set DaJar = YEAR(CURDATE())';
MyQuery1.Execute;
Ergebnis: Alles korrekt.
Wer kann mir in diesem Thema aufs Pferd helfen? Ich danke dafür!
Comment