Hallo,
Ich möchte in einem Formular, welches auf einer Abfrage beruht einen eigenen Filterknopf nutzen.
SQL in der Abfrage:
SELECT tblKunden.*, tblProdukte.VerantIDRef
FROM tblKunden INNER JOIN tblProdukte ON tblKunden.ProduktIDRef = tblProdukte.ID;
der Filtercode:
Me.Filter = "tblProdukte.VerantIDRef = 19"
Me.FilterOn = True
Die Tabellen sind über die ID in tblProdukte mit einer RefID in tblKunden verknüpft.
Letztlich möchte ich mir im Formular alle Kunden anzeigen lassen, die Produkte eines bestimmten Produktverantwortlichen gekauft haben
Leider bekomme ich immer wieder den Laufzeitfehler 3079
Das angegebene Feld 'tblProdukte.VerantIDRef' kann sich auf mehre als eine der Tabellen beziehen, die im FROM-Abschnitt der SQL-Anweisungen angegeben werden. Ich hatte gedacht, dass das durch die vorangestellte Tabelle tblProdukt. geregelt würde. Scheinbar ist dem nicht so.
Was mache ich falsch? :(
Danke
Hallo,
sorge mit Hilfe von Aliasnamen für eindeutige Feldnamen in der Abfrage, das ist die sauberste Lösung.
BTW:
Bist du sicher, dass diese Verknüpfung korrekt ist:
tblKunden.VerantIDRef = tblProdukte.ID
Danke schön.
Das mit den Aliasnamen versuche ich gleich mal.
Zur Verknüpfung: evtl. ist die Namenswahl nicht gut. Es gibt bei den Kunden die Möglichkeit ein Produkt auszuwählen, daher die Verknüpfung mit der ProduktID. In der Tabelle tbl.Produkte ist wiederum eine RefID zu den Verantwortlichen, daher denke ich, dass es korrekt ist.
In der Abfrage an sich kommt es so, wie gewünscht und dort kann ich auch filtern. nur eben im Formular nicht.
Dienen die Aliase nur der Übersicht oder korrigieren sie auch einen inhaltlichen Fehler?
Ich würde sagen, Aliasnamen dienen meist der Vereinfachung, und in deinem Fall der Eindeutigkeit der Feldnamen.
hat auch funktioniert. :) vielen Dank.
dennoch die Verständnisfrage: warum wird der Feldname nicht akzeptiert, obwohl es diesen sowohl in der Tabelle, als auch in der ganzen db nur einmal gibt?
Wenn der Feldname eindeutig ist, musst du den Tabellennamen beim Filter weglassen.
An der Stelle weiß Access offenbar nicht, woher das Datenfeld kommt, da liegt nur das Ergebnis der Abfrage vor, nicht aber deren Code - zumindest wäre das eine Erklärung.
Vielen Dank