Supportnet / Forum / Datenbanken
sichtbarkeit von Kombi-Feldern per VBA
Frage
Ich habe zwei kombi-felder und ich möchte, dass das 2. erst sichtbar wird, wenn ein wert im ersten steht.
ich habe dieses problem mit makros gelöst bekommen.
ich möchte das jetzt aber auch mit einem skript schaffen.
weiter möchte ich, dass bei änderung des wertes im ersten feld im 2. feld nicht mehr der wert von vorher steht sondern dieses erstmal keinen wert zeigt. erst nachdem man das zweite aufklappt und einen dort stehenden wert auswählt, soll drin einer stehen.
das 2. kombifeld ist vom 1. abhängig. das erste beinhaltet gruppen und das 2. zu den gruppen passende artikel. das habe ich auch gelöst.
mir geht es nur um die abhängige sichtbarkeit. wie muss der code da aussehen?
gruß
Antwort 1 von morpheus__85
Also ich hab das jetzt mal so probiert und funktioniert einwandfrei.
Kombifeld1
Kombifeld2
Ins Form_Load ereignis schreibst du folgenden Code
Private Sub Form_Load()
Kombifeld2.Visible = False
End Sub
damit das Kombinationsfeld2 erstmal unsichtbar ist.
und dann nimmst du dir den code vom Kombinationsfeld1 her
Private Sub Kombinationsfeld1_Change()
'macht das 2 Kombifeld sichtbar
Kombinationsfeld2.Visible = True
'leert das 2Kombifeld wenn man im 1 eine Wert aussucht.
Kombinationsfeld2 = ""
End Sub
hoffe ich hab dich richtig verstanden und konnte dir helfen.
gruß
morpheus
Kombifeld1
Kombifeld2
Ins Form_Load ereignis schreibst du folgenden Code
Private Sub Form_Load()
Kombifeld2.Visible = False
End Sub
damit das Kombinationsfeld2 erstmal unsichtbar ist.
und dann nimmst du dir den code vom Kombinationsfeld1 her
Private Sub Kombinationsfeld1_Change()
'macht das 2 Kombifeld sichtbar
Kombinationsfeld2.Visible = True
'leert das 2Kombifeld wenn man im 1 eine Wert aussucht.
Kombinationsfeld2 = ""
End Sub
hoffe ich hab dich richtig verstanden und konnte dir helfen.
gruß
morpheus
Antwort 2 von mbalrog
funktioniert. danke
allerdings verschwindet das 2. feld nachdem ich im ersten den wert lösche und wieder leer nicht wieder.
es soll aber wieder verschwinden, wenn das 1. kombi leer ist
allerdings verschwindet das 2. feld nachdem ich im ersten den wert lösche und wieder leer nicht wieder.
es soll aber wieder verschwinden, wenn das 1. kombi leer ist
Antwort 3 von morpheus__85
spontan hätte ich gesagt mach beim
Kombinationsfeld1_Change()
eine if-bediehung rein z.b.
if Kombinationsfeld1 = "" then
Kombinationsfeld2.visible = false
else
end if
nur leider funktioniert das nicht.
irgendwo liegt da noch ein fehler, ich weis leider nicht, was in dem Kombofeld enthalten ist, wenn du deinen Wert rauslöscht, anscheinend sieht Access dann das Kombofeld nicht als "" an sonst müsste die If bedingugn eig funktionieren
aber schau mal ob du damit was anfagnen kannst oder ob jemand weis wo mein fehler da liegt weil ansich müsste das mit so ner if bedingung funktionieren
gruß
morpheus
Kombinationsfeld1_Change()
eine if-bediehung rein z.b.
if Kombinationsfeld1 = "" then
Kombinationsfeld2.visible = false
else
end if
nur leider funktioniert das nicht.
irgendwo liegt da noch ein fehler, ich weis leider nicht, was in dem Kombofeld enthalten ist, wenn du deinen Wert rauslöscht, anscheinend sieht Access dann das Kombofeld nicht als "" an sonst müsste die If bedingugn eig funktionieren
aber schau mal ob du damit was anfagnen kannst oder ob jemand weis wo mein fehler da liegt weil ansich müsste das mit so ner if bedingung funktionieren
gruß
morpheus
Antwort 4 von mbalrog
genau das habe ich auch probiert. und genau wie du bringt es bei mir nichts.
keine ahnung, dann werd ich mal weiter ausschau halten.
aber danke für deine abermalige schnelle antwort
gruß
keine ahnung, dann werd ich mal weiter ausschau halten.
aber danke für deine abermalige schnelle antwort
gruß
Antwort 5 von RalfH
Guten Morgen,
Du kannst ein Makro unter EXTRAS-MAKROS-MAKROS ZU VBA KONVERTIEREN., ins VBA konvertieren lassen, und dir den Code anschauen.
if Kombinationsfeld1 = "" then
Kombinationsfeld2.visible = false
end if
me.Requery
Wenn das nicht geht, würde ich den Standartwert des Kombi immer auf 0 setzen, und dann mit
If IsNull(Kombinationsfeld1) Then
Kombinationsfeld2.visible = false
end if
me.Requery
Nach Aktualisieren ausführen.
Hier mal was aus der Hilfe:
Refresh-Methode
Mit der Refresh-Methode können Sie die Datensätze der zugrunde liegenden Datenherkunft für ein angegebenes Formular oder Datenblatt sofort aktualisieren und dadurch die Änderungen anzeigen, die Sie oder andere Benutzer in einer Mehrbenutzerumgebung an den Daten vorgenommen haben. Die Refresh-Methode zeigt nur Änderungen, die an den aktuellen Datensätzen vorgenommen wurden, und keine neuen oder in der Datenherkunft gelöschten Datensätze an.
Requery-Methode
Mit der Requery-Methode können Sie die einem Formular oder Steuerelement zugrunde liegenden Daten aktualisieren, um Datensätze anzuzeigen, die neu sind oder seit der letzten Abfrage aus der Datenherkunft gelöscht wurden.
Wenn Sie ein Steuerelement, das sich nicht im aktiven Objekt befindet, erneut abfragen möchten, verwenden Sie diese Methode und nicht die Aktion AktualisierenDaten oder die entsprechende Requery-Methode des DoCmd-Objekts.
Gruß Ralf
Zitat:
Ich habe zwei kombi-felder und ich möchte, dass das 2. erst sichtbar wird, wenn ein wert im ersten steht.
ich habe dieses problem mit makros gelöst bekommen.
Ich habe zwei kombi-felder und ich möchte, dass das 2. erst sichtbar wird, wenn ein wert im ersten steht.
ich habe dieses problem mit makros gelöst bekommen.
Du kannst ein Makro unter EXTRAS-MAKROS-MAKROS ZU VBA KONVERTIEREN., ins VBA konvertieren lassen, und dir den Code anschauen.
if Kombinationsfeld1 = "" then
Kombinationsfeld2.visible = false
end if
me.Requery
Wenn das nicht geht, würde ich den Standartwert des Kombi immer auf 0 setzen, und dann mit
If IsNull(Kombinationsfeld1) Then
Kombinationsfeld2.visible = false
end if
me.Requery
Nach Aktualisieren ausführen.
Hier mal was aus der Hilfe:
Refresh-Methode
Mit der Refresh-Methode können Sie die Datensätze der zugrunde liegenden Datenherkunft für ein angegebenes Formular oder Datenblatt sofort aktualisieren und dadurch die Änderungen anzeigen, die Sie oder andere Benutzer in einer Mehrbenutzerumgebung an den Daten vorgenommen haben. Die Refresh-Methode zeigt nur Änderungen, die an den aktuellen Datensätzen vorgenommen wurden, und keine neuen oder in der Datenherkunft gelöschten Datensätze an.
Requery-Methode
Mit der Requery-Methode können Sie die einem Formular oder Steuerelement zugrunde liegenden Daten aktualisieren, um Datensätze anzuzeigen, die neu sind oder seit der letzten Abfrage aus der Datenherkunft gelöscht wurden.
Wenn Sie ein Steuerelement, das sich nicht im aktiven Objekt befindet, erneut abfragen möchten, verwenden Sie diese Methode und nicht die Aktion AktualisierenDaten oder die entsprechende Requery-Methode des DoCmd-Objekts.
Gruß Ralf

