Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Optionsgruppen in Formularen + Kombination mit Kombinationsfeldern

Begonnen von ChemSim, Februar 11, 2024, 19:44:25

⏪ vorheriges - nächstes ⏩

MzKlMu

Hallo,
das mit den Ufo muss in das Ereignis "NotInList"
Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)
.
.

    DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"
Sinngemäß dann auch für das andere Kombi.

ZitatIm Formular frmOrteBearbeiten habe ich bei den Ereignissen die folgenden Codes stehen:
Da muss das mit dem Ufo raus.
Private Sub Form_Open(Cancel As Integer)
   DoCmd.OpenForm "frmHerstellerBearbeiten", , , , acFormAdd
End Sub

So wie Du das jetzt hast, bleibt ja bei den NotInList OpenArgs leer und der Code in Form_Close wird nicht ausgeführt.
Gruß Klaus

ChemSim

Hallo Klaus,

Zitatdas mit den Ufo muss in das Ereignis "NotInList"

ich habe nun im Formular frmHerstellerBearbeiten beim Ereignis "Bei Nicht in Liste" der beiden Kombinationsfelder cboPLZ und cboOrt den Code angepasst:

cboPLZ:

Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd
  Forms!frmOrteBearbeiten!PLZ = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_PLZ.Undo
End If

DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"

End Sub

cboOrt:

Private Sub cboOrt_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd
  Forms!frmOrteBearbeiten!Ort = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_Ort.Undo
End If

DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"

End Sub

ZitatDa muss das mit dem Ufo raus.

Im Formular frmOrteBearbeiten habe ich jetzt beim Ereignis "Beim Öffnen" nichts mehr stehen. Leider funktioniert es trotzdem nicht.

Gruß,
Simon

MzKlMu

#32
Hallo,
das ist immer noch falsch, daher jetzt vollständig. Versuche doch mal den logischen Ablaf zu verfolgen. Der Code wird einfach nach und nach abgearbeitet.
Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)
If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"
  Forms!frmOrteBearbeiten!PLZ = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_PLZ.Undo
End If
End Sub
Private Sub cboOrt_NotInList(NewData As String, Response As Integer)
If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo"
  Forms!frmOrteBearbeiten!Ort = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_Ort.Undo
End If
End Sub


Für das Formular "frmOrteBearbeiten" dann
Private Sub Form_Close()
If IsNull(Me.OpenArgs) Then Exit Sub
    Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboPLZ.Requery
    Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
    Forms!frmHerstellerBearbeiten!cboOrt.Requery
End Sub
Gruß Klaus

ChemSim

Hallo Klaus,

vielen Dank, der Code funktioniert jetzt für das Formular frmlHerstellerBearbeiten. Ich habe gerade selbst versucht, den Code auch für das Formular frmKonzerneBearbeiten anzupassen und es hat nicht funktioniert. Im Formular frmKonzerneBearbeiten habe ich die beiden Kombinationsfelder cboPLZ und cboOrt unter dem Ereignis "Bei Nicht in Liste" mit folgendem Code versehen:

Private Sub cboOrt_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo2"
  Forms!frmOrteBearbeiten!Ort = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_Ort.Undo
End If

End Sub

bzw.

Private Sub cboPLZ_NotInList(NewData As String, Response As Integer)

If MsgBox("Der Ort ist neu. Möchten Sie ihn anlegen?", vbYesNo) = vbYes Then
  Response = acDataErrContinue
  DoCmd.OpenForm "frmOrteBearbeiten", , , , acFormAdd, , "Ufo2"
  Forms!frmOrteBearbeiten!PLZ = NewData
Else  'z.B. bei Tippfehler
  Response = acDataErrContinue
  Me!cbo_PLZ.Undo
End If

End Sub

Den Code im Formular frmOrteBearbeiten habe ich angepasst zu:

Private Sub Form_Close()
Select Case Nz(Me.OpenArgs, "")
   Case "Ufo1"
       Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboPLZ.Requery
       Forms!frmHerstellerBearbeiten!cboOrt = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboOrt.Requery
   Case "Ufo2"
       Forms!frmKonzerneBearbeiten!cboPLZ = Me!OrtID
       Forms!frmKonzerneBearbeiten!cboPLZ.Requery
       Forms!frmKonzerneBearbeiten!cboOrt = Me!OrtID
       Forms!frmKonzerneBearbeiten!cboOrt.Requery
   End Select
End Sub

Irgendwas stimmt also immer noch nicht!

Gruß
Simon

MzKlMu

Hallo,
füge mal einen Stop Befehl im Code ein:
Private Sub Form_Close()
Stop
Select Case Nz(Me.OpenArgs, "")
.
.
Der Code kann dann mit F8 im Einzelschritt durchlaufen werden.
Vor dem F8 stellst Du aber mal den Cursor auf die Mitte der Variablen OpenArg und Ufo1/Ufo2.
Dann wird Dir deren Wert angezeigt.
Eine andere Möglichkeit vor Stop noch einfach eine MsgBox

MsgBox Me.OpenArgsUnd dann erst mit F8 sehen wie es weiter geht.


PS:
Ich bin erst heute Abend wieder am PC.

Gruß Klaus

ChemSim

Hallo,

ich hatte irgendwo noch einen kleinen Fehler in der Benennung der Kombinationsfelder ::).  Jetzt scheint es zu laufen und das Thema kann geschlossen werden!

Ich bedanke mich bei Dir für die ganze Hilfe! :D

Gruß
Simon

Beaker s.a.

Hallo,

Hätte da noch ein/zwei Fragen.
1. "Ufo1" bzw. "-2"), - sind die beiden Formulare mit den Kombis?
2.
@klaus
       Forms!frmHerstellerBearbeiten!cboPLZ = Me!OrtID
       Forms!frmHerstellerBearbeiten!cboPLZ.Requery
Müsste das nicht anders herum, - erst aktualisieren und dann auf den
neuen Wert einstellen?

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

ChemSim

Hallo,

Zitat1. "Ufo1" bzw. "-2"), - sind die beiden Formulare mit den Kombis?
Ja, es sind die beiden Formulare frmHerstellerBearbeiten und frmKonzerneBearbeiten.

Gruß,
Simon

MzKlMu

Hallo,
@ekkehard
Nein, das ist so richtig.
Erst die neue ID in das Kombi und dann mit Requery das Kombi aktualisieren.
Siehe auch die entsprechende FAQ von DonKarl.
Gruß Klaus

Beaker s.a.

Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)