Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   params.create: undeklarierter Bezeichner (https://www.delphipraxis.net/197400-params-create-undeklarierter-bezeichner.html)

Dr. Jack 3. Aug 2018 22:55

Datenbank: MSSQL • Version: 2017 • Zugriff über: firedac

params.create: undeklarierter Bezeichner
 
Hallo zusammen,

bin erstaunt, dass ich keine Parameter deklarieren kann, obwohl ich es in einer anderen Procedure genau so gemacht habe.
Delphi-Quellcode:

main.qryproducts.SQL.Clear;
main.qryproducts.Params.Clear;
main.qryproducts.Params.CreateParam(ftString, 'nr_pzn', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'menge', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'einheit', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'dafo', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'hersteller', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'charge', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'verfall', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'pruefdatum', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'pruefer', ptInput);
main.qryproducts.Params.CreateParam(ftString, 'name', ptInput);
[dcc32 Fehler] Unit2.pas(171): E2003 Undeklarierter Bezeichner: 'ftString'

Weiß jemand Rat?

Redeemer 3. Aug 2018 22:57

AW: params.create: undeklarierter Bezeichner
 
Was ist denn ftString? Wo ist der deklariert? (Okay, ich weiß die Antwort auf die zweite Frage, aber ich frage trotzdem.)

Dr. Jack 3. Aug 2018 23:06

AW: params.create: undeklarierter Bezeichner
 
Ich dachte, es wäre die Angabe, dass der String nr_pzn halt ein String ist.
Ich habe das so bestimmt 10x in meiner Form benutzt und es ging so immer...

KodeZwerg 4. Aug 2018 00:04

AW: params.create: undeklarierter Bezeichner
 
Zitat:

Zitat von Dr. Jack (Beitrag 1409719)
Weiß jemand Rat?

Delphi-Quellcode:
main.qryproducts.SQL.Clear;
main.qryproducts.Params.Clear;
main.qryproducts.ParamByName('nr_pzn').AsString := nr_pzn;
main.qryproducts.ParamByName('menge').AsString := menge;
main.qryproducts.ParamByName('einheit').AsString := einheit;
main.qryproducts.ParamByName('dafo').AsString := dafo;
main.qryproducts.ParamByName('hersteller').AsString := hersteller;
main.qryproducts.ParamByName('charge').AsString := charge;
main.qryproducts.ParamByName('verfall').AsString := verfall;
main.qryproducts.ParamByName('pruefdatum').AsString := pruefdatum;
main.qryproducts.ParamByName('pruefer').AsString := pruefer;
main.qryproducts.ParamByName('name').AsString := name;
So vielleicht, um es nochmal zu verdeutlichen?

Dr. Jack 4. Aug 2018 00:22

AW: params.create: undeklarierter Bezeichner
 
Jetzt sagt er: qryProducts: Parameter 'nr_pzn' nicht gefunden.

Das ist die Procedure.

Delphi-Quellcode:
else begin

//showmessage('es folgen params');

          showmessage('es folgen params2');
main.qryproducts.SQL.Clear;
main.qryproducts.Params.Clear;

main.qryproducts.ParamByName('nr_pzn').AsString:=edit11.text;
main.qryproducts.ParamByName('menge').AsString := edit3.text ;
main.qryproducts.ParamByName('einheit').AsString := edit4.text;
main.qryproducts.ParamByName('dafo').AsString := edit5.text;
main.qryproducts.ParamByName('hersteller').AsString := edit6.text;
main.qryproducts.ParamByName('charge').AsString := edit7.text;
main.qryproducts.ParamByName('verfall').AsString := edit10.text;
main.qryproducts.ParamByName('pruefdatum').AsString := edit8.text;
main.qryproducts.ParamByName('pruefer').AsString := edit9.text;
main.qryproducts.ParamByName('name').AsString := edit2.text;
main.qryproducts.ParamByName('text').AsString := richedit1.text;
main.qryproducts.ParamByName('cb_1').AsBoolean := pruefmaske.CheckBox1.Checked;
main.qryproducts.ParamByName('cb_2').AsBoolean := pruefmaske.CheckBox2.Checked;
main.qryproducts.ParamByName('cb_3').AsBoolean := pruefmaske.CheckBox3.Checked;
main.qryproducts.ParamByName('cb_4').AsBoolean := pruefmaske.CheckBox4.Checked;

          showmessage('es folgt insert');
          main.qryproducts.SQL.text:=('insert into fam_check (name, nr_pzn, dafo_kurz, menge,einheit, hersteller_kurz, charge, verfall, p_datum, pruefer, text,cb_1, cb_2, cb_3,cb_4')+
                                     'Values (:name, :nr_pzn, :dafo, :menge, :einheit, :hersteller, :charge, :verfall, :pruefdatum, :pruefer, :cb_1, :cb_2, :cb_3, :cb_4';

          main.qryproducts.ExecSQL;

          clearfields_pruef();

end;

Neutral General 4. Aug 2018 00:27

AW: params.create: undeklarierter Bezeichner
 
Du musst ERST das SQL zuweisen und DANN die Parameter setzen.

KodeZwerg 4. Aug 2018 00:32

AW: params.create: undeklarierter Bezeichner
 
Zitat:

Zitat von Dr. Jack (Beitrag 1409731)
Jetzt sagt er: qryProducts: Parameter 'nr_pzn' nicht gefunden.

Hmmm, so sollte es dann aber klappen.
Delphi-Quellcode:
main.qryproducts.Params[0].AsString:=edit11.text;
main.qryproducts.Params[1].AsString := edit3.text ;
main.qryproducts.Params[2].AsString := edit4.text;
main.qryproducts.Params[3].AsString := edit5.text;
main.qryproducts.Params[4].AsString := edit6.text;
main.qryproducts.Params[5].AsString := edit7.text;
main.qryproducts.Params[6].AsString := edit10.text;
main.qryproducts.Params[7].AsString := edit8.text;
main.qryproducts.Params[8].AsString := edit9.text;
main.qryproducts.Params[9].AsString := edit2.text;
main.qryproducts.Params[10].AsString := richedit1.text;
main.qryproducts.Params[11].AsBoolean := pruefmaske.CheckBox1.Checked;
main.qryproducts.Params[12].AsBoolean := pruefmaske.CheckBox2.Checked;
main.qryproducts.Params[13].AsBoolean := pruefmaske.CheckBox3.Checked;
main.qryproducts.Params[14].AsBoolean := pruefmaske.CheckBox4.Checked;
Probiere mal bitte.

himitsu 4. Aug 2018 00:34

AW: params.create: undeklarierter Bezeichner
 
Zitat:

Zitat von Dr. Jack (Beitrag 1409731)
Jetzt sagt er: qryProducts: Parameter 'nr_pzn' nicht gefunden.

Nja, wenn das Query erst danach definiert wird, dann ist ja klarr, wenn die Zuweisung nicht funktioniert. :stupid:

Eigentlich erstellen viele solcher Komponenten selbständig die Parameterliste, anhand des übergebenen QueryStrings. (nur solche Spezialisierungen wie ftString sind dann natürlich fast nie gegeben, da der Zieltyp praktisch nie automatisch erkannt werden kann, womit es einfach bei ftUnknown bleibt)
Aber selbst wenn du voher die Typen manuell definiert hattest (siehe Post #1), dann hat vor der Zuweisung
Delphi-Quellcode:
ParamByName(...).AsString:=...
das
Delphi-Quellcode:
main.qryproducts.Params.Clear;
die manuellen Definitionen weggeworfen. :roll:

[edit]
und der Indexzugriff
Delphi-Quellcode:
Params[...]
anstatt der Namentlichen wird selbstverständlich so auch nicht funktionieren. :zwinker:
[/edit]

PS: Das mit dem automatischen ist auch bei den TFields so.
Entweder vorher definiert man "alle" TFields manuell, oder nach dem Open werden die TFields automatisch erstellt (hier aber mit den richtigen Typen, da diese bekannt sind. (allerdings auch hier entweder oder ... entweder alles manuell oder nur dann automatisch, wenn nichts definiert wurde)

KodeZwerg 4. Aug 2018 00:37

AW: params.create: undeklarierter Bezeichner
 
Ohh, ja da spitze mal die Ohren und befolge die nicht-von-mir Anweisungen.

edit, jetzt hat es bei mir erst klick gemacht an welcher stelle was woanders hin muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:09 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