Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Brusellise am Februar 10, 2017, 14:48:04

Titel: VBA Navigationsformular
Beitrag von: Brusellise am Februar 10, 2017, 14:48:04
Hallo,

ich arbeiten in einen Navigationsformular (_frmnavstart).
Dort befinden sich in der Leiste oben der Link (Ladungsträger).
Nun öffnet sich das Formular Ladungsträger.

Hier werden Datensätze eingegeben und dann mit einem Button gespeichert.
Nun möchte ich das Formular nach eine Messagebox schließen und wieder neu öffnen.

Mein Code sieht so aus:MsgBox "Der Behälter wurde gebucht.", vbInformation + vbOKOnly, "Buchung abgeschlossen!"
DoCmd.Close
DoCmd.OpenForm "_frmNavstart"
With Forms![_frmNavstart]![frmHal_Ladungsträgerausgang].Form


Leider erhalte ich eine Fehlermeldung, dass das Formular frmHal_Ladungsträgerausgang nicht gefunden werden kann. Kann mir jemand helfen. Ich denke es hängt an dem Navigationsformular, da mitDoCmd.OpenForm "_frmNavstart" mein VBA Code funktioniert.

Danke für eure Hilfe
Titel: Re: VBA Navigationsformular
Beitrag von: MzKlMu am Februar 10, 2017, 18:34:59
Hallo,
was willst Du mit dem einsamen With erreichen ?
Und warum willst Du das Formular schließen und dann gleich wieder öffnen ?
Da kannst Du es doch gleich offen lassen.
Titel: Re: VBA Navigationsformular
Beitrag von: Beaker s.a. am Februar 10, 2017, 22:37:08
Hallo,
Wenn
With Forms![_frmNavstart]![frmHal_Ladungsträgerausgang].Form
wirklich die letzte Zeile in der Prozedur ist, fragt sich, warum der Compiler
da nicht schon meckert; - "End With erwartet".
Ansonsten, wenn du das Naviform schliesst und wieder öffnest, musst du dem
Form zusätzl. noch sagen welches Form es anzeigen soll.
Schau dir dazu die .BrowseTo-Methode des Naviforms in der OH an.

gruss ekkehard
Titel: Re: VBA Navigationsformular
Beitrag von: Brusellise am Februar 13, 2017, 09:14:51
Hi,
danke erst mal für eure Hilfe.

ich habe "end with" im VBA drin. Dies ist also nicht der Fehler.

Bei der Box geht es um einen Abbruch. Es taucht eine Messagebox auf und dann möchte ich, dass mit "ok" der obige Link geöffnet wird.

Wer kann mir helfen?
Titel: Re: VBA Navigationsformular
Beitrag von: DF6GL am Februar 13, 2017, 09:47:33
Hallo,

das Navigationsformular hat immer nur ein UFO_Steuerelement mit dem (Standard-)Namen "Navigationsunterformular".

In dieses UFO-St. El. kann jeweils ein (normales) Formular geladen (hier heißt das jedoch "navigieren") und angezeigt werden.

Insofern sollte die Referenz auf das UFo so lauten:

Forms![_frmNavstart]![Navigationsformular].Form


wobei mir unerklärlich ist, warum das Navi-Form ("_frmNavstart")  neu geladen werden soll, wenn in seinem Unterformular (worin das Form "Ladungsträger" angezeigt wird) irgendwelche Datenmanipulationen erfolgt sind.
Titel: Re: VBA Navigationsformular
Beitrag von: Brusellise am Februar 13, 2017, 12:58:39
Sorry, aber leider klappt es nicht.

Ich nutze, das ganze eigentlich nur, damit der Datensatz über einen Button nicht doppelt gespeichert wird. Hast du da eine Idee wie ich dies verhindern kann.

Titel: Re: VBA Navigationsformular
Beitrag von: DF6GL am Februar 13, 2017, 13:54:47
Hallo,

das ist keine Erklärung, warum das UFO neu angezeigt , bzw. das Naviform neu geladen werden sollte...


Versuch das mal so (wenn ich den ganzen Formularismus richtig interpretiere)

Im Form "frmHal_Ladungsträgerausgang"


Sub btnSpeichern_Click()
If Me.Dirty Then Me.Dirty =False
End Sub
.
.
Sub Form_AfterUpdate()
MsgBox "Der Behälter wurde gebucht.", vbInformation + vbOKOnly, "Buchung abgeschlossen!"
End Sub
Titel: Re: VBA Navigationsformular
Beitrag von: Beaker s.a. am Februar 13, 2017, 15:22:35
Hallo,
Zitatich habe "end with" im VBA drin. Dies ist also nicht der Fehler.
Dann fragt, was dazwischen an Code steht.
DoCmd.OpenForm "_frmNavstart"
With Forms![_frmNavstart]![frmHal_Ladungsträgerausgang].Form

An dieser Stelle kennt IMO das HFO (_frmNavstart) das Formular "frmHal_Ladungsträgerausgang"
noch gar nicht. Eigentlich müsste hier eine entsprechende Fehlermeldung kommen.
Mit

DoCmd.OpenForm "_frmNavstart"
DoCmd.BrowseTo _
        ObjectType:=acBrowseToForm, _
        ObjectName:="frmHal_Ladungsträgerausgang", _
        PathToSubformControl:="_frmNavstart.NameDesNaviUFoControls"
With Forms![_frmNavstart]![frmHal_Ladungsträgerausgang].Form

sollte es eigentlich funzen. Namen musst du evtl. anpassen.
Allerdings halte ich das Schliessen des (Navi-)hauptformulars auch für
überflüssig.

gruss ekkehard