AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ParamsByName liefert ? zurück
Thema durchsuchen
Ansicht
Themen-Optionen

ParamsByName liefert ? zurück

Ein Thema von Bacardifeeling · begonnen am 25. Mai 2005 · letzter Beitrag vom 25. Mai 2005
Antwort Antwort
Bacardifeeling

Registriert seit: 25. Mai 2005
13 Beiträge
 
Delphi 7 Professional
 
#1

ParamsByName liefert ? zurück

  Alt 25. Mai 2005, 10:00
Datenbank: Firebird • Version: 1.5 • Zugriff über: Zeos
Moin

Habe ein kleines Problem mit einem INSERT....

Delphi-Quellcode:
 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;
Der über schowmessage angezeigte Text für den Parameter :ID enthält den richtigen Wert...
bei Ausgabe des gesamten Textes bekomme ich dann :
Zitat:
INSERT INTO Kunden_d values (:ID, :Lieferzonen_ID, :Bankverb_ID, :Orte_ID, :Strasse, :Geb_Datum, :Kunde_Seit, :Tel, :Email, :Handy)
es stehen also, IMHO, keine Werte in den Parametern.

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
Alle Genüsse sind schließlich Einbildung,
und wer die beste Phantasie hat, hat den größten Genuß.
Nur das Unwirkliche macht den Wert aus und ist eigentlich das einzig Reale.
- Theodor Fontane
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: ParamsByName liefert ? zurück

  Alt 25. Mai 2005, 10:10
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Dummy

Registriert seit: 15. Nov 2004
18 Beiträge
 
#3

Re: ParamsByName liefert ? zurück

  Alt 25. Mai 2005, 10:10
Hi ,
also ich würde es so machen:

Delphi-Quellcode:
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..
                         ')');
[edit=alcaeus]Überlanges Zitat entfernt und Delphi-Tags eingefügt. Beim nächsten Mal bitte selbst machen. Danke Mfg, alcaeus[/edit]
  Mit Zitat antworten Zitat
Bacardifeeling

Registriert seit: 25. Mai 2005
13 Beiträge
 
Delphi 7 Professional
 
#4

Re: ParamsByName liefert ? zurück

  Alt 25. Mai 2005, 10:25
Danke für die Antworten ersteinmal.
Glaube den Fehler gefunden zu haben...

Zitat von alcaeus:
Hallo bacardifeeling,

... welche Exception tritt überhaupt auf?...
alcaeus
nach einem "intensiven Studium" der Exception habe ich mir meine DB nochmal angeschaut...
und siehe da... 13 Felder und ich weise nur 10 zu... ...

versuche jetzt mal das einzubauen und sage dann ob's das war.
Alle Genüsse sind schließlich Einbildung,
und wer die beste Phantasie hat, hat den größten Genuß.
Nur das Unwirkliche macht den Wert aus und ist eigentlich das einzig Reale.
- Theodor Fontane
  Mit Zitat antworten Zitat
Bacardifeeling

Registriert seit: 25. Mai 2005
13 Beiträge
 
Delphi 7 Professional
 
#5

Re: ParamsByName liefert ? zurück

  Alt 25. Mai 2005, 10:39
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:
Zquerry1.Params.ParamByName ('pass').AsString := '0';
        Zquerry1.Params.ParamByName ('abgleich').AsString := '0';
        Zquerry1.Params.ParamByName ('Dat_abgl').AsString := me_Dat.Text;
Der hinzugefügte Code...
Alle Genüsse sind schließlich Einbildung,
und wer die beste Phantasie hat, hat den größten Genuß.
Nur das Unwirkliche macht den Wert aus und ist eigentlich das einzig Reale.
- Theodor Fontane
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: ParamsByName liefert ? zurück

  Alt 25. Mai 2005, 10:56
Hallo bacardifeeling,

Zitat von Bacardifeeling:
Delphi-Quellcode:
Zquerry1.Params.ParamByName ('pass').AsString := '0';
        Zquerry1.Params.ParamByName ('abgleich').AsString := '0';
        Zquerry1.Params.ParamByName ('Dat_abgl').AsString := me_Dat.Text;
du weist einem Parameter einen String zu, das heißt dieser wird anschließend wahrscheinlich auch noch in Hochkommas gewickelt, so dass es keine Probleme mit dem Query gibt. Wenn das Feld aber ein Int-Feld ist, so krachts natürlich bei den Hochkommas.

Ich würde es so machen:
Delphi-Quellcode:
Zquerry1.Params.ParamByName ('pass').AsInteger := 0;
Zquerry1.Params.ParamByName ('abgleich').AsInteger := 0;
Zquerry1.Params.ParamByName ('Dat_abgl').AsString := me_Dat.Text;
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Bacardifeeling

Registriert seit: 25. Mai 2005
13 Beiträge
 
Delphi 7 Professional
 
#7

Re: ParamsByName liefert ? zurück

  Alt 25. Mai 2005, 11:00
Ok, hab über die Delphi-Praxis suche einen Beitrag gefunden welcher zu meinem Problem passt...

Convertion Error

werde dann meine Typzuweisungen mal umstellen

Sind einige Datumsfelder in der Tabelle welche ich versuche als String zu übergeben...


Danke für die Hilfe...

Edit:
manchmal reicht schon ein Denkanstoss...

Mfg
Oli
Alle Genüsse sind schließlich Einbildung,
und wer die beste Phantasie hat, hat den größten Genuß.
Nur das Unwirkliche macht den Wert aus und ist eigentlich das einzig Reale.
- Theodor Fontane
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz