![]() |
Datenbank: Ms Sql Server • Version: 2000 • Zugriff über: Ado
Parameter-Problem beim PreparedStatement
Hallo liebe Leute!
Mit der TAdoCommand bereite ich einen Sql-Befehl vor, in welchen ich einen Parameter einsetzen möchte:
Delphi-Quellcode:
Mein Sql-Befehl sieht folgendermaßen aus:
FAdoCommand.Parameters.ParamByName(Parameter).Value := Inhalt;
SQL-Code:
Nun habe ich folgendes Problem:
select * from kundenliste
where kamkampagne_id = :kamkampagne_id ORDER BY k1kunden_id Es gibt Fälle, bei denen der Parameter "kamkampagne_id" eingesetzt werden soll. Das ist ein int-Wert. Es gibt aber auch Fälle, bei denen ich die where-Abfrage gern "ausschalten" würde. Am einfachsten (wenn auch nicht am schnellsten) kann man ja notfalls folgendes einsetzen:
SQL-Code:
Dort habe ich einfach dieselbe Spalte sozusagen als Parameter eingesetzt -> Also werden alle Datensätze angezeigt.
select * from kundenliste
where kamkampagne_id = kamkampagne_id ORDER BY k1kunden_id Wenn ich dies über die AdoCommand machen möchte und ich dort "kamkampagne_id" einsetze mit obigem Befehl, dann setzt er das als String ein. Die Folge ist, es gibt natürlich einen Fehler, da nur integer-Werte zulässig sind. Aber ich möchte ja eigentlich, dass kein String eingesetzt werden soll, sondern dass mit "kamkampagne_id" die Spalte gemeint ist. Dies funktioniert ja auch in der zweiten Anweisung. Ich hoffe, ich habe mich deutlich genug ausgedrückt. Wenn ihr mir helfen könnt, dann her mit den Tipps :-) Danke, Andy PS: Ich habe die Sql-Anweisungen in externe Dateien ausgelagert, deswegen kann ich da auch im Quelltext nicht mal eben die where-Abfrage auslassen. |
Re: Parameter-Problem beim PreparedStatement
Nimm ein like statt = dann kannst du durch setzen von % alle anzeigen
|
Re: Parameter-Problem beim PreparedStatement
Hallo,
ich habe es mal eben ausprobiert:
SQL-Code:
Die AdoComponente meldet: "Die Anwendung verwendet für den aktuellen Vorgangn einen Wert vom falschen Typ"
select * from kundenliste
where kamkampagne_id LIKE :kamkampagne_id ORDER BY k1kunden_id Ich habe nämlich folgendes eingesetzt:
Delphi-Quellcode:
War doch so gemeint oder?
FAdoCommand.Parameters.ParamByName('kamkampagne_id').Value := '%';
|
Re: Parameter-Problem beim PreparedStatement
Delphi-Quellcode:
AdoCommand.Parameters.ParamByName('kamkampagne_id').asString:= '%';
|
Re: Parameter-Problem beim PreparedStatement
Juhu, es funktioniert!
So habe ich es im Endeffekt gelöst. Ich glaube das "asString" hast du mit einer anderen Komponente verwechselt ;-) Aber das war der richtige Weg! Denn im AdoCommand findet er die Property bei mir nicht.
Delphi-Quellcode:
FAdoCommand.Parameters.ParamByName(Parameter).DataType := ftString;
FAdoCommand.Parameters.ParamByName(Parameter).Value := Inhalt; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 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