xdcblade
Goto Top

CreationTS im Access erstellen

Morgen Leute

Ich will ein Erstellungsdatum und ein Änderungsdatum in meiner Datenbank hinzufügen.
Soweit hät ich es im Code so eingetragen:

Private Sub Form_AfterUpdate()
    On Error GoTo err_AfterUpdate
     DoCmd.SetWarnings False
     If Me.NewRecord = True Then
          DoCmd.RunSQL "UPDATE tbl_Picture SET createTS = '" & Now() & "', createUser = '" & CurUSR & "' WHERE ID = " & Me.txtID.Value  
     Else
          DoCmd.RunSQL "UPDATE tbl_Picture SET changeTS = '" & Now() & "', changeUser = '" & CurUSR & "' WHERE ID = " & Me.txtID.Value  
     DoCmd.SetWarnings True
     End If
          
err_AfterUpdate:
     Exit Sub
     
End Sub

Jetzt mein Problem:
das Änderungsdatum tragt er in der Tabelle problemlos ein, allerdings das Erstellungsdatum nicht.

Könnt ihr mir helfen?


mfg Fabi

Content-ID: 171750

Url: https://administrator.de/contentid/171750

Ausgedruckt am: 25.11.2024 um 23:11 Uhr

vossi31
vossi31 19.08.2011 um 10:31:32 Uhr
Goto Top
Moin Fabi,

pack die Abfrage auf Me.NewRecord stattdessen in die Sub Form_Dirty

Henning
xdcBlade
xdcBlade 19.08.2011 um 11:41:28 Uhr
Goto Top
Danke für die Antwort, wenn ich die Abfrage in Sub Form_Dirty reinschmeiss kommt folgender Fehler:

Sie habe als Einstellung der Ereigniseigenschaft den Asudruck bei Laden eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Deklaration der Prozedur entspricht nicht der BEschreibung eines Ereignisses oder einer Prozedur mit demselben Namen.

Kann es sein das ein Datenformat nicht übereinstimmt?

mfg Fabi
vossi31
vossi31 19.08.2011 um 12:03:28 Uhr
Goto Top
Die Declaration der Funktion heißt vollständig:

Private Sub Form_Dirty(Cancel As Integer)

oder Doppelklick auf "Bei Änderung" in den Formulareigenschaften

Henning
xdcBlade
xdcBlade 19.08.2011 um 13:07:28 Uhr
Goto Top
Die Declaration passt jetzt, allerdings aktualisiert er meine Datenbank immer noch nicht.

mfg Fabi
vossi31
vossi31 19.08.2011 um 14:12:04 Uhr
Goto Top
Hast Du getestet ob das Programm bis zu Deinem DoCmd.RunSQL kommt?

Wenn in der funktionierenden Routine das Änderungsdatum geschrieben wird muss Dein SQL-String ja korrekt sein. Wenn dann die DB-Felder für Create auch sinngemäß genauso aussehen wie für Änderungen müsste das für die Neuanlage ja übertragbar sein.

ZumTesten vielleicht auch mal "DoCmd.SetWarnings False " weglassen oder auf True setzen.

Und/oder nochmal die Routine posten.

Henning
xdcBlade
xdcBlade 19.08.2011 um 15:25:23 Uhr
Goto Top
wenn ich den String ändere
          DoCmd.RunSQL "UPDATE tbl_Picture SET createTS = '" & Now() & "'"  

greift er auf die Datenbank zu und ändert etwas, allerdings ändert er alle Datensätze.

mfg
vossi31
vossi31 19.08.2011 um 15:45:02 Uhr
Goto Top
Dann kannst Du jetzt ja noch die WHERE - Clause ergänzen, die Du am Anfang schon hattest.

Aber mal ehrlich, eigentlich weißt Du nicht, was Du da tust, oder? Ich hoffe Du arbeitest mit einer Kopie und nicht an Produktivdaten.

Henning
xdcBlade
xdcBlade 19.08.2011 um 16:17:04 Uhr
Goto Top
ich stückel mir alles grade zusammen...selber programmiere ich normal nicht...aber is zum glück nicht mein eigentliches gebiet ;)

das mit der where - clause war mir scho klar nur da bin ich wieder beim anfang...er fügt wieder nichts ein...


Ich werds einfach bei der ChangeTS belassen.

mfg
vossi31
vossi31 19.08.2011 um 17:21:37 Uhr
Goto Top
Du kannst jetzt natürlich aufgeben, aber scheinbar wärst Du ja fast am Ziel.

Wenn er mit der WHERE-Clause nichts macht, aber ohne WHERE alle Sätze updated muss die WHERE-Clause der Fehler sein. Dann muss eigentlich "Me.txtID.Value" anders sein als Du es erwartest, wahrscheinlich noch ohne Wert.
Aber wenn ich mir das ganze so überlege, gehts wahrscheinlich gar nicht so, weil der Datensatz zu dem Zeitpunkt noch gar nicht in der Datenbank steht und damit das Update ins Leere läuft.
Mach es doch einfach ohne SQL, also

Me.createTS = now
Me.createUser = CurrentUser

Wobei die beiden Felder (unsichtbar) in dem Formular stehen müssten

Henning
xdcBlade
xdcBlade 22.08.2011 um 12:25:20 Uhr
Goto Top
perfekt, so funktionierts... face-smile


Danke vielmals!

mfg Fabi