![]() |
Datenbank: MS SQL 2000 • Version: 2000 • Zugriff über: Ado
ADO mehrere gleiche Parameter in SQL String
Folgende SQL Abfrage:
SQL-Code:
Mit Datum1 und Datum2 funktioniert es ohne Probleme wenn ich dann im Programm das gleiche Datum setzte.
select * from Str where
GueltigVon >= :Datum and GueltigBis < :Datum Habe ich 2x "Datum" in der Parameters Liste und setzt das mit ParamByName 1x bzw. 2x: 'Parameter was inproperly defined. Inconsistent or incomplete information was provided' Habe ich 1x "Datum" in der Parameters Liste und setzt das mit ParamByName: 'No value given for one or more required parameters' Wie kann ich einen Parameter definieren der ALLE vorkommen im SQL String ersetzt (Delphi 2005) |
Re: ADO mehrere gleiche Parameter in SQL String
Hallo,
nimm :DatumVon und :DatumBis und weise diesen den gleichen Wert zu, also zwei Parameterzuweisungen. In der von Dir genutzten Form ist mir das noch nicht gelungen, auch wenn es die durchaus einfachere Methode zu sein scheint. Alternative: :Datum durch Stringersetzung gegen den gewünschten Wert austauschen, was ich aber für unelegant halte. Die Ersetzungsroutine für die ParamByName scheint nicht so ganz klever implementiert zu sein ;-) |
Re: ADO mehrere gleiche Parameter in SQL String
Ich kenne mich mit MSSQL nicht so aus aber vielleicht ginge auch
SQL-Code:
select
* from Str where :datum between GueltigVon and GueltigBis; |
Re: ADO mehrere gleiche Parameter in SQL String
Daran hatte ich auch gedacht, aber IIRC ist BETWEEN inklusive, d.h. er erhält zuviele Datensätze (GueltigBis soll ja nicht enthalten sein).
|
Re: ADO mehrere gleiche Parameter in SQL String
Zitat:
SQL-Code:
funktionieren.
select
* from Str where :datum between GueltigVon and (GueltigBis - 1); |
Re: ADO mehrere gleiche Parameter in SQL String
Abhängig vom internen Datumsformat könnte das klappen. Aber MSSQL bietet doch bestimmt auch Datumsfunktionen an (DATEADD oder so), dann sollte man das IMHO besser damit machen.
|
Re: ADO mehrere gleiche Parameter in SQL String
das Datum wird öfter als 2 mal verwendet (4 bzw 6)
ich habs momentan so:
SQL-Code:
Find ich jetzt aber net so schön. Insbesondere weiß ich nicht obs anschließend auch auf mySQL / Oracle etc. läuft
DECLARE @Datum datetime;
SET @Datum = :Datum; SELECT ... (a.GueltigVon <= @Datum) AND (a.GueltigBis > @Datum) AND ... Worauf ich aber hinauswollte: Die Ado Parametersetzung erlaubt es also nicht? |
Re: ADO mehrere gleiche Parameter in SQL String
Hallo,
Zitat:
|
Re: ADO mehrere gleiche Parameter in SQL String
Also bei ADO muss jeder Parameter einen anderen Namen haben!
Dies gilt auch dann, wenn man genau den gleichen Parameter mehrmals verwenden möchte. Nicht schön, aber ist halt so. Wobei das wahrscheinlich eher an der ADO-Kapselung der VCL liegt, als an ADO selber. |
Re: ADO mehrere gleiche Parameter in SQL String
So ich upps nochmal.
Ich habe immer noch das selbe Problem. In MSSQL funktioniert obige Abfrage ja ohne Probleme, mySQL kann (wohl) keine lokalen Variablen in einer Abfrage definieren (-> nur in stored procedures) und Access wohl auch nicht. Kennt jemand eine andere (schönere) Möglichkeit obiege Abfrage mit einem Parameter unter mssql / mysql und Access zum laufen zu bekommen? Es ist echt grauenhaft, wenn ich 6 mal auf eine gleiche Variable prüfe, dass ich dann in ADO 6 verschiedene Parameter setzen muss. Und eine Variablendefinition die dann in Access (mssql, oracle etc.) funktioniert, gibts ja anscheindend auch nicht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07: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