Entwickler-Ecke
Datenbanken - TQuery.Params Eigenschaft verstehe ich nicht
Jakob Schöttl - Di 25.03.08 15:13
Titel: TQuery.Params Eigenschaft verstehe ich nicht
Hallo,
Ich glaub ich stell mich grad ein bisschen dumm.
Es geht um die Eigenschaft
Params von
TQuery.
- Stimmt es, dass ich die Parameter in der Eigenschaft SQL dann einfach verwenden kann - dass also der Name des Parameters dann durch den entsprechenden Wert ersetzt wird?
- Wie mache ich zur Laufzeit einen neuen Parameter? Geht das auch wenn TQuery.Active False ist?
Danke schon mal
mkinzler - Di 25.03.08 15:19
Am Besten
.ParamCheck auf
True stellen, dann werden Parameter automatisch anhand der Abfrage erzeugt:
SQL-Anweisung
1:
| select <Feldliste> from <Tabelle> where <Feld1> = :Parameter1; |
erzeugt automatisch den Parameter
Parameter1
auf den du dann z.B. per
query.ParamByName('Parameter1').Value zugreifen kannst.
Jakob Schöttl - Di 25.03.08 15:41
Ah, Vielen Dank!
Das wars eigentlich auch schon.
Jakob Schöttl - Mi 26.03.08 11:58
Jetzt hab ich doch noch eine Frage.
Mein Parameter muss für die Abfrage den richtigen Typ haben (sonst gibt es eine Exception).
Wie lege ich fest, dass der Parameter Integer sein soll?
mkinzler - Mi 26.03.08 12:37
Sollte eigentlich automatisch anhand des Feldtype der Datenbank erkannt werden. Sonst
Delphi-Quelltext
1:
| Query.ParamByName('<Name>').asInteger := ... |
Jakob Schöttl - Mi 26.03.08 15:03
ParamCheck ist
True;
Der Parameter heißt
SchiessenID
den Parameter habe ich auf diese Weise erstellt:
Delphi-Quelltext
1:
| Query.ParamByName('SchiessenID').AsInteger := Value; |
in
Query.SQL steht:
SQL-Anweisung
1: 2: 3: 4:
| SELECT Schuetzen.Name, Vereine.Vereinsname, Schuetzen.Geburtsdatum FROM Schuetzen, zSchuetzenVereine, Vereine WHERE (Schuetzen.ID = zSchuetzenVereine.SchuetzenID) AND (zSchuetzenVereine.VereineID = Vereine.ID) AND (zSchuetzenVereine.VereineID IN ( SELECT VereineID FROM zSchiessenVereine WHERE (SchiessenID = :SchiessenID) )) ORDER BY Name, Verein |
mkinzler - Mi 26.03.08 15:29
Der Parameter wird durch setzen der Abfrage erzeugt! Zuweisung ist erst später möglich
Jakob Schöttl - Mi 26.03.08 19:17
mkinzler hat folgendes geschrieben: |
| Der Parameter wird durch setzen der Abfrage erzeugt! Zuweisung ist erst später möglich |
oh, aber er muss doch schon vor der Abfrage definiert sein!
alzaimar - Mi 26.03.08 20:45
Nein.
Delphi-Quelltext
1: 2: 3:
| Query.SQL.Text :'select * from Foo where Field = :Bar'; Query.Params.ParamByName('Bar').AsInteger := 123; Query.Active := True; |
Jakob Schöttl - Mi 26.03.08 22:02
Delphi-Quelltext
1: 2: 3:
| Query.SQL.Text :'select * from Foo where Field = :Bar'; Query.Params.ParamByName('Bar').AsInteger := 123; Query.Active := True; |
am besten ich probier das ganze nochmal in einem kleinen Testprojekt aus, mal schaun ob ich dann draufkomme...
alzaimar - Mi 26.03.08 22:16
Vielleicht hilft es, den Datentypen des Parameters auch explizit zur Entwurfszeit zu setzen. Ich jedenfalls hab damit keine Probleme.
Jakob Schöttl - Do 27.03.08 13:36
alzaimar hat folgendes geschrieben: |
| Vielleicht hilft es, den Datentypen des Parameters auch explizit zur Entwurfszeit zu setzen |
das wäre wahrscheinlich das Beste, aber das geht irgendwie nicht:
in dem Editor für
Params sind alle Schaltflächen grau, egal ob die Datenmenge geschlossen oder geöffnet ist...
mkinzler - Do 27.03.08 13:41
Hast du die Abfrage auch vorher zugewiesen?
Jakob Schöttl - Do 27.03.08 13:48
ja, die eigenschaft SQL habe ich auch schon zur entwurfszeit festgelegt.
Erichgue - Do 27.03.08 13:57
Jakob Schöttl hat folgendes geschrieben: |
| ja, die eigenschaft SQL habe ich auch schon zur entwurfszeit festgelegt. |
ParamCheck auf True?
Erich
Jakob Schöttl - Do 27.03.08 14:06
ah! jetzt seh ichs! Der Parameter entsteht automatisch, wenn ich die Eigenschaft SQL setze. Dann kann ich dem Parameter als DataType ftInteger zuweisen!
Ich hab erst gedacht, der Parameter wird erst bei der Abfrage selbst (also Open) erzeugt.
Dann schau ich mal weiter...
Vielen Dank für eure Bemühungen!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!