PDA

Vollständige Version anzeigen : Funktion von Formular ins Modul verlagern


Ulrike B.
26.10.2003, 08:37
Hallo,

in meiner Datenbank habe ich eine Funktion Loeschen(), die in vier Formularen verwendet wird. Derzeit steht sie in jedem der Formulare extra drin, weil jedes der Formulare eine ID hat, die etwas anders heißt.

Kann ich die ID auch allgemein ansprechen, so dass ich die Funktion für alle Formulare einheitlich verwenden kann?



Public Function BestellerLoeschen()
Dim Antwort As VbMsgBoxResult

On Error GoTo Fehlerbehandlung

If Me.Dirty Then
Me.Undo
ElseIf Not IsNumeric([Besteller-ID]) Then
MsgBox "Es sind keine Daten zum Löschen vorhanden!", vbInformation, "Keine Daten"
Else

Antwort = MsgBox("Soll dieser Datensatz wirklich gelöscht werden?", vbYesNo + vbExclamation, "Achtung")
If Antwort = vbYes Then


With Me.RecordsetClone
.Bookmark = Me.Bookmark
.Delete
Me.Requery
End With
End If

End If

RausHier:
On Error GoTo 0
Exit Function

Fehlerbehandlung:
If Err.Number = 3200 Then
MsgBox "Dieser Datensatz kann nicht gelöscht werden, da noch Verknüpfungen" & _
" zu anderen Datensätzen bestehen!", vbExclamation, "Verknüpfungen"
Else
MsgBox "Fehler: " & Err.Number & " (" & Err.Description & ") "
End If
Resume RausHier

End Function



Über eine kleine "Denkhilfe" würde ich mich sehr freuen

Schonmal danke und Grüße

Ulrike

Nouba
26.10.2003, 08:53
Hallo Ulrike,

versuchs mal hiermit, wobei aus dem Formular heraus mit If LoescheDS(Me, Me!IDFeld) Then geprüft werden kann, ob die Löschung erfolgreich war.
Public Function LoescheDS(ByRef rFrm As Form, ByRef rCtl As Control) As Boolean
Dim Antwort As VbMsgBoxResult

On Error GoTo Fehlerbehandlung

With rFrm

If .Dirty Then
.Undo
ElseIf Not IsNumeric(rCtl) Then
MsgBox "Es sind keine Daten zum Löschen vorhanden!", vbInformation, "Keine Daten"
Else

Antwort = MsgBox("Soll dieser Datensatz wirklich gelöscht werden?", vbYesNo + vbExclamation, "Achtung")
If Antwort = vbYes Then

With .RecordsetClone
.Bookmark = rFrm.Bookmark
.Delete
rFrm.Requery
End With
LoescheDS = True
End If

End If

RausHier:
On Error GoTo 0
Exit Function

Fehlerbehandlung:
If Err.number = 3200 Then
MsgBox "Dieser Datensatz kann nicht gelöscht werden, da noch Verknüpfungen" & _
" zu anderen Datensätzen bestehen!", vbExclamation, "Verknüpfungen"
Else
MsgBox "Fehler: " & Err.number & " (" & Err.Description & ") "
End If
Resume RausHier

End Function

Johnny Loser
26.10.2003, 09:02
Du kannst die Funktion in eine Modul schreiben und dieser im Aufruf sowohl das Formular als Referenz, als auch die ID als Wert übergeben:

Aufruf:

If BestellerLoeschen(Me, [Besteller-ID]) Then



Public Function BestellerLoeschen(ByRef frm As Form, ByVal varID As Variant)
...
If frm.Dirty Then
...
ElseIf Not IsNumeric(varID) Then
...
BestellerLoeschen = True 'Funktion gibt True zurück, wenn Löschen erfolgreich war
RausHier:
...
End Sub
Die Me's ersetzt Du in der Funktion durch frm




Oops, da war wohl jemand schneller.....

Ulrike B.
29.10.2003, 17:27
Hallo,


hat inzwischen funktioniert.

Vielen Dank für die Tipps

Schöne Grüße

Ulrike