Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Geänderte Datensätze dokumentieren
Gehe zu Seite Zurück  1, 2, 3, 4, 5 ... , 16, 17, 18, 19, 20  Weiter
zurück: MPG Play Button weiter: Packliste zum Wandern in Access erstellen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Diskussion Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Thomas1966
Im Profil kannst Du frei den Rang ändern


Verfasst am:
21. Apr 2010, 09:03
Rufname:

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

uuups...
aber jetzt sollte sie dabei sein....



test.zip
 Beschreibung:

Download
 Dateiname:  test.zip
 Dateigröße:  20.78 KB
 Heruntergeladen:  106 mal

jens05
Moderator


Verfasst am:
21. Apr 2010, 19:57
Rufname:
Wohnort: ~~~~~

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

Hallo,
anscheinend ist da was schiefgelaufen.
Entweder du änderst die LostFocus-Prozedur so ab.
Code:
Private Sub SpinButton3_LostFocus()
    Me!LIEFERTERMIN.SetFocus
    LIEFERTERMIN_BeforeUpdate 0
    LIEFERTERMIN_AfterUpdate
End Sub
Oder,
du lässt die Prozedur so
Code:
Private Sub SpinButton3_LostFocus()
    LIEFERTERMIN_BeforeUpdate 0
    LIEFERTERMIN_AfterUpdate
End Sub
Und passt zusätzlich folgendes an
Code:
Private Sub LIEFERTERMIN_BeforeUpdate(Cancel As Integer)
    Cancel = Aenderungsprotokoll(Me.LFPOSNR, Nz(Me!LIEFERTERMIN.OldValue), _
                            Nz(Me!LIEFERTERMIN), "LIEFERTERMIN", True)
End Sub
Und die Funktion
Code:
Public Function Aenderungsprotokoll(LFPOSNR As Long, _
                            Optional strOld As String, _
                            Optional strNew As String, _
                            Optional strFld As String, _
                            Optional blnX As Boolean = False) As Boolean
    Dim xAlt As String
    Dim xNeu As String
    Dim XFeldName As String
    Dim FNAME As String
    Dim FCONTROL As String
    Dim frm As Form
    Dim ctl As Control
   
    Set frm = Screen.ActiveForm
    Set ctl = Screen.ActiveControl
    If blnX Then
        XFeldName = strFld
        xNeu = strNew
        xAlt = strOld
      Else
        XFeldName = ctl.Name
        xNeu = Nz(ctl)
        xAlt = Nz(ctl.OldValue)
    End If
    If xNeu <> xAlt Then
'....

_________________
mfg jens05 Wink
Gast



Verfasst am:
22. Apr 2010, 09:35
Rufname:

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

hallo jens05,

super-vielen herzlichen dank!!
es funtionieren beide lösungen!!
allerdings ein kleiner schönhetsfehler ist mir aufgefallen:
wenn ich den liefertermin per spin-button ändere und dann sofort
auf den datensatz-markierer zum speichern klicke wird wieder kein
eintrag erstellt-glaubst du man könnte das auch noch lösen??

mfg
thomas
Sandra1983
Gast


Verfasst am:
09. Sep 2010, 11:22
Rufname:

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       Version: Office 2007

Hallo Zusammen,

ich habe mich hier gut eingelesen und es hat mir sehr geholfen. In der Datenbank lassen sich jetzt alle Daten mit Grund protokollieren. Dafür schon mal Danke!

Jetzt habe ich aber ein Problem das ich einfach nicht lösen kann.
Folgendes in der Datenbank habe ich ein Hauptformular mit der Patienten ID, daneben ist ein Button der nennt sich "Abschlussbogen", klickt man auf den Button so gelangt man in das Formular "Abschlussbogen", allerdings ist das dann gefiltert ja nach Patienten ID. Hoffe das war jetzt verständlich.

Nun das Problem: In dem Formular Abschlussbogen_HF(Hauptformular) steht oben dann bereits die Patienten ID drin und die Daten werden in das Unterformular(Abschlussbogen_UF) eingetragen, dort existiert noch kein Datensatz. Leider protokolliert er mir jetzt alles mit was ich in das Unterfomular eintage und es geht immer die Inputbox des Grundes auf.

Ich habe ja den Code: If frm.NewRecord Then Exit Function, in dem Modul, aber das scheint Ihn nicht zu interessieren, da ja im Hauptformular Abschlussbogen bereits die Patienten ID steht. Ich weiß nicht mehr weiter kann mir einer Helfen?

