MS-ACCESS2000-Kombinationsfeld aktualisieren

Hallo!

Ich habe folgendes Problem:
In einem Unterformular (Datenblattansicht) wird ein Kombinationsfeld unter der Eigenschaft „Datensatzherkunft“ mit einer SELECT…FROM…WHERE…; Anweisung gefüllt. Das funktioniert auch.

Aber: Wenn ich im Hauptformular den Datensatz wechsle, ändert sich auch das Textfeld auf dem Hauptforumlar mit der Angabe für die …WHERE -Anweisung. Der Inhalt des Kombinationsfeldes im Unterformular jedoch nicht, es bleiben die Werte des ersten Datensatzes drin.

Was ist falsch?

Danke für die Hilfe & Gruß,
Markus

Hallo Markus

In einem Unterformular (Datenblattansicht) wird ein
Kombinationsfeld unter der Eigenschaft „Datensatzherkunft“ mit
einer SELECT…FROM…WHERE…; Anweisung gefüllt. Das
funktioniert auch.

Heisst das, der Inhalt der Liste ändert, wenn auch der Datensatz im „Hauptformular“ ändert? Oder ändert der angezeigte Wert aber die Liste nicht (s.u.)?

Aber: Wenn ich im Hauptformular den Datensatz wechsle, ändert
sich auch das Textfeld auf dem Hauptforumlar mit der Angabe
für die …WHERE -Anweisung.

Du referenzierst also ein Feld des „Hauptformulars“ in der Where-Klausel der Datenherkunft des Kombinationsfeldes im Unterformular?

Der Inhalt des Kombinationsfeldes
im Unterformular jedoch nicht, es bleiben die Werte des ersten
Datensatzes drin.

Welchen Inhalt meinst du? Ein Kombinationsfeld - wie der Name schon sagt - kombiniert zwei „Felder“: Ein Textfeld und eine Liste. Also, welcher Inhalt ändert resp. ändert sich nicht analog zum „Hauptformular“: die Liste und/oder das Textfeld?

Was ist falsch?

Vermutung: Das Kombinationsfeld ist „ungebunden“, sprich: in der Eigenschaft „ControlSource (Steuerelementinhalt)“ ist nicht der Name des zugehörigen Attributes aus der Datenherkunft des Unterfomulares eingetragen. Dagegen spricht aber, dass du schreibst, das Feld enthielte den Wert des ersten Datensatzes. Das müsste dann nämlich auch beim ersten Datensatz leer sein?!

Gruss
Peter

Tach Peter,

ich versuche es nochmal ganz neu zu erklären.

Ich habe:
Ein Hauptformular, basierend auf einer Tabelle; ganz normal.
Auf diesem Hauptformular befinden sich u.a. ein gebundenes Textfeld,
es heißt „txtWzgNr“. Der Inhalt ändert sich natürlich, wenn ich den Datensatz wechsle; auch ganz normal.
Weiter habe ich auf dem Hauptformular ein Unterformular, gebunden an eine zweite Tabelle. In diesem Unterformular (Datenblattansicht) habe ich ein Kombinationsfeld, und die Listenvorschläge werden mittels SELECT…FROM…WHERE-Anweisung gefüllt. Es sollen in dem Unterformular-Kombi-Feld alle Datensätze aus der 2. Tabelle aufgelistet werden, die mit dem Wert in „txtWzgNr“ übereinstimmen.
Das funktioniert auch einwandfrei; ganz normal.

Aber: Der Inhalt in der Kombi-Feld-Liste bleibt bei dem Inhalt, der beim 1. Datensatz angezeigt wurde, wird also beim Datensatzwechsel nicht aktualisiert.

So besser erklärt?

Gruß, Markus

Hallo Markus

ich versuche es nochmal ganz neu zu erklären.

Das ist nett von dir…

Weiter habe ich auf dem Hauptformular ein Unterformular,
gebunden an eine zweite Tabelle.

Aber Haupt- und Unterformular sind nicht „verknüpft“? Wenn das so ist, dann scheint mir hier „der Hund begraben“…

Das funktioniert auch einwandfrei; ganz normal.

Das funktioniert doch genau nicht, oder? Heisst denn „einwandfrei“ für dich: es ist gut, wenn es für den ersten Datensatz (im Hauptformular) funktioniert?! Ich glaube kaum…

So besser erklärt?

Ja, besser.
Aber für mich immer noch nicht gut genug… du musst entschuldigen, ich bin Informatiker, da gibt’s nur Null oder Eins :smile:

Jetzt aber zum „begrabenen Hund“ von oben.
Wie selbstverständlich (wieso, weiss ich jetzt auch nicht mehr) bin ich davon ausgegangen, dass es zwischen Haupt- und Unterformular eine „Beziehung“ - definiert durch die „LinkChildFields, LinkMasterFields (VerknüpfenVon, VerknüpfenNach)“-Eigenschaften des Unterfomulares - gibt. Diese scheint mir (ich nehme dies an, deine Erklärung lässt dies offen) nicht definiert zu sein. Eine solche „Beziehung“ sorgt dafür, dass abhängige Daten im Unterformular aktualisiert werden. Ohne diese „Beziehung“ musst du das selbst machen. Dafür bietet sich das „Current (Anzeigen)“-Ereignis des Hauptformulars an. Also z.B. so:

Private Sub Form\_Current()
 
Me!Unterformular!Kombinationsfeld.Requery
 
End Sub

Gruss
Peter

1 Like

Hi allerseits,

ich vermute das da noch etwas fehlt, ausser der „Form_Current“ Methode.

Je nach dem wie das Select…From…Where hinter dem Kombinationsfeld aussieht.

Vieleicht versuchst du mal in der Form_Current Methode des Unterformulars das SQL-Statement jedesmal neu aufzubauen :

==================================
Dim sqlString as String

sqlString = "Select F2,F3,F5 from tabelle1 where wkzNr = " & me!parent!txtWkzNr

combiBox.Rowsource = sqlString

==========================================

Hope this helps
Peter

1 Like

Guten morgen Peter,

Aber Haupt- und Unterformular sind nicht „verknüpft“? Wenn das
so ist, dann scheint mir hier „der Hund begraben“…

Für die Tabellen sind 1----oo Beziehungen gesetzt, auch Haupt- und Unterformular sind mittels „Verknüpfen von/nach“ miteinander verknüpft.

Der Inhalt des Unterformulars wird ja auch mit Datensatzwechsel aktualisiert. Nur eben die Liste im Kombinationsfeld im Unterformular nicht.

Danke & Gruß,
Markus

Danke Peter und Peter!
Beide Möglichkeiten funktionieren :smile:
2x *chen!
Gruß, Markus