Abhängige Kombinationsfelder

Hallo!

Auf einem Formular habe ich drei Kombinationsfelder, die voneinander abhängig sind (also Feld 2 von Feld 1 und Feld 3 von Feld 2). Die Auswahl der einzelnen Werte funktioniert einwandfrei, auch das Speichern in die Datenbank.

Das Problem ist folgendes:
wenn ich einen neuen Datensatz hinzufüge und mir dann die alten Datensätze anzeigen lassen will, sind die Kombinationsfelder außer dem ersten leer! Wenn ich allerdings das Formular schließe und wieder neu öffne, wird alles korrekt angezeigt, der Fehler tritt nur auf, wenn man einen neuen Datensatz hinzugefügt hat! Wodran kann das liegen?

Die Abhängigkeit der Felder wird über einen Code hergestellt, der nach dem Update eines Feldes ausgeführt wird, z.B. für Feld 2:

Private Sub Feld\_Kat2\_AfterUpdate()

Me!Feld\_Kat3.RowSource = "SELECT ID, Bezeichnung " \_
& "FROM Kategorie3 " \_
& "WHERE (((Kategorie3.Kat2) = " & Me.ActiveControl & "));"
Me!Feld\_Kat3.Requery

End Sub

Ich verwende Access 2K (9.0.2812) auf Win NT 4.0 SP6a

Vielen Dank im Voraus!

Hallo.

Das Problem ist folgendes:
wenn ich einen neuen Datensatz hinzufüge und mir dann die
alten Datensätze anzeigen lassen will, sind die
Kombinationsfelder außer dem ersten leer! Wenn ich allerdings
das Formular schließe und wieder neu öffne, wird alles korrekt
angezeigt, der Fehler tritt nur auf, wenn man einen neuen
Datensatz hinzugefügt hat! Wodran kann das liegen?

Das ist - ausnahmsweise - völlig logisch. Schauen wir uns mal die RowSource für jedes Kombofeld einzeln an :

  1. Kombo1:SELECT schlüssel1,feld1 FROM tabelle1;
  2. Kombo2:SELECT schlüssel2,feld2 FROM tabelle2 WHERE tabelle2.feld1=Kombo1;
  3. Kombo3:SELECT schlüssel3,feld3 FROM tabelle3 WHERE tabelle3.feld2=Kombo2;

Das bedeutet, dass beim Anzeigen eines neuen Datensatzes der schlüssel1 auf 0 bzw. NULL steht. Damit liefern die SELECTs für kombo2 und Kombo3 natürlich auch NULL. Verhindern könntest Du das

  • durch Vergabe eines Standardwertes für Kombo1 und Kombo2

  • oder eleganter mit einer Prozedur BeforeInsert, in der Du die RowSourcen auf die jeweils komplette Datenquelle setzest (also ohne die WHERE- Klauseln für Kombo2 und Kombo3). Dann musst Du natürlich wieder in Kombo1_AfterUpdate die RowSource für Kombo2 neu einstellen …

Gruß Eillicht zu Vensre

Hallo!

Das bedeutet, dass beim Anzeigen eines neuen Datensatzes der
schlüssel1 auf 0 bzw. NULL steht. Damit liefern die SELECTs
für kombo2 und Kombo3 natürlich auch NULL.

Ja, das klingt logisch!

Verhindern könntest Du dasdurch Vergabe eines Standardwertes für Kombo1
und Kombo2

Das funktioniert net so wirklich, die Kombinationsfelder der schon vorhandenen Datensätze werden trotzdem nicht angezeigt

oder eleganter mit einer Prozedur
BeforeInsert, in der Du die RowSourcen auf die jeweils
komplette Datenquelle setzest (also ohne die WHERE- Klauseln
für Kombo2 und Kombo3). Dann musst Du natürlich wieder in
Kombo1_AfterUpdate die RowSource für Kombo2 neu einstellen

Wo / wie muss ich die Prozedur BeforeInsert implementieren (hab net so sehr viel Ahnung von Access…)?

Danke!

Die Frage hat sich erledigt! -->

oder eleganter mit einer Prozedur
BeforeInsert, in der Du die RowSourcen auf die jeweils
komplette Datenquelle setzest (also ohne die WHERE- Klauseln
für Kombo2 und Kombo3). Dann musst Du natürlich wieder in
Kombo1_AfterUpdate die RowSource für Kombo2 neu einstellen

Wo / wie muss ich die Prozedur BeforeInsert implementieren
(hab net so sehr viel Ahnung von Access…)?

Habe das nicht mit der Prozedur BeforeInsert realisiert, sondern mit Form_Current(), die jedes Mal beim Öffnen eines (neuen) Datensatzes aufgerufen wird.
Funktioniert jedenfalls jetzt!! :smile: