Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: nimora am Mai 24, 2016, 10:51:19

Titel: Laufzeitfehler 3079 - Filtern im Formular
Beitrag von: nimora am Mai 24, 2016, 10:51:19
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
Titel: Re: Laufzeitfehler 3079 - Feltern im Formular
Beitrag von: MaggieMay am Mai 24, 2016, 11:19:05
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
Titel: Re: Laufzeitfehler 3079 - Feltern im Formular
Beitrag von: nimora am Mai 24, 2016, 11:43:31
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?
Titel: Re: Laufzeitfehler 3079 - Feltern im Formular
Beitrag von: MaggieMay am Mai 24, 2016, 11:49:33
Ich würde sagen, Aliasnamen dienen meist der Vereinfachung, und in deinem Fall der Eindeutigkeit der Feldnamen.
Titel: Re: Laufzeitfehler 3079 - Feltern im Formular
Beitrag von: nimora am Mai 24, 2016, 12:08:43
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?
Titel: Re: Laufzeitfehler 3079 - Feltern im Formular
Beitrag von: MaggieMay am Mai 24, 2016, 12:38:38
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.
Titel: Re: Laufzeitfehler 3079 - Filtern im Formular
Beitrag von: nimora am Mai 30, 2016, 17:59:02
Vielen Dank