PDA

Vollständige Version anzeigen : Fehlerprozedur funktioniert nicht!!


Christoph Eick
24.09.2001, 02:02
Hallo,
Folgenden Prozedur läuft nicht so wie sie soll:

On Error GoTo Err_AuftZusInfo
Close_AuftZusInfo:
DoCmd.Close acForm, "AuftragsZusatzInfo"
Exit Sub
Err_AuftZusInfo:
MsgBox "MeineMeldung", vbExclamation
Resume Close_AuftZusInfo

Sie funktioniert leider nur insoweit, das der Fehler abgefangen wird und das Formular geschlossen wird. Nur wird leider die Meldung >MsgBox< nicht angezeigt.

Die Prozedur steht im Current-Ereignis und soll beim blättern durch die Datensätze im Hauptformular verhindern, das bei geöffnetem Formular "AuftragsZusatzInfo" die falschen Daten angezeigt werden.

Wo habe ich den Fehler gemacht??

mfg
Christoph Eick

MarioR
24.09.2001, 07:11
Hallo Christoph,

bist Du Dir sicher, dass überhaupt ein Fehler auftritt und der Sprung zu Err_AuftZusInfo erfolgt?

Ich denke eher, dass die Prozedur ohne Sprung durchläuft und in Zeile 4 beendet wird!

PS
Hier steht z.B. eine Routine zum Testen, ob ein Formular geöffnet ist:
Status von Formularen abfragen (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=49119)

Christoph Eick
24.09.2001, 08:19
Hallo Mario,
>bist Du Dir sicher, dass überhaupt ein Fehler auftritt und der Sprung zu Err_AuftZusInfo erfolgt?
Diese Prozedur soll ja einen Fehler,wenn er denn Auftritt abfangen und eine Meldung anzeigen.
Das ganze soll in etwa so aussehen:

Das ganze fängt so an:
If IsOpen("AuftragsZusatzInfo") Then
Forms!Aufträge.RecordsetClone.FindFirst "AuftrNr=" & Me!AuftrNr
Forms!Aufträge.Bookmark =
Forms!AuftragsZusatzInfo.RecordsetClone.Bookmark
End If

Die Prozedur soll überprüfen ob das Formular "AuftragsZusatzInfo" (kein
PopUpfrm) geöffnet ist. Wenn ja dann soll der zur Auftragsnummer (aus dem
Formular Aufträge) zugehörige Datensatz im Formular "AuftragsZusatzInfo"
angezeigt werden.
Wenn jetzt im Formular "Aufträge" durch die Datensätze (bzw. zu einer bestimmten
Auftragsnummer gesprungen wird) geblättert wird soll im Formular
"AuftragsZusatzInfo" auch der dazu entsprechende angezeigt werden. Da es
sich hier um zusätzliche Informationen handelt und nicht zu jedem Datensatz
(unter Aufträge) auch entsprechende Datensätze unter AuftragsZusatzInfo"
vorhanden sind soll eine Fehlermeldung erscheinen und das
Formular "AuftragsZusatzInfo" geschlossen werden.

Und hier wird zwar das Formular "AuftragsZusatzInfo" geschlossen aber leider keine Meldung angezeigt.


Gleiches soll später auch geschehen beim öffnen des Formulars
"AuftragsZusatzInfo" über die Schaltfläche.

Ich hoffe ich habe einigermaßen verständlich erklärt was ich will.

Gruß
Christoph Eick

MarioR
24.09.2001, 12:04
Hallo Christoph,

ich hab mal schnell ;) eine Lösung zusammengewürfelt (kommt ins Formular Aufträge).


Private Sub ZusatzInfo_Click()
If DCount("*", "DeineTabMitDenZusatzInfos", "[AuftrNr]=" & Me.AuftrNr) > 0 Then
DoCmd.OpenForm "AuftragsZusatzInfo", acNormal
Forms!AuftragsZusatzInfo.Filter = "[AuftrNr]=" & Me.AuftrNr
Forms!AuftragsZusatzInfo.FilterOn = True
Forms!AuftragsZusatzInfo.Refresh
Else
MsgBox "Keine Zusatzinfos!"
End If
End Sub


Private Sub Form_Current()
If IsFormOpen("AuftragsZusatzInfo") Then
If DCount("*", "DeineTabMitDenZusatzInfos", "[AuftrNr]=" & Me.AuftrNr) = 0 Then
MsgBox "Keine Zusatzinfos!"
DoCmd.Close acForm, "AuftragsZusatzInfo"
Else
Forms!AuftragsZusatzInfo.Filter = "[AuftrNr]=" & Me.AuftrNr
Forms!AuftragsZusatzInfo.Refresh
End If
End If
End Sub


Du müsstest das natürlich noch auf Deine Bedingungen anpassen. Hast Du die Auftragsnummer als Text vorliegen, muss
"[AuftrNr]=" & Me.AuftrNr
durch
"[AuftrNr]='" & Me.AuftrNr & "'"
ersetzt werden. Weiterhin bin ich davon ausgegangen, dass die Zusatzinfos in einer Extratabelle stehen.
Die Funktion IsFormOpen hab ich aus dem Link aus meinem ersten Beitrag entnommen.

Ich hoffe, das hilft Dir irgenwie weiter.

Christoph Eick
24.09.2001, 23:44
Hallo Mario,
ich hab's scheinbar geschafft. Der Code sieht folgendermaßen aus:
'Formular AuftragsZusatzInfo wenn geöffnet mit Formular Wachbuch synchronisieren wenn durch die Datensätze geblättert wird
'Ist kein entsprechender Datensatz (AuftrNr<>AuftrNr) Datensatz vorhanden wird das Formular automatisch geschlossen

If IsOpen("AuftragsZusatzInfo") Then
If DCount("*", "AuftragsZusatzInfo", "[AuftrNr]=" & Me.AuftrNr) = 0 Then
MsgBox "MeineMeldung"
DoCmd.Close acForm, "AuftragsZusatzInfo"

Else
Forms!AuftragsZusatzInfo.RecordsetClone.FindFirst "[AuftrNr]=" & Me![AuftrNr]
Forms!AuftragsZusatzInfo.Bookmark = Forms!AuftragsZusatzInfo.RecordsetClone.Bookmark

End If
End If

Zwar weiß ich nicht genau ob sie Sauber geschrieben ist, aber der Code scheint zu funktionieren.

Danke noch mal an alle, die mir dabei geholfen haben!!!

Gruß Christoph Eick