abhängige Kombinationsfelder VBA Accsess

Guten Morgen,
ich habe ein Problem mit VBA.
Ich habe 2 Kombinationfelder. Das zweite ist vom Ersten abhängig.
Folgender Code funktioniert aber nur einmal:

Private Sub cboneuRegion_AfterUpdate()
LandA
End Sub

Private Sub LandA()
Me!cboneuLand.RowSource = "SELECT IDLand,Land " & "FROM tblLand WHERE FKRegion = " & Nz(Me!cboneuRegion, 0)
End Sub

Wenn ich das Formular schließe und wieder öffne geht es nicht mehr.

Ich hoffe mir kann jemand weiterhelfen

Vielen Dank schon mal

Schöne Grüße

Franz

Hallo Franz,
wenn du das Formular neu öffnest, steht dann die neue Region schon drin?
Oder anders: womit füllst du die Combobox beim Laden des Formulars?
Du solltest alle Comboboxen und alle Felder beim Laden des/eines Formulares mit Werten initialisieren.
Dein Ereignis AfterUpdate wird nur ausgelöst, wenn der Inhalt geändert wurde.
Ich hoffe dir geholfen zu haben?
Viel Erfolg
Manfred

Hallo Franz,

warum so umständlich?
Wenn ich Dich richtig verstanden habe, möchtest Du im zweiten Kombinationsfeld nur Werte zur Auswahl haben, die zum ausgewählten Wert des ersten Feldes passen,
kurz, Du wählst im ersten Feld das Land, im zweiten die Region.
Hierzu brauchst Du gar kein VBA.
Du hast sicher in beiden Kombifeldern eine ID, die das Land identifiziert.
Wenn Du bei der Datenherkunft des zweiten Kombi-Feldes bei der IDLand als Kriterium „=[Kombifeld_1]![ID_Land]“ einträgst, so hast Du nach der Auswahl des Landes im zweiten
Kombifeld nur die dazu passenden Regionen zur Auswahl…

Sollte ich etwas falsch verstanden haben, bitte noch mal melden.

Gruß
Uli

Hallo Uli,
danke erstmal, schön das es auch einfach geht.

Habe jetzt im zweiten Kombifeld bei der Datensatzherkunft folgendes drinstehen:

SELECT IDLand, Land FROM tblLand WHERE FKRegion=cboRegion;

Dies Funktioniert nach dem öffnen des Formulars einmal.
Wenn ich dann nochmals die Region wechsle bleibt cboLand unverändert.

Ich hoffe du kannst mir nochmals weiterhelfen

Gruß

Franz

Hallo,

Ich kann den Fehler nicht nachvollziehen!
Bei mir funktioniert das ganze.
Mit welcher Version von ACCESS arbeitest du?
evtl eine Sicherheitseinstellung die den VBA Code nicht mehr zulässt?
Wenn du mir deine E-Mail Adresse mitteilst schicke ich
Meine Datenbank in der das ganze funktioniert.

Frank Lentes
www.lentes-dsl.de

Hallo Franz,

ich glaube, ich verstehe Dich doch nicht ganz.
Also nochmal ganz langsam…

  1. Im ersten Feld hast Du die Länder hinterlegt, im zweiten Feld die Regionen, richtig?
  2. Nun wählst Du im ersten Feld ein Land aus.
  3. Im Anschluß daran sollen im zweiten Feld nur die Regionen des ausgewählten Landes zur Verfügung stehen, oder soll das Ganze umgekehrt funktionieren?

zum Formular:

Kombi-Feld Laender:
SELECT Laender.IDLand, Laender.Land FROM Laender;

Kombi-Feld Region:
SELECT Region.IDRegion, Region.IDLand, Region.Region FROM Region WHERE (((Region.IDLand)=[Formulare]![Dein_Formular]![IDLand]));

Im Beispiel heiß das erste Konbi-Feld ‚IDLand‘
(Das Feld IDRegion ist nicht zwingend - je nachdem, was Du noch vor hast…)

noch was:
Beide Tabellen stehen wie folgt in Beziehung:
Tabelle Laender - Feld IDLand Tabelle Region - Feld IDLand

Sollte es wieder nicht funktionieren, müßtest Du mir halt die Datenbank mal mailen…