Hier noch mein Modul
Code:
Public Function Aenderungsprotokoll(strTabellenName As String _
                                  , lngID As Long) As Boolean
    Dim xAlt        As String
    Dim xNeu        As String
    Dim XFeldName   As String
    Dim xFormular   As String
    'Dim FNAME       As String
    'Dim FCONTROL    As String
    Dim frm         As Form
    Dim ctl         As Control
    Dim Mldg        As String
    Dim strinput    As String
   
    Mldg = "Bitte geben Sie einen Grund für die Änderung ein."
    Set frm = Screen.ActiveForm
    Set ctl = Screen.ActiveControl
    XFeldName = ctl.Name
    xNeu = Nz(ctl)
    xAlt = Nz(ctl.OldValue)
    xFormular = frm.Name
    If frm.NewRecord Then Exit Function 'neuer Datensatz? wenn ja, exit
    If xNeu <> xAlt Then
        strinput = InputBox(Mldg)
        DBEngine(0)(0).Execute _
            "INSERT INTO tblProtokoll" _
                 & "(pro_Aenderer, pro_Tabelle, pro_Formular, pro_Feldname" _
                & ", pro_Aenderungsdatum, pro_DatensatzID, pro_alterWert" _
                & ", pro_neuerWert, pro_Grund)" _
         & " VALUES ('" & Environ("Username") & "'" _
                & ", '" & strTabellenName & "', '" & xFormular & "'" _
                & ", '" & XFeldName & "', '" & Now() & "'," & lngID _
                & ", '" & xAlt & "', '" & xNeu & "', '" & strinput & "')"
        Aenderungsprotokoll = False
      Else
        Aenderungsprotokoll = True
    End If
End Function

Nachtrag: Sandra1983 am 09. Sep 2010 um 11:31 hat folgendes geschrieben:
Mir ist noch aufgefallen, dass er mir in der Protokolltabelle auch immer nur die Hauptformular Namen speichert und nicht die der Unterformulare. Da habe ich sicher einen Fehler gemacht.

VG
Sandra
jens05
Moderator


Verfasst am:
09. Sep 2010, 20:02
Rufname:
Wohnort: ~~~~~

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

Hallo,
bitte nimm die Prüfung auf "NewRecord" bereits im Ereignis "Vor Aktualisierung" vor.

Den Ufoname (Formularnamen) übergibst du am besten gleich an die Funktion auch im Ereignis "Vor Aktualisierung".

_________________
mfg jens05 Wink
Sandra1983
Gast


Verfasst am:
10. Sep 2010, 12:32
Rufname:

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

Hallo Jens danke für deine Antwort.

Aber ich muss leider noch mal fragen, wie würde denn eine Prüfung auf NewRecord aussehen?

Vielen Dank schonmal.
jens05
Moderator


Verfasst am:
10. Sep 2010, 20:17
Rufname:
Wohnort: ~~~~~

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

Hallo,
das könnte Beispielhaft so aussehen
Code:
Private Sub LIEFERTERMIN_BeforeUpdate(Cancel As Integer)
    If Me.NewRecord = 0 Then 'Nur ausfuehren, wenn kein neuer DS
        Cancel = Aenderungsprotokoll("DeineTabelle", Me!DeineID, Me.Name)
    End If
End Sub
Deine Funktionsanpassung wg. des Formnames
Code:
Public Function Aenderungsprotokoll(strTabellenName As String _
                                  , lngID As Long _
                                  , strFrmName As String) As Boolean
    '...
         & " VALUES ('" & Environ("Username") & "'" _
                & ", '" & strTabellenName & "', '" & strFrmName & "'" _
                & ", '" & XFeldName & "', '" & Now() & "'," & lngID _
                & ", '" & xAlt & "', '" & xNeu & "', '" & strinput & "')"
    '...

_________________
mfg jens05 Wink
soenke70
Im Profil kannst Du frei den Rang ändern


Verfasst am:
13. Dez 2010, 17:06
Rufname:

Re: AW: Geänderte Datensätze dokumentieren - Re: AW: Geänderte Datensätze dokumentieren

Nach oben
       

Hallo Smile
ich habe nun den folgenden code bei mir eingefügt bekomme nun aber eine Fehlermeldung, vielleicht kann mir jemand sagen wo ich den Fehler habe?
Code:
Option Compare Database
Option Explicit

Public Function Aenderungsprotokoll(lngID As Long) As Boolean
On Error Resume Next
    Dim frm         As Form
    Dim ctl         As Control
   
    Set frm = Screen.ActiveForm
    Debug.Print frm!Id
    For Each ctl In frm.Controls
        If ctl.ControlType = acTextBox Or _
           ctl.ControlType = acComboBox Then
            If Nz(ctl) <> Nz(ctl.OldValue) Then
                DBEngine(0)(0).Execute _
                    "INSERT INTO tblProtokoll" _
                        & " (ID, Aenderungsdatum, Aenderer, FeldName" _
                        & ", alterWert, neuerWert)" _
                 & " VALUES (" & lngID & ", Now(), '" & CurrentUser() & "'" _
                       & ", '" & ctl.Name & "', '" & ctl.OldValue & "'" _
                       & ", '" & ctl & "')", dbFailOnError
            End If
        End If
    Next
    If Err <> 0 Then
        MsgBox "Archivierfunktion fehlerhaft, Änderung nicht möglich"
        Aenderungsprotokoll = True
      Else
        Aenderungsprotokoll = False
    End If
