PDA

Vollständige Version anzeigen : Fehler bei Datensatzdokumentation bei nicht aktiven Feldern


WDKA-Jürgen
11.07.2006, 12:52
Hallo zusammen,
ich habe ein Problem mit folgendem Code


Dim C As Control, T As String, FO As String, FN As String

' dies ist nur ein Beispiel - speziell die Handhabung der NULL-Werte kann man
' natürlich auch ganz anders gestalten!

'FN = Neuer Wert
'FO = alter Wert

If Me.NewRecord = True Then
Exit Sub
End If

Dim GrundÄnd As String

For Each C In Me.Controls
T = ""
On Error Resume Next
T = C.ControlSource
On Error GoTo 0
If T <> "" Then
If deleteRecord Then
FO = Left(Nz(C.Value, ""), 255)
If FO = "" Then
FO = "<NULL>"
FN = "<NULL>"
Else
FN = "<DELETED>"
End If
Else
'die msgbox nur vorhanden um fehler zu finden
MsgBox "C.Name = " & C.NAME
MsgBox "C = " & C
MsgBox "FO = " & FO
FO = Left(Nz(C.OldValue, ""), 255) <----- Fehler
If FO = "" Then FO = "<NULL>"
FN = Left(Nz(C.Value, ""), 255)
If FN = "" Then FN = "<NULL>"
End If
If FN <> FO Then

If FO = "<null>" Then
GrundÄnd = "Wert zugefügt"
End If

If FN <> "<Null>" And FO <> "<null>" Then
GrundÄnd = "Wert geändert"
End If

If FN = "<Null>" Then
GrundÄnd = "Wert geändert"
End If

If FN = "<Deleted>" Then
GrundÄnd = "DS gelöscht"
End If

'MsgBox "GrundÄnd = " & GrundÄnd

CurrentDb.Execute "INSERT INTO [1 ZZ Änderungsprotokoll] (DatensatzID, Grund, geändertvon, Formularname, Feldname, AlterWert, NeuerWert, Änderungsdatum) " & _
" VALUES ('" & ID & "','" & GrundÄnd & "','" & UserNameAnm & "','" & Me.NAME & "','" & C.NAME & "','" & FO & "','" & FN & "',Now())"

'CurrentDb.Execute "INSERT INTO tblAuditTrail (FieldName, OldValue, NewValue, DateOfChange) " & _
" VALUES ('" & C.NAME & "','" & FO & "','" & FN & "',Now())"

End If
End If
Next C


ich habe Felder in dem Formular, die ich mit .enabled = false deaktiviert habe. Leider stört sich der Code an diesen Feldern. Den Fehlerhafte stelle habe ich rot gekennzeichnet.

Frage :
kann man auch in dem Formular nur nach den aktiven Feldern suchen lassen ob sich Änderungen ergeben haben ??
Fehlertext :
Laufzeitfehler 3251
Operation für diesen Objektyp nicht unterstützt

mfg

Jürgen

Anne Berg
11.07.2006, 13:12
Du solltest nur die Datenfelder berücksichtigen, also ctl.ControlType = acTextbox und was sonst evtl. noch in Frage kommt.

...und natürlich kannst du auch die Eigenschaft Enabled dabei abfragen.

WDKA-Jürgen
11.07.2006, 13:58
hallo Anne,
vielen dank für deine Anregungen.
Ich gebe mich mal ans tüfteln.
geändert :
Ich habe es hinbekommen.


mfg

Jürgen