Gruß
Uli

Hallo Franz,

ich glaube, ich verstehe Dich doch nicht ganz.
Also nochmal ganz langsam…

  1. Im ersten Feld hast Du die Länder hinterlegt, im zweiten
    Feld die Regionen, richtig?
  2. Nun wählst Du im ersten Feld ein Land aus.
  3. Im Anschluß daran sollen im zweiten Feld nur die Regionen
    des ausgewählten Landes zur Verfügung stehen, oder soll das
    Ganze umgekehrt funktionieren?

DAS GANZE SOLL UMGEKEHRT FUNKTIONIEREN

zum Formular:

Kombi-Feld Laender:
SELECT Laender.IDLand, Laender.Land FROM Laender;

Kombi-Feld Region:
SELECT Region.IDRegion, Region.IDLand, Region.Region FROM
Region WHERE
(((Region.IDLand)=[Formulare]![Dein_Formular]![IDLand]));

Im Beispiel heiß das erste Konbi-Feld ‚IDLand‘
(Das Feld IDRegion ist nicht zwingend - je nachdem, was Du
noch vor hast…)

noch was:
Beide Tabellen stehen wie folgt in Beziehung:
Tabelle Laender - Feld IDLand Tabelle Region - Feld IDLand

Tabelle Region Feld IDRegion 1:N (mit referentieller Integrität) Tabelle Land Feld FKRegion

Sollte es wieder nicht funktionieren, müßtest Du mir halt die
Datenbank mal mailen…

FUNKTIONIERT NUR BEIM ERSTEN MAL. WENN ICH ABER NOCHMALS DAS ERSTE KOMBIFELD ÄNDERE BLEIBT DAS 2. KOMBIFELD UNVERÄNDERT.

Gruß
Uli

Hallo Franz,

hm, bei mir hat das funktioniert…

Aber hier noch eine andere Möglichkeit (nun mit VBA):

  • Entferne erst einmal die WHERE-Klausel aus der Datensatzherkunft des Kombi-Feldes.
    Datenherkunft (SQL) für beide Felder sieht dann etwa so aus:
    SELECT Laender.IDLand, Laender.Land FROM Laender;
    SELECT Region.IDLand, Region.Region FROM Region;

  • Beim Feld Region gibst Du bei „Nach Aktuzalisierung“ folgenden Code ein.
    Me!Land = Me!Region
    In beiden Feldern muss an erster Stelle (Datenherkunft) der Wert ‚IDLand‘ stehen.
    Ist dies nicht der Fall, so musst Du auf die entsprechende Spalte verweisen - etwa so:
    Me!Land = Me!Region.column(1) (=Nummer der Spalte - Spalte 1 = 0 !! etc.)

Ich habe das eben selbst ausprobiert. Auch das funktioniert bei mir.

Gruß
Uli

Hallo Uli,

da es immer noch nicht funktioniert, würde ich dir gerne die DB schicken, finde aber deine e-mail Adresse nicht.

Würde mich freuen wenn das irgendwie klappt.

Gruß
Franz

[email protected]

Hallo

Vielen Dank erstmal an alle für die schnelle Hilfe.

Ich habe es jetzt einfach über ein Makro gemacht.

1.Kombifeld: Bei Änderung -->Makro --> Daten Aktualisieren

Gruß

Franz

Hallo Franz,
ich bin leider im Moment auf einer längeren Dienstreise und haben kein Access hier, wo ich das mal nachstellen könnte. Daher kann ich hier kurzfristig nicht weiterhelfen.
Grüße
achim

Hallo Franz,
kann Dir leider nicht helfen.
LG Angelika

Hallo Franz,
sorry, dass ich mich so spät melde - ich war ein paar Tage weg.
Aber es tut mir leid, ich kann dir auch nicht helfen.

Viel Erfolg, Susanne.

Hallo Franz habe vielleicht was für dich gefunden schicke mir doch deine mail damit ichs dir zumailen kann
Gruß Horst

Hallo,

entschuldige bitte, dass ich dir erst jetzt antworte aber der Beruf forderte mich in letzter Zeit etwas mehr…

Leider kann ich dir hier nicht helfen

Grüße

Sascha