![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos
ParamsByName liefert ? zurück
Moin :)
Habe ein kleines Problem mit einem INSERT....
Delphi-Quellcode:
Der über schowmessage angezeigte Text für den Parameter :ID enthält den richtigen Wert...
begin
with Datamodule1 do begin //Kundendetails füllen Zquery.SQL.clear; Zquery.SQL.Add('SELECT MAX (ID) MAXVAR FROM KUNDEN_D'); Zquery.Open; Maxvar := (Zquery.fieldbyname ('maxvar').AsInteger) + 1; Zquery.Close; Zquery.sql.Clear; Zquery.sql.add ('INSERT INTO Kunden_d values '); Zquery.sql.add ('(:ID, :Lieferzonen_ID, :Bankverb_ID, :Orte_ID, :Strasse, :Geb_Datum, :Kunde_Seit, :Tel, :Email, :Handy)'); //Zquery.ParamCheck := True; Zquery.Params.ParamByName('ID').AsInteger := MaxVar; showmessage(inttostr(Zquery.Params.ParamByName('ID').AsInteger)); Zquery.Params.ParamByName ('Lieferzonen_ID').AsInteger := (integer(CB_Lieferz.Items.Objects[cb_Lieferz.ItemIndex])); Zquery.Params.ParamByName('Bankverb_ID').AsInteger := 1; Zquery.Params.ParamByName ('Orte_ID').AsInteger := (integer(cb_Ort.Items.Objects[cb_Ort.ItemIndex])); Zquery.Params.ParamByName('Strasse').AsString := ME_STR.Text; Zquery.Params.ParamByName('Geb_Datum').Asstring := me_geb.text ; Zquery.Params.ParamByName('Kunde_Seit').Asstring := me_DAt.text; Zquery.Params.ParamByName('Tel').Asstring := me_tel.text; Zquery.Params.ParamByName ('Email').AsString := me_mail.text; Zquery.Params.ParamByName('Handy').AsString := me_handy.text; showmessage (Zquery.SQL.Text); Zquery.ExecSQL; . . . end; bei Ausgabe des gesamten Textes bekomme ich dann : Zitat:
In der Exeption steht es genauso, ausser dass die Parameter mit je einem "?" gefüllt sind. Wäre nett wenn mir jemand sagen könnte was ich hier falsch mache... PS: Ach ja, schön dabei zu sein :corky: |
Re: ParamsByName liefert ? zurück
Hallo bacardifeeling,
die SQL-Anweisung des Queries wird immer die Parameter enthalten. Dies erlaubt es dir, dem Parameter einen neuen Wert zuzuweisen, ohne das Query selbst anfassen zu müssen. Wenn die Parameter im Query sofort durch die Werte ersetzt werden würden, wärs das gewesen mit der Einfachheit ;) AFAIR werden die Parameter beim Execute eingesetzt, dann aber auch nur intern. Warum eine Exception auftritt, weiß ich jetzt nicht, welche Exception tritt überhaupt auf? Ein "?" statt einem Parameter heißt aber, dass kein Wert für den Parameter zugewiesen worden ist, was mich in deinem Fall etwas stutzig macht, da du ja alles zuweist. :-? Greetz alcaeus |
Re: ParamsByName liefert ? zurück
Hi ,
also ich würde es so machen:
Delphi-Quellcode:
[edit=alcaeus]Überlanges Zitat entfernt und Delphi-Tags eingefügt. Beim nächsten Mal bitte selbst machen. Danke :) Mfg, alcaeus[/edit]
Zquery.sql.add ('INSERT INTO Kunden_d values ');
Zquery.sql.add '(:ID, :Lieferzonen_ID, :Bankverb_ID, :Orte_ID, :Strasse, :Geb_Datum, :Kunde_Seit, :Tel, :Email, :Handy)'); Zquery.sql.add ('VALUES ('+ IntToSTr(MaxVar)+', '+ + IntToStr(cb_Ort.Items.Objects[cb_Ort.ItemIndex])+','+ usw usw.. ')'); |
Re: ParamsByName liefert ? zurück
Danke für die Antworten ersteinmal.
Glaube den Fehler gefunden zu haben... Zitat:
und siehe da... 13 Felder und ich weise nur 10 zu... :roll: ... :wall: versuche jetzt mal das einzubauen und sage dann ob's das war. |
Re: ParamsByName liefert ? zurück
hm...
das hinzufügen der drei Feldzuweisungen hat den besagten ausgeschaltet, bekomme jetzt allerding einen "Convertion Error"... :( Das sagt mir nu gar nix... könnte das jemand für mich Verständlich machen? @Alcaeus: Danke für den Denkanstoss... Edit:
Delphi-Quellcode:
Der hinzugefügte Code...
Zquerry1.Params.ParamByName ('pass').AsString := '0';
Zquerry1.Params.ParamByName ('abgleich').AsString := '0'; Zquerry1.Params.ParamByName ('Dat_abgl').AsString := me_Dat.Text; |
Re: ParamsByName liefert ? zurück
Hallo bacardifeeling,
Zitat:
Ich würde es so machen:
Delphi-Quellcode:
Greetz
Zquerry1.Params.ParamByName ('pass').AsInteger := 0;
Zquerry1.Params.ParamByName ('abgleich').AsInteger := 0; Zquerry1.Params.ParamByName ('Dat_abgl').AsString := me_Dat.Text; alcaeus |
Re: ParamsByName liefert ? zurück
Ok, hab über die Delphi-Praxis suche einen Beitrag gefunden welcher zu meinem Problem passt...
![]() werde dann meine Typzuweisungen mal umstellen :) Sind einige Datumsfelder in der Tabelle welche ich versuche als String zu übergeben... Danke für die Hilfe... :zwinker: Edit: manchmal reicht schon ein Denkanstoss... Mfg Oli |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 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