End Function
eingefügt habe ich unter den Formular eigenschaften folgendes:
Code:
Private Sub Form_BeforeUpdate(Cancel As Integer)
    Cancel = Aenderungsprotokoll(Me!ID)
End Sub
und als Fehler bekomme ich dieses hier :
Zitat:
Fehler beim Kompilieren: Variable oder Prozedur anstelle eines Moduls erwartet

LG
Sönke
Willi Wipp
Moderator


Verfasst am:
21. Dez 2010, 13:49
Rufname:
Wohnort: Raum Wiesbaden

Re: Geänderte Datensätze dokumentieren (LX) - Re: Geänderte Datensätze dokumentieren (LX)

Nach oben
       

Hi soenke70,

vermutlich hast du dem Modul den Namen der Funktion gegeben!
Nenne das Modul mal um, z.B. mdlAenderungsprotokoll.

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
soenke70
Im Profil kannst Du frei den Rang ändern


Verfasst am:
14. Jan 2011, 09:52
Rufname:

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

Danke für die Hilfe Willi nun geht es Smile

LG
Sönke
Gileraracer
Im Profil kannst Du frei den Rang ändern


Verfasst am:
19. Jan 2012, 10:14
Rufname:

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

Hallo,

ich habe mit

Code:
Public Function Aenderungsprotokoll() As Boolean
    Dim xAlt        As String
    Dim xNeu        As String
    Dim xFeldName   As String
    Dim frm         As Form
    Dim ctl         As Control
   
    Set frm = Screen.ActiveForm
    Set ctl = Screen.ActiveControl
    xFeldName = ctl.Name
    xNeu = Nz(ctl)
    xAlt = Nz(ctl.OldValue)
    If xNeu <> xAlt Then
                DBEngine(0)(0).Execute _
            "INSERT INTO Log " & _
                   "(Datum, Aenderer, FeldName," & _
                    "alterWert, neuerWert) " & _
            "VALUES (Now(),'" & CurrentUser() & "','" & xFeldName & "','" & _
                     xAlt & "','" & xNeu & "')"
        Aenderungsprotokoll = False
    End If
End Function


ein Logfile geschrieben. Nun habe ich im Formular, von welchem die Felder geloggt werden noch ein Feld "Titel" welches ich gerne auch mitloggen würde, sprich dass man im Log immer sieht für welchen Titel (Buchtitel) die Felder geändert wurden. Wie gebe ich dieses an?
Gileraracer
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Feb 2012, 17:03
Rufname:

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

Niemand mehr da der das kann?
derArb
getting better


Verfasst am:
07. Feb 2012, 17:19
Rufname: derArb
Wohnort: Berlin

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       

Hallo,
zumindest sollte ein Versuch zu sehen sein.

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
Sebastian12345
Gast


Verfasst am:
30. Apr 2014, 11:47
Rufname:

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       Version: Office 2013

Hallo dieser Thread ist ganau das was ich suche!

Und wie es aussieht habe ich auch den für mich richtigen Code zusammen basteln können.

Ich protokolliere den WindowsUserNamen, alte&neue Werte. Um die Werte auch zuordnen zu können natürlich noch die Tabelle, den Feldnamen und die Datensatz ID.

Nun habe ich das Problem, dass bei der ID ein Fehler auftaucht.


Zitat:
Laufzeitfehler:'2465'!
Microsoft Access kann das in Ihrem Ausdruck angesprochene Feld 'DeineID' nicht finden.


Und verweist mich auf meine Ereignissprozedur:
Zitat:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Cancel = Aenderungsprotokoll("DeineTabelle", Nz(Me!DeineID, -1))
End Sub


Evtl. ist es wichtig zu erwähnen
, dass meine Primärschlüssel nie ID heißen, sondern immer 'xxxxID' (xxxx=jeweiligen vier Buchstaben des tbl-Namens).

Fragen:
-Gibt es eine Lösung für mein Problem?
-Wie kann diese Aussehen?


Hier das verwendete Modul (hier aus dem Forum):
Zitat:
Public Function Aenderungsprotokoll(strTabellenName As String, _
lngID As Long) As Boolean
Dim strAlt As String
Dim strNeu As String
Dim strFeldName As String
Dim frm As Form
Dim ctl As Control

