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
			
			
			
				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.
			
			
			
				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
			
			
			
				Hallo Rudi,
Ich würde der 3. Tabelle auch noch einen PK gönnen.
gruss ekkehard
			
			
			
				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?
			
 
			
			
				Keine Ahnung, wohl aus Gewohnheit/Vorliebe (verwende lieber einen "normalen" PK).
			
			
			
				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.
			
			
			
				Ich verwende auch Surrogat-Schlüssel - aber normalerweise dort, wo sie auch weiter verwendet werden.
Bei einer Assoziationstabelle (https://en.wikipedia.org/wiki/Associative_entity) 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.
			
			
			
				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?
			
			
			
				Hallo,
beschreibe erst mal genau das Ziel des Vorhabens.
Wozu brauchst Du hier ein Listenfeld ?
			
			
			
				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
			
 
			
			
				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
			
			
			
				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.
			
 
			
			
				Hi,
anbei die Aufstellung.
(https://dl.dropboxusercontent.com/u/23889116/tbl_ACC.PNG)
Gruß
Rudi
			
			
			
				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.
			
			
			
				Hallo zusammen,
vielen Dank für eure Hilfe!
@Lachtaube: Genau das habe ich gesucht. Vielen vielen Dank, das ist perfekt! Dann kann ich das jetzt erstmal implementieren. ::)
Gruß
Rudi