Startwert im Kombinationsfeld anzeigen

Liebe ExpertInnen,

ich baue für ein Kombinationsfeld eine Rowsource mit einem Auswahlkriterium auf und möchte, dass der erste Wert im Kombinationsfeld gezeigt wird. Schaff ich aber nicht, das Feld bleibt leer.

Rowsource ist geprüft, wenn ich das Feld aufklappe, sehe ich genau die richtige Untermenge. Und jetzt beim Verifizieren fällt mir auf, dass nach dem Wählen nicht der ausgewählte Wert erscheint, sondern der erste aus der Treffermenge. Also gleich zwei Fehler :frowning:

Kann das damit zu tun haben, dass die Rowsource eine View ist, die natürlich keinen Schlüssel hat? Wer weiß was?

Gruß Ralf

Hallo Ralf,

ich baue für ein Kombinationsfeld eine Rowsource mit einem
Auswahlkriterium auf und möchte, dass der erste Wert im
Kombinationsfeld gezeigt wird. Schaff ich aber nicht, das Feld
bleibt leer.

dann hast du wohl Me.Kombifeld.requery vergessen?

Rowsource ist geprüft, wenn ich das Feld aufklappe, sehe ich
genau die richtige Untermenge. Und jetzt beim Verifizieren
fällt mir auf, dass nach dem Wählen nicht der ausgewählte Wert
erscheint, sondern der erste aus der Treffermenge. Also gleich
zwei Fehler :frowning:

dann hast du wohl Me.Kombifeld.requery vergessen?

Kann das damit zu tun haben, dass die Rowsource eine View ist,
die natürlich keinen Schlüssel hat?

nö, das hat damit nichts zu tun!

Du setzt die Rowsource dynamisch per VBA, ohne anschließend ein Requery durchzuführen, dadurch erhälst du falsche Daten im KombiFeld des Formulars, weil dort immer noch die alte Ansicht sichtbar ist.

Wer weiß was?

ich :smile:

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Moin, Wolfgang,

Du setzt die Rowsource dynamisch per VBA, ohne anschließend
ein Requery durchzuführen

eben doch, das ist ja das Verhexte daran.

dadurch erhälst du falsche Daten im KombiFeld des Formulars,
weil dort immer noch die alte Ansicht sichtbar ist.

Wer weiß was?

ich :smile:

Hm. Hier der Code für das Form:

Option Compare Database
Option Explicit
 Dim Sqlstring As String

Private Sub Form\_Load()
 Disziplin = 1
 Call Disziplin\_Change
End Sub

Private Sub Disziplin\_Change()

 Sqlstring = "select Teilnehmer, Schütze, genullt, disziplin " & \_ 
 "from VM\_genullt " & \_
 "where disziplin = " & Disziplin
 Me!Schütze.Rowsource = Sqlstring
 Me!Schütze.Requery
End Sub

Disziplin ist das Feld für die Mengeneinschränkung, Schütze mein Problemkind. Und nun?

Was mich aber viel mehr beunruhigt, ist, dass ich auf Schütze nicht positionieren kann. Wenn ich einen auswähle, bekomme ich immer den ersten aus der Teilmenge gezeigt.

Gruß Ralf

Hallo,

„und möchte, dass der erste Wert im Kombinationsfeld gezeigt wird.“

Private Sub Form_Load()
Disziplin = 1 'was ist hier „Disziplin“?
Call Disziplin_Change
Me!Schütze=Me!Schütze.Column(0,0)
End Sub

falls das Kombi „standardmäßige“ Eigenschaften hat.

Das Requery kannst Du weglassen, das passiert beim Zuweisen eines SQL_Strings automatisch.

Insgesamt bräuchte man nur dieses (lt. Deinem Ausgangscode):

Option Compare Database
Option Explicit

Private Sub Form_Load()
Me!Schütze.Rowsource = "select Teilnehmer, Schütze, genullt, disziplin " & _
"from VM_genullt " & _
„where disziplin = 1“
Me!Schütze=Me!Schütze.Column(0,0)
End Sub

Moin Moin Ralf,

Option Compare Database
Option Explicit

Private Sub Form_Load()
Dim Sqlstring As String

immer alle DIM Anweisungen ins SUB

Disziplin = 1
Call Disziplin_Change

auch CALL kannst du dir sparen

End Sub

Private Sub Disziplin_Change()

Sqlstring = "select Teilnehmer, Schütze, genullt,
disziplin " & _
"from VM_genullt " & _
"where disziplin = " & Disziplin
Me!Schütze.Rowsource = Sqlstring
Me!Schütze.Requery
End Sub

Disziplin ist das Feld für die Mengeneinschränkung, Schütze
mein Problemkind. Und nun?

Option Compare Database
Option Explicit

meine Variante:

Private Sub Form_Load()
Dim Sqlstring As String

Sqlstring = „select Teilnehmer, Schütze, genullt,
disziplin from VM_genullt " & _
where disziplin = 1“

Me!X_Schütze.Rowsource = Sqlstring
Me!X_Schütze.Requery

End Sub

Was mich aber viel mehr beunruhigt, ist, dass ich auf Schütze
nicht positionieren kann. Wenn ich einen auswähle, bekomme ich
immer den ersten aus der Teilmenge gezeigt.

ich vermute mal, dass das Formular auch auf VM_genullt basiert?
D.h. du versuchst eine rekursive Funktion aufgerufen. Ist die Anzeige im Formular abhängig von der Auswahl im Kombifeld Schütze?

Das Feld Schütze ist in beiden Rowsourcen vorhanden und führt so zu Problemen. In meinem Beispiel habe ich das Formularfeld entsprechend umbenannt.

Grüße aus Schönberg (Lübeck)
Wolfgang
(Netwolf)

Moin, Wolfgang,

ich vermute mal, dass das Formular auch auf VM_genullt
basiert?

nein, das Formular setzt auf der Tabelle Disziplin auf.

habe ich das Formularfeld entsprechend umbenannt.

hatte ich auch schon, allerdings ohne Auswirkung. Hätte mich auch gewundert - zwischen Columns und Controls kann Access sehr wohl unterscheiden.

Ich rätsele immer noch, warum ich nur den ersten aus der Teilmenge picken kann, obwohl alle angezeigt werden.

Gruß Ralf

Asche auf mein Haupt - ein Tippfehler
Tut mir leid, dass ich Euch mit sowas geplagt habe - bei „gebundene Spalte“ ist mir der Finger verrutscht. Nur gut, dass ich beißfeste Tischkanten habe.

Danke fürs Zuhören!
Gruß Ralf