AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADO mehrere gleiche Parameter in SQL String
Thema durchsuchen
Ansicht
Themen-Optionen

ADO mehrere gleiche Parameter in SQL String

Ein Thema von brechi · begonnen am 3. Dez 2008 · letzter Beitrag vom 9. Mär 2009
Antwort Antwort
Seite 1 von 2  1 2      
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#1

ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 10:11
Datenbank: MS SQL 2000 • Version: 2000 • Zugriff über: Ado
Folgende SQL Abfrage:

SQL-Code:
select * from Str where
GueltigVon >= :Datum and GueltigBis < :Datum
Mit Datum1 und Datum2 funktioniert es ohne Probleme wenn ich dann im Programm das gleiche Datum setzte.


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)
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 10:19
Hallo,

nimm atumVon und atumBis 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: atum 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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 10:25
Ich kenne mich mit MSSQL nicht so aus aber vielleicht ginge auch

SQL-Code:
select
    *
from
    Str
where
    :datum between GueltigVon and GueltigBis;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 10:32
Daran hatte ich auch gedacht, aber IIRC ist BETWEEN inklusive, d.h. er erhält zuviele Datensätze (GueltigBis soll ja nicht enthalten sein).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 10:40
Zitat von DeddyH:
Daran hatte ich auch gedacht, aber IIRC ist BETWEEN inklusive, d.h. er erhält zuviele Datensätze (GueltigBis soll ja nicht enthalten sein).
Da sollte dann aber
SQL-Code:
select
    *
from
    Str
where
    :datum between GueltigVon and (GueltigBis - 1);
funktionieren.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.544 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 10:44
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#7

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 10:57
das Datum wird öfter als 2 mal verwendet (4 bzw 6)

ich habs momentan so:

SQL-Code:
DECLARE @Datum datetime;
SET @Datum = :Datum;

SELECT ...
(a.GueltigVon <= @Datum) AND (a.GueltigBis > @Datum) AND ...
Find ich jetzt aber net so schön. Insbesondere weiß ich nicht obs anschließend auch auf mySQL / Oracle etc. läuft

Worauf ich aber hinauswollte: Die Ado Parametersetzung erlaubt es also nicht?
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#8

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 11:02
Hallo,
Zitat von brechi:
das Datum wird öfter als 2 mal verwendet (4 bzw 6)

ich habs momentan so:

SQL-Code:
DECLARE @Datum datetime;
SET @Datum = :Datum;

SELECT ...
(a.GueltigVon <= @Datum) AND (a.GueltigBis > @Datum) AND ...
Find ich jetzt aber net so schön. Inbesondere weiß ich nicht obs anschließend auch auf mySQL / Oracle etc. läuft
mySQL weiß ich nicht, Oracle nein, da ist Syntax der Variabelendefinition anders, möchte aber nicht ausschließen, dass die Parameterersetzung dort besser funktioniert.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 3. Dez 2008, 17:16
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.
Andreas
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#10

Re: ADO mehrere gleiche Parameter in SQL String

  Alt 6. Mär 2009, 12:41
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:14 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