![]() |
SQL-Parameter Problem
Hi,
in der folgenden SQL-Abfrage habe ich noch immer ein Problem mit dem Parameters:
Delphi-Quellcode:
Ich erhalte die Meldung, dass es ein UNDEFINIERTER BEZEICHNER ParamByName ist. Sicher muss ich den irgendwie noch einrichten aber wie und wo?ADOQuery1.SQL.Text := 'SELECT Mitgliedsnummer, Vorname, Name, Strasse, Land, PLZ, ' + 'Ort, Tel_1, Fax_1, Tel_2, Fax_2, Handy, email, GebDat, Saldo, ' + 'Eintritt, Austritt, Spielernummer, Trikot, Spielerposition.Spielerpos, '+ 'Anrede FROM ID LEFT JOIN ' + '(Spielerposition RIGHT JOIN (Anrede RIGHT JOIN (((((Mitglied LEFT ' + 'JOIN Kontakt ON Mitglied.ID=Kontakt.ID) LEFT JOIN GebDatList ON ' + 'Mitglied.ID=GebDatList.ID) LEFT JOIN MG_Saldenliste ON ' + 'Mitglied.ID=MG_Saldenliste.ID) LEFT JOIN Mitgliedsstatus ON ' + 'Mitglied.ID=Mitgliedsstatus.ID) LEFT JOIN Spielerdaten ON ' + 'Mitglied.ID=Spielerdaten.ID) ON Anrede.AID=Mitglied.AID) ON ' + 'Spielerposition.SID=Spielerdaten.Spielerpos) ON ID.ID=Mitglied.ID ' + 'WHERE ID.ID =: apptype'; ParamByName('apptype').Value:=DSID; Thx. |
Re: SQL-Parameter Problem
mach das mal so: :mrgreen:
SQL-Code:
WHERE Feld = :Parameter
|
Re: SQL-Parameter Problem
Hi,
wenn ich es so eingebe:
Delphi-Quellcode:
dann habe ich den selben effekt. Muss ich unter type noch irgendetwas eingeben? ich bin Newbie deswegen die dummen fragen. Oder habe ich dich falsch verstanden?
'WHERE ID.ID = :apptype';
ParamByName('apptype').Value:=DSID; Danke schon mal für die prompte Antwort. |
Re: SQL-Parameter Problem
hai Leon,
Du hast nicht engegeben von welchem TDataSet das ParamByName ist ;-)
Delphi-Quellcode:
ADOQuery1.ParamByName ('apptype').Value := DSID
|
Re: SQL-Parameter Problem
Die Query sollte Prepared auf true haben. ;)
Damit wird autom. das Statement nach Paramtern durchsucht. Diese werden dann na die ParameterCollection angehängt. |
Re: SQL-Parameter Problem
Hi Sharky, hab dich schon vermisst... :-D
Also eben habe ich auch meinen fehler gefunden... musste es aber so eintragen:
Delphi-Quellcode:
aber die ergebnismenge bleibt leer. Obwohl der richtige Wert in DSID eingetragen wird... :gruebel:
AdoQuery1.Parameters.ParamByName('apptype').Value:=DSID;
|
Re: SQL-Parameter Problem
Zitat:
Ich habe mal dein Statement von meiner oracle IDE formatieren lassen.
SQL-Code:
:shock: Bist du dir sicher, dass du die Tabellen so verknüpfen willst?
SELECT Mitgliedsnummer
,Vorname ,Name ,Strasse ,Land ,PLZ ,Ort ,Tel_1 ,Fax_1 ,Tel_2 ,Fax_2 ,Handy ,GebDat ,Saldo ,Eintritt ,Austritt ,Spielernummer ,Trikot ,Spielerposition.Spielerpos ,Anrede FROM ID Left JOIN(Spielerposition right JOIN(Anrede right JOIN(((((Mitglied Left JOIN Kontakt ON Mitglied.ID = Kontakt.ID) Left JOIN GebDatList ON Mitglied.ID = GebDatList.ID) Left JOIN MG_Saldenliste ON Mitglied.ID = MG_Saldenliste.ID) Left JOIN Mitgliedsstatus ON Mitglied.ID = Mitgliedsstatus.ID) Left JOIN Spielerdaten ON Mitglied.ID = Spielerdaten.ID) ON Anrede.AID = Mitglied.AID) ON Spielerposition.SID = Spielerdaten.Spielerpos) ON ID.ID = Mitglied.ID WHERE ID.ID = :apptype Du verschachtelst die Joins inneinander -> Das kann man nicht nur verdammt schwierig lesen, das dürfte auch zuwenige Ergebnisse liefern. ;) |
Re: SQL-Parameter Problem
Ähm... also ich habe mir diesen Query gebaut damit er mir in meinem Grid alle daten anzeigt, die ich von meinen Mitgliedern brauche... wenn ich nun einen Doppelklick auf eine Zeile in meinem DBGrid mache, dann soll er mir alle Daten von dem Aktuellen Mitglied zeigen. dazu verwende ich die Variable DSID in der die ID des Datensatzes steht.
ich dachte mir in meinem "jugendlichen" Leichtsinn, dass ich mit dem Statement nur mit WHERE hinten dran die selben daten catchen kann wie im Grid auch... ist das nicht so? :pale: |
Re: SQL-Parameter Problem
Das sollte eigentlich schon gehen.
Aber liefert die Abfrage ohne WHERE-Clause wirklich alle möglichen Datensätze in denen du mit der DSID filtern willst? |
Re: SQL-Parameter Problem
also ohne geht es in dem grid. und ohne geht es auch in dem neuen form wo ich meine DBEdits damit fülle. aber immer nur für den ersten datensatz... egal welchen satz ich im grid anklicke, ich bekomme in meinem form3 mit dem DBEdits nur die daten des ersten satzes... :wall:
|
Re: SQL-Parameter Problem
Was benutzt du denn für ein DBMS?
Manche DBs zicken bei der Kombi von Joins und WHERE-Clause rum. |
Re: SQL-Parameter Problem
achso, das hatte ich vergessen zu erwähnen.
arbeite mit access und den join-string habe ich mit acces oder besser von access erstellen lassen... wie gesagt der funktioniert auch aber ich bekomme es nicht hin die daten des ausgewählten satzes anzeigen zu lassen. ich bin mir nicht mal sicher ob ich den aktuellen satz sauber ermittel aber zumidest stimmt DSID mit der ID des satzes überein... |
Re: SQL-Parameter Problem
Zitat:
Du fragst dich vielleicht, warum geht's in Access wenn's mit ner ADOQuery nicht geht?? Abfragen aus Access heraus und über ADO sind zwar ähnlich aber nicht identisch! 2 Dinge müssen passen:
SQL-Code:
Man beachte die Klammersetzung! Hier nochmal als Kurzform mit 5 Tabellen:
SELECT [felderliste] FROM
(TabelleA INNER JOIN TabelleB ON TabelleA.Feld1=TabelleB.Feld2) INNER JOIN TabelleC ON TabelleC.Feld3=TabelleA.Feld4 WHERE ....
SQL-Code:
FROM (((A JOIN B ON ...) JOIN C ON ...) JOIN D ON ...) JOIN E ON ....
|
Re: SQL-Parameter Problem
nur das ich das richtig verstehe...
ein und der selbe Query funktioniert einmal und dann wieder nicht??? :shock: |
Re: SQL-Parameter Problem
Zitat:
Vermutung: es gibt verschiedene Wege Access -> DAO -> datenbank.mdb Delphi -> ADO Express -> ADO -> OLE DB Provider for JET -> DAO -> datenbank.mdb Beim Zugriff über ADO bleibt dann Performance & Funktionalität etwas auf der Strecke. |
Re: SQL-Parameter Problem
verfluchte .... :wall:
okay, dann muss ich mir für dieses problem einen Work-Around ausdenken... Danke für die Info... |
Re: SQL-Parameter Problem
Zitat:
Firebird würde isch in deinem Fall wohl anbieten ;) |
Re: SQL-Parameter Problem
ja, ne ist klar. ich bin aber anfänger und meine vorgeschichte zwingt mich erst mal dazu mit access zu arbeiten... :wall: :wall: :wall:
aber das nächste projekt mach ich dann entweder damit oder mit mysql... mal sehen. :zwinker: |
Re: SQL-Parameter Problem
:hello: So noch mal an alle die es interessiert.... ES FUNZT!
Es lag NICHT an der SQL-Abfrage!!! Die ist völlig in Ordnung. Es war mein Fehler! Ich habe die Abfrage einfach nur falsch plaziert. Statt im OnShow, habe ich sie ins OnCreate gepackt. das konnte nicht funktionieren. Danke an alle die hier mitgeholfen haben. dadurch habe ich wieder einiges gelernt. :dance: Gruß Leon. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 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