![]() |
Datensuche mit mehreren Tabellen
Hallo
Ich habe eine Tabelle mit dem Namen Ersatzteil eine mit dem Namen Anlagentyp und eine mit dem Namen Zuordnung. In der Tabelle Ersatzteil habe ich alle Ersatzteile gelistet in der Anlagentyp alle Anlagentyp. Da aber mehrere Anlagentypen die gleichen Ersatzteile habe habe ich die Tabelle Zuordnung erstellt und diese mit den Feldern Zuordnungs_ID,Anlagentyp_ID und Ersatzteil_ID versehen. Ich möchte jetzt eine Anlagentyp auswählen und es sollen mir mittels eines DBGrid alle Ersatzteile die in der Zuordnungstabelle zu diesem Anlagentyp zugeordnet sind angezeigt werden. Hat jemand ne Lösung?? MFG MCOP2001DE |
Re: Datensuche mit mehreren Tabellen
Hallo MCOP2001DE,
ein ähnlichen Problem hatten wir gerade ![]() |
Re: Datensuche mit mehreren Tabellen
Hallo MrSpock
Die Lösung geht zwar aber ich habe noch ein Problem und zwar gibt es für einen Anlagentyp auch mehrere Ersatzteile jetzt wird mir aber nur das erste angezeigt.Ein weiters Problem ist das ich über ein weite DBLoobComboBox und eine ADOQuery schon nach Hersteller suchen lasse. Gibt es nicht eine Möglichkeit über eine SQL Code erst die Zuordnungstabelle nach den Anlagentypen zu durchsuchen und die Ersatzteil_ID´s aus dem ergebnis an den DBGrid zuübergeben und die restlichen Daten zu den Ersatzteil_ID´s hinzu zufügen? MCOP2001DE |
Re: Datensuche mit mehreren Tabellen
Hallo MCOP2001DE,
dann musst du noch etwas falsch gemacht haben. Wenn du die Zuordnungstabelle als Detailtabelle und die Tabelle Anlagentyp als Master einsetzt, werden dir zu jedem ausgewählten Anlagetypen alle Ersatzteile angezeigt! Aber es geht natürlich auch mit einer Query:
SQL-Code:
SELECT A.Name, E.Bezeichner FROM AnlageTyp A
LEFT JOIN Zuordnung Z ON Z.AnlagenTyp_ID=A.ID LEFT JOIN Ersatzteile E ON Z.Ersatzteil_Id=E.ID WHERE A.Nummer= :Nr |
Re: Datensuche mit mehreren Tabellen
Hallo MrSpock
Danke für den Tip aber irgentwo habe ich wohl einen Fehler drin
Delphi-Quellcode:
beim Ausführen bekomme ich die Fehlermeldung "Syntaxfehler in der From Klausel"
procedure TFRM_Ersatzteil.LCB_AnlagentypClick(Sender: TObject);
begin with Datenmodul2.QRY_ErS do begin close; SQL.Clear; SQL.Text := 'SELECT * FROM AnlageTyp A'+ 'LEFT JOIN Zuordnung Z ON Z.AnlagenTyp_ID=A.Anlagen_ID'+ 'LEFT JOIN Ersatzteile E ON Z.Ersatzteil_Id=E.Ersatzteil_ID'+ 'WHERE A.Anlagentyp_ID= :Anlagentyp_ID'; Parameters.ParamByName('Anlagentyp_ID').Value := DBT_E_Anlagentyp_ID.Caption; open; end; end; Kannst du einen Fehler in dem Code sehen? MCOP2001DE |
Re: Datensuche mit mehreren Tabellen
Hallo MCOP2001DE,
tja, wie heißt denn deine Tabelle? AnlageTyp oder AnlagenTyp? |
Re: Datensuche mit mehreren Tabellen
Hallo MrSpock
Sorry die Tabelle heist E_Anlagentyp. Ich habe die Einträge jetzt so geändert
Delphi-Quellcode:
Ich bekomme aber die selbe Fehlermeldung.Alle anderen Tabellen und Spaltennamen habe ich Überprüft die Stimmen alle. Was kann das denn noch sein?Oder kann es daran liegen das die Datenbank auf Access basiert und ich die Ansteuerung über ADO mache?
[procedure TFRM_Ersatzteil.LCB_AnlagentypClick(Sender: TObject);
begin with Datenmodul2.QRY_ErS do begin close; SQL.Clear; SQL.Text := 'SELECT * FROM E_Anlagentyp A '+ 'LEFT JOIN Zuordnung Z ON Z.Anlagentyp_ID=A.Anlagentyp_ID,'+ 'LEFT JOIN Ersatzteile E ON Z.Ersatzteil_ID=E.Ersatzteil_ID'+ 'WHERE A.Anlagentyp_ID= :Anlagentyp_ID'; Parameters.ParamByName('Anlagentyp_ID').Value :=DBT_E_Anlagentyp_ID.Caption; open; end; end; MCOP2001DE |
Re: Datensuche mit mehreren Tabellen
Hallo MCOP2001DE,
es sieht so aus, dass Access den Aliasnamen (A) für die Tabelle E_Anlagentyp nicht mag. Möglicherweise hat Microsoft da mal wieder ein spezielles feature, aber mit Access Besonderheiten von SQL kenne ich mich nicht aus. Da sollte einmal jemand anders drüberschauen. Sowohl Local SQL als auch Firebird kommen mit dem SQL Statement klar. |
Re: Datensuche mit mehreren Tabellen
Hallo MCOP2001DE,
ich habe gerade noch einmal in unserem Forum gesucht und ![]()
SQL-Code:
SELECT * FROM (E_Anlagentyp A LEFT JOIN Zuordnung Z ON Z.Anlagentyp_ID=A.Anlagentyp_ID)
LEFT JOIN Ersatzteile E ON Z.Ersatzteil_ID=E.Ersatzteil_ID WHERE A.Anlagentyp_ID= :Anlagentyp_ID |
Re: Datensuche mit mehreren Tabellen
Hallo MrSpock
Danke erstmal für deine Hilfe. Das mit der Abfrage schient zu klappen aber ich bekomme jetzt die Meldung das der Parameter Anlagentyp_ID nicht gefunden wird.Dieser ist aber als Parameter in der Lister der Parameters für den Query eingetragen. Hast du ne Ahnung was das jetzt wieder sein kann? MCOP2001DE |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 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-2025 by Thomas Breitkreuz