Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Listenfeld-Einträge anhand eines Kriteriums aus Tabelle filtern: Wo is d Fehler?

Begonnen von Namenlos, Juli 11, 2016, 20:54:04

⏪ vorheriges - nächstes ⏩

Namenlos

Hallo zusammen,
als Neuer im Forum erstmal ein freundliches 'Hallo' an alle. Bin durch Google auf das Board aufmerksam geworden... Scheint eine sehr aktive Community hier zu sein. Hoffe, dass ich mich neben meinen Fragen auch mal hinsichtlich dem ein oder anderen Thema einbringen kann.
Heute aber zunächst mal eine Frage ;) Ich stehe vor einem größeren Access Projekt (zur Ablöse einer Excel Liste... wie so oft).
Bei folgendem Schritt habe ich derzeit Probleme:
Aus einem Listenfeld "Projektinhaber" in einem Formular wird einVorname ausgewählt. Im nächsten Schritt sollen im Listenfeld "Projektbezeichnung" alle Projekte vom Projektinhaber zur Auswahl gestellt werden. Die Daten liegen in einer Tabelle in folgender Darstellung.
P_Inh; P_Bez
Otto; Haus
Otto; Garten
Peter; Haus
Peter; Teich
Hans; Garten
Nach Auswahl (Aktualisieren) des Projektinhabers habe ich folgenden VBA-Code hinterlegt:
Me.Projektbezeichnung.RowSource = "SELECT [P_Bez] WHERE [P_Inh] =' " & Me.Projektinhaber.Value & " '
Als Wert bekomme ich im Listenfeld: SELECT [P_Bez] WHERE [P_Inh]
Wo ist der Fehler?
Im Voraus vielen Dank!
Beste Grüße
Rudi

MzKlMu

Hallo,
so:
Me.Projektbezeichnung.RowSource = "SELECT [P_Bez] WHERE [P_Inh] ='" & Me.Projektinhaber.Value & "'"Leerzeichen zu viel und kein schließendes ".
Das Vorhaben ist grundsätzlich fragwürdig, da in dieser Tabelle kene echten Werte stehen sollten, sondern nur Schlüsselzahlen, wie das bei einer Datenbank üblich ist. Für das gezeigte Vorhaben sind 3 Tabellen notwendig.
Gruß Klaus

Namenlos

Hi Klaus,
Danke für deine Antwort.
Ok... Der Hinweis ist gut.
Drei Tabellen in etwa so?
1.)
P_Inh_ID (als Schlüssel)
P_Inh (Vorname)
2.)
P_Bez_ID (als Schlüssel)
P_Bez (Bezeichnung)
3.)
P_Bez_ID
P_Inh_ID

Danke! Gruß
Rudi

Beaker s.a.

Hallo Rudi,
Ich würde der 3. Tabelle auch noch einen PK gönnen.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Lachtaube

Zitat von: Beaker s.a.Ich würde der 3. Tabelle auch noch einen PK gönnen.

welcher Nachteil wäre zu erwarten, wenn das unterbleibt?
Grüße von der (⌒▽⌒)

Beaker s.a.

Keine Ahnung, wohl aus Gewohnheit/Vorliebe (verwende lieber einen "normalen" PK).
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

Hallo,
ich verwende auch immer einen extra PK. Zusammengesetzte PK sind mir zuwider. Mit einem einfachen PK habe ich mit einem Feld einen eindeutigen Bezug, was vieles im weiteren Verlauf vereinfacht.
Es entspricht glaube ich nicht der reinen Lehre, was mich nicht hindert es trotzdem so zu machen.
Weitere Hinweis sind hier zu finden:
https://de.wikipedia.org/wiki/Surrogatschl%C3%BCssel

Weiter unten im obigen Link finden sich noch weitere Artikel.
Gruß Klaus

Lachtaube

Ich verwende auch Surrogat-Schlüssel - aber normalerweise dort, wo sie auch weiter verwendet werden.

Bei einer Assoziationstabelle fände ich es lehrreicher, dem Fragesteller mitzuteilen, dass beide Fremdschlüsselfelder Pflichfelder sein sollten, und dass eine Unique Constraint über beide Schlüsselfelder angelegt werden soll, um Anomalien im Tabelleninhalt auszuschließen, als einen Surrogatschlüssel einzufordern, der die beiden zuvor genannten Aspekte völlig außer Acht lässt.
Grüße von der (⌒▽⌒)

Namenlos

Wow. Vielen Dank für die zahlreichen Antworten! Also mache ich es jetzt wie vorgeschlagen über drei Tabellen. Wie würde in den Fall der VBA Code für das Vorhaben aussehen?

MzKlMu

Hallo,
beschreibe erst mal genau das Ziel des Vorhabens.
Wozu brauchst Du hier ein Listenfeld ?
Gruß Klaus

Beaker s.a.

Hallo Lachtaube,
Zitatfände ich es lehrreicher, dem Fragesteller mitzuteilen, dass beide Fremdschlüsselfelder Pflichfelder sein sollten, und dass eine Unique Constraint über beide Schlüsselfelder angelegt werden soll
Im Kopf hatte ich das, aber um die Uhrzeit...
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

Namenlos

Guten Abend miteinander,
also die 3 Tabellen habe ich mit zwei Primärschlüsseln angelegt.
Ziel ist es, durch einen Vorfilter/Vorauswahl "Projektinhaber" einen Filter nach "Projektbezeichnungen" bzw. vielmehr Projekttypen (Garten, Haus, Teich etc.) anzulegen. Diese sollen nach Auswahl des Projektinhabers in einem Listenfeld erscheinen. Aus diesem Listenfeld sollen durch Anklicken, Einträge in einem Filter (Modulfunktion) übernommen werden.
Mein Problem ist jetzt lediglich das 'Füllen' des Listenfelds mit den spezifischen Einträgen. SELECT mit lediglich einer Tabelle (siehe Eröffnung des Themas) ist geklärt. Nur wie gehe ich nun vor, wenn die Abfrage über verknüpfte Tabellen erfolgt? Das stellt für mich Neuland dar... Läuft das auch über SELECT?
Hoffe das ist nicht all zu viel Code bzw. zu kompliziert und wäre sehr dankbar, falls jemand mal paar Fraktale als Denkansporn liefern könnte.
Also, erstmal Danke im Voraus für alles was kommt und eine gute Nacht.
Beste Grüße
Rudi


MzKlMu

Hallo,
Zitatalso die 3 Tabellen habe ich mit zwei Primärschlüsseln angelegt.
Deine Beschreibung ist jetzt gerade etwas verwirrend. Du brauchst 3 Tabellen, die 2 Tabellen der 1-Seite je einen Primärschlüssel und in der 3.Tabelle die beiden Fremdschlüssel. Zeige bitte mal ein Bild des Beziehungsfensters, es muss erst geklärt werden ob das richtig ist.
Gruß Klaus


Lachtaube

Hier ein Beispiel mit 2 Listenfeldern und einem Formularparameter.

Der Tabelle ProjektInhaber im Beispiel wird man wie von Ekkeharrd + Klaus angedeutet einen Primärschlüssel spendieren, wenn eine Realtion zu anderen Tabellen hergestellt werden soll.
Grüße von der (⌒▽⌒)