Set frm = Screen.ActiveForm
Set ctl = Screen.ActiveControl
strFeldName = ctl.Name
strNeu = Nz(ctl)
strAlt = Nz(ctl.OldValue)
If strNeu <> strAlt Then
'Änderungsprotokoll schreiben
DBEngine(0)(0).Execute _
"INSERT INTO tblProtokoll " & _
"(Aenderungsdatum, Aenderer, TabellenName, ID, " & _
"FeldName, alterWert, neuerWert) " & _
"VALUES (Now(), '" & CurrentUser() & "', '" & _
strTabellenName & "', " & lngID & ", '" & _
strFeldName & "', '" & strAlt & "', '" & strNeu & "')"
Aenderungsprotokoll = False
End If
End Function
'Aufruf
' Cancel = Aenderungsprotokoll("DeineTabelle", Nz(Me!DeineID, -1))
MissPh!
Office-VBA-Programmiererin


Verfasst am:
30. Apr 2014, 15:49
Rufname:
Wohnort: NRW

AW: Geänderte Datensätze dokumentieren - AW: Geänderte Datensätze dokumentieren

Nach oben
       Version: Office XP (2002)

Hallo,

die Prozedur "Aenderungsprotokoll" wird ja gar nicht ausgeführt, wenn der Fehler bereits beim Aufruf auftritt.
Und der Fehlermeldung würde ich Glauben schenken, das Steuerelement mit dem angegebenen Namen gibt es nicht.

Was mich nur stutzig macht ist folgendes:
Wieso kommst du auf die Idee, dass im Formularereignis "Vor Aktualisierung" der Fokus auf dem/einem geänderten Feld liegt?
Und wieso protokollierst du lediglich das zufällig zuletzt geänderte Feld und nicht alle?
Da wären die BeforeUpdate-Ereignisse der Textfelder doch sicher besser geeignet für die Pflege eines Änderungsprotokolls.

_________________
Gruß MissPh!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite Zurück  1, 2, 3, 4, 5 ... , 16, 17, 18, 19, 20  Weiter
Diese Seite Freunden empfehlen

Seite 19 von 20
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: M:N Beziehungen um alle Datensätze zu sehen? 3 zuperwoman 687 04. Jul 2005, 10:46
stpimi M:N Beziehungen um alle Datensätze zu sehen?
Keine neuen Beiträge Access Tabellen & Abfragen: Reduzierung mehrerer Datensätze auf einen Datensatz 2 Pulldown 819 03. Jun 2005, 09:32
Pulldown Reduzierung mehrerer Datensätze auf einen Datensatz
Keine neuen Beiträge Access Tabellen & Abfragen: Datensätze paarweise berechnen? 4 adiag 883 21. Mai 2005, 22:28
adiag Datensätze paarweise berechnen?
Keine neuen Beiträge Access Tabellen & Abfragen: Filtere alle Datensätze ab der 3 Stelle die nicht PC heißen? 7 centerguide 1302 18. Mai 2005, 11:39
centerguide Filtere alle Datensätze ab der 3 Stelle die nicht PC heißen?
Keine neuen Beiträge Access Tabellen & Abfragen: Datensätze zusammenfassen 1 Tatanka 1121 29. Apr 2005, 14:52
jens05 Datensätze zusammenfassen
Keine neuen Beiträge Access Tabellen & Abfragen: Aus 1 Datensatz mit 10 Infos mache 10 Datensätze à 1 Info 2 Steve 914 14. Jan 2005, 00:43
Steve Aus 1 Datensatz mit 10 Infos mache 10 Datensätze à 1 Info
Keine neuen Beiträge Access Tabellen & Abfragen: multiplizieren zweier verschiedener Datensätze 3 Stara 913 13. Jan 2005, 20:36
Skogafoss multiplizieren zweier verschiedener Datensätze
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage um doppelte Datensätze zu ermitteln? 5 tom444 5066 14. Dez 2004, 23:49
Skogafoss Abfrage um doppelte Datensätze zu ermitteln?
Keine neuen Beiträge Access Tabellen & Abfragen: Anzahl der Datensätze anzeigen? 3 MichaelB 1122 19. Okt 2004, 12:45
lothi Anzahl der Datensätze anzeigen?
Keine neuen Beiträge Access Tabellen & Abfragen: Einmalige Datensätze löschen 18 frankkugler 1614 18. Okt 2004, 15:33
frankkugler Einmalige Datensätze löschen
Keine neuen Beiträge Access Tabellen & Abfragen: leere Datensätze löschen 3 umbroboy 2666 07. Okt 2004, 16:51
Skogafoss leere Datensätze löschen
Keine neuen Beiträge Access Tabellen & Abfragen: datensätze suchen 13 mr@ 1514 13. Sep 2004, 10:21
meyster datensätze suchen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps