Grundsätzliche Frage
Hallo,
ich habe schon einige Kleinigkeiten in Access erstelt aber zähle mich trotzdem zu den Anfängern.
Ich möchte in meiner Datenbank ( Access2007) folgendes einbauen.
Z.B. Thema Auto.
Ich hab je eine Tabelle mit Hersteller ( BMW, VW,Opel usw. ) und eine Tabelle mit Typen ( Golf, Omega, Passat usw.)
Nun hätte ich gerne ein Kombifeld gemacht mit dem ich z.B. VW auswähle, in einem anderen Feld dann automatisch alle Typen dieses Herstellers angezeigt werden. Also bei Opel dann eben nur Omega, Kadett, Vectra usw.
Leider kommt nur ein Model oder Typen aller Hersteller.
ISt da eine Abfrage oder so etwas nötig oder kann man das direkt über die Einstellungen zusammen klicken ?
Sicher ist es für euch recht simpel, aber ich stehe momentan auf dem Schlauch *g
*Threadedit* 08:13:24
Admininfo: Bitte beachte FAQ 2 für deine nächste Anfrage. Warum findest du hier diese Admininfo? Dein Subject ist schlecht gewählt, oder deine Problembeschreibung nicht informativ genug. Unser FAQ liefert dir dazu ergänzende Informationen.
Antwort schreiben
Antwort 1 von lleopard vom 11.09.2019, 13:25 Options
Hi Michel,
Grundsätzlich sollte das kein Problem sein. Nur geht es halt nicht direkt, soll heißen ohne Access zu sagen, daß du im Feld Typ auf den Hersteller filtern willst geht es nicht.
Also...
ich nehme an du hast die Hersteller in einem gebundenen Kombinationsfeld hinterlegt. Die bekommst du ja auch angezeigt.
Nun willst du in einem anderen KombiFeld nur noch die Typen sehen, die zu dem Hersteller gehören. Dafür müßtest du einfach im Entwurf des Kombifelds "Hersteller" in der Zeile "Nach Aktualisierung" den Wert auf Ereignisprozedur stellen und dann auf die ... 3 Punkte daneben klicken. Dann bist du im VBA-Editor. Der hat dir dann schon eine Subroutine vorbereitet. Irgendwas mit Sub Hersteller_AfterUpdate oder so.
Dort sagst du ihm nun was du willst:
Me!Typ.Rowsource = "Select * From Typ WHERE Typ.Hersteller ='" & Me!Hersteller.Value & "'
Me!Typ.Requery
Voraussetzung ist aber, daß du in der Tabelle Typ dann ein eindeutiges Feld (Hersteller?)hast, welches den Typ mit dem Hersteller verbindet. Du kannst auch einen AutoWert bei den Herstellern hinterlegen und diesen Wert jeweils den Typen zuordnen. Egal wie du es machst, es muß immer einen eindeutigen Schlüssel geben. Hier wäre es eine 1:n Beziehung. Denn es gibt einen Hersteller, der viele Typen verkauft...
Gruß Leo
Antwort 2 von Michel123 vom 11.09.2019, 21:09 Options
hi Leo,
erstmal danke für den promten Tip. Werde es gleich mal versuchen.
Aber das Feld wo dann die gefilterten Typen dann angezeigt werden... Ist dann ein Textfeld??
und mit welcher Herkunftdefinition???
grübel
Grüße Michel123
Antwort 3 von lleopard vom 12.09.2019, 07:58 Options
Hi Michel,
natürlich ist das dann kein Textfeld, wenn ein Listenfeld oder auch ein Kombinationsfeld.
Du willst ja schließlich mehrere Werte zuweisen und nicht nur einen.
Das Herkunftsobjekt definierst du wie oben beschrieben mit der Aktualisierung, wenn du einen Hersteller auswählst.
Gruß Leo
Antwort 4 von Michel123 vom 12.09.2019, 11:23 Options
aslo.... *g
In Tabelle Hersteller habe ich die Spalten:
1) ID,( ID 1-7 )
2) Hersteller, ( 7 Automarken Opel, V W usw....)
In Tabelle Typ sind 19 verschiedene Autotypen eingetragen.
1) ID, ( 1-19)
2) Typ ( 19 Autonamen Golf, Kadett usw..)
3) Hersteller
Die Beziehung ist, von Tabelle Hersteller / ID nach Tabelle Typ / Typ , eben eine 1:n Art
ich mache 2 Kombinationsfelder, beider versehe ich mit dem VB Eintrag.... unter " nach Aktuakisierung"
Me!Typ.Rowsource = "Select * From Typ WHERE Typ.Hersteller ='" & Me!Hersteller.Value & "'
Me!Typ.Requery
Aber es werden entweder alle Typen angezeigt oder ein leeres Feld.
Antwort 5 von lleopard vom 13.09.2019, 08:03 Options
Hi Michel,
is ja zum Verzweifeln mit dir:
Zitat:
ich mache 2 Kombinationsfelder, beider versehe ich mit dem VB Eintrag.... unter " nach Aktuakisierung"
Falsch!
Wenn du in deinem Formular einen Hersteller ausgesucht hast, dann soll die Auflistung in Typ nur die KFZ-Typen dieses Herstellers anzeigen. Dafür darf als Rowsource-Zuweisung nur dem Kombinationsfeld Hersteller nach Aktualisierung gesagt werden, daß er die Einträge bei Typ auf die Fahrzeuge dieses Hersteller eingrenzen soll.
Is das so schwieirg???? :-D
Gruß Leo
Antwort 6 von Michel123 vom 13.09.2019, 21:49 Options
Sorry wenn ich dir etwas Streß mache, aber wenn ich Profi wäre wie du vielleicht dann hätte ich hier nicht den Thread eröffnet.
das hab ich ja nu korrigiert., hilfreich wäre aber auch die Angaben / Verknüpfungen in den Kombifeldern... Steuerelementinhalt,Datensatzherkunft usw. weil mir ist halt deren Bezug untereinander nicht klar. Ich wills ja auch möglichst verstehn.
:-)
Gruß Micha
Antwort 7 von RalfH vom 14.09.2019, 11:01 Options
Hallo Michael,
Was leo Dir in Antwort 1 beschrieben hat, ist schon das was Du brauchst.
Zitat:
Me!Typ.Rowsource = "Select * From Typ WHERE Typ.Hersteller ='" & Me!Hersteller.Value & "'
Me!Typ.Requery
Das bedeutet:
Das Kombifeld Typ bekommt hier eine Bezugquelle zugewiesen von Tabelle Typ, wenn Datensätze entsprechend dem gewählten Herstellers aus Kombifeld Hersteller vorhanden sind.
Me!Typ.Requery
Hiermit wird das Kombifeld aktualisiert, sodas die entsprechenden Daten sofort zu verfügung stehen.
Gruß Ralf