Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Parameter Problem (https://www.delphipraxis.net/33568-sql-parameter-problem.html)

Leon de Bar 9. Nov 2004 10:28


SQL-Parameter Problem
 
Hi,

in der folgenden SQL-Abfrage habe ich noch immer ein Problem mit dem Parameters:

Delphi-Quellcode:
 
  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;
Ich erhalte die Meldung, dass es ein UNDEFINIERTER BEZEICHNER ParamByName ist. Sicher muss ich den irgendwie noch einrichten aber wie und wo?

Thx.

Robert_G 9. Nov 2004 10:29

Re: SQL-Parameter Problem
 
mach das mal so: :mrgreen:
SQL-Code:
WHERE Feld = :Parameter

Leon de Bar 9. Nov 2004 10:36

Re: SQL-Parameter Problem
 
Hi,

wenn ich es so eingebe:

Delphi-Quellcode:
      'WHERE ID.ID = :apptype';
  ParamByName('apptype').Value:=DSID;
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?

Danke schon mal für die prompte Antwort.

Sharky 9. Nov 2004 10:38

Re: SQL-Parameter Problem
 
hai Leon,

Du hast nicht engegeben von welchem TDataSet das ParamByName ist ;-)

Delphi-Quellcode:
  ADOQuery1.ParamByName ('apptype').Value := DSID

Robert_G 9. Nov 2004 10:39

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.

Leon de Bar 9. Nov 2004 10:40

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:
  AdoQuery1.Parameters.ParamByName('apptype').Value:=DSID;
aber die ergebnismenge bleibt leer. Obwohl der richtige Wert in DSID eingetragen wird... :gruebel:

Robert_G 9. Nov 2004 10:46

Re: SQL-Parameter Problem
 
Zitat:

Zitat von Leon de Bar
...aber die ergebnismenge bleibt leer. Obwohl der richtige Wert in DSID eingetragen wird... :gruebel:

Ich kann dir mit der gleichen Sicherheit sagen, dass entweder in deinem Statement oder in deinem Wert der wurm steckt, wie ich dir sagen kann, dass 1+1==2 ist. ;)

Ich habe mal dein Statement von meiner oracle IDE formatieren lassen.
SQL-Code:
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
:shock: Bist du dir sicher, dass du die Tabellen so verknüpfen willst?
Du verschachtelst die Joins inneinander -> Das kann man nicht nur verdammt schwierig lesen, das dürfte auch zuwenige Ergebnisse liefern. ;)

Leon de Bar 9. Nov 2004 10:56

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:

Robert_G 9. Nov 2004 11:08

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?

Leon de Bar 9. Nov 2004 11:49

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:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 Uhr.
Seite 1 von 2  1 2      

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