Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Feld nach Datenänderung im Datensatz ändern per VBA, wie?

Begonnen von Andreas Irmer, Januar 05, 2023, 20:51:58

⏪ vorheriges - nächstes ⏩

Andreas Irmer

Hallo zusammen,

ich möchte nach Änderung eines Datensatzes in einem Formular ein Tabellenfeld (Boolean) auf True setzen. Alternativ könnte auch das Feld Termine.GeaendertAm im Datensatz mit dem aktuellen Zeitpunkt beschrieben werden, damit ich es mit Lastmodified in Outlook vergleichen kann. (Ich glaube, das wäre noch deutlich eleganter als ein zusätzliches Feld in der Tabelle zu führen.)

Dadurch könnte ich später die Menge an Datensätzen, die es nach Outlook zu schreiben gilt, deutlich minimieren.

Es wäre schön, wenn mir hier jemand helfen könnte, wie ich die VBA Routine aufbauen muss, um diese Daten unter "nach Aktualisierung" auszulösen.

Übrigens: Falls es jemanden interessiert, habe ich den Code für den Schreibprozess nach Outlook hier veröffentlicht.
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar
  •  

MzKlMu

Hallo,
im Formularereignis "Nach Aktualiserung" folgenden Code:
Me.GeaendertAm = Now()Schreibt das aktuelle Datum mit Zeit in das Feld.
Gruß
Klaus
  •  

Lampedusa

Hallo Klaus,
ich quäle mich mit dem selben Problem rum, aber die Lösung funktioniert bei mir nicht. Ich erhalte immer eine Fehlermeldung dass Access 'ME' nicht erkennt? Wenn ich 'Me.' weglasse, erkennt den Auasdruck erfasst nicht. Wie muss der Ausdruck korrekt eingebunden werden? Ich binneu bei Access und VBA.
Gruß Günter
  •  

MzKlMu

Hallo,
Deine Frage ist nichtsagend. Du solltest schon genau beschreiben was Du wo mit welchem Ausdruck machst.
Und ohne den Ausdruck zu sehen kann man doch nicht sehen wo der Fehler ist, oder ?
Gruß
Klaus
  •  

Beaker s.a.

Hallo Günter,
Als Ausdruck sollte dies funktionieren
[DeinFeld]=Now()
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.
  •  

Lampedusa

Hallo Klaus, hallo Ekkehard, Hallo zusammen,
wenn ich die Anregungen richtig verstanden habe, dann müsste der benötigte Code wie folgt aussehen, wäre das korrekt? Datenbank: Strassen Tabelle: Berge im Formular, das ebenfalls ,,Berge" heißt, den ich bei der Neuerfassung im Feld ,,erfasst" das Datum mit Date() füllen und wenn irgend ein Feld im Formular geändert wird, will ich im Feld ,,geaendert" das Datum mit NOW() aktualisieren, sodass immer die letzte Bearbeitungszeit angezeigt wird. Wenn kein Feld im Formular verändert wird, bleibt der aktuelle Bearbeitungsstand erhalten, wenn erneut ein Feld geändert wird, soll der Wert im Feld ,,geaendert" ersetzt werden.
Meine Idee für den Part im Feld geaendert:
___________________________________________
Private Sub Form_AfterUpdate()
    With Strassen.Berge
        Dim intnewrec As Integer
        intnewrec = frm.NewRecord
            If intnewrec = false
            Select Case .Status1
            Case 1
                .geaendert = Now()
            End Select
        End If
        .geaendert = Now()
    End With
End Sub

Private Sub geaendert_AfterUpdate(Cancel As Integer)

End Sub
______________________

Wie muss ich die Prozedur im VBA-Editor speichern, damit Sie mir unter Makros oder Module angezeigt wird und zur Verfügung steht? Wie ihr seht, bibn ich bei Access und VBA wirklich neu,
Vielen Dank
Günter
  •  

Andreas Irmer

Zitat von: MzKlMu am Januar 05, 2023, 23:40:21Hallo,
im Formularereignis "Nach Aktualiserung" folgenden Code:
Me.GeaendertAm = Now()Schreibt das aktuelle Datum mit Zeit in das Feld.

Hallo Klaus,

bitte entschuldige, dass ich jetzt seit drei Monaten offline war. Wir hatten im Januar eine große Messe, die sehr erfolgreich und daher auch sehr zeitraubend war.

Ich kann jetzt die aktuelle Zeit mit dem Befehl hinzufügen aber stelle im Nachhinein fest, dass es immer wieder Abweichungen zum LastModified des Kalendereintrags gibt. Dies merke ich dann, wenbn ich den Zeiteintrag später mit dem LAstmodified vergleiche. Die Abweichung ist mal nur wenige Sekunden, manchmal aber auch zwei oder drei Minuten.

Damit gelingt es mir nicht, die nicht geänderten Datensätze auszublenden und so dauert der Schreibprozess vonn aktuell 100 Aufträgen mit zusammen etwa 400 Termineinträgen inzwischen fast acht Minuten.

Dies hier nur zur Info. Ich mache ein neues Thema auf mit konkreten Fragen und konkreter Beschreibung, wenn es soweit ist.

Danke und viele Grüße
Andreas
Andreas Irmer
für jede Hilfe dankbar und für Tipps zum Thema Wohnmobil, Wohnwagen auch für jeden erreichbar
  •  

ebs17

ZitatAlternativ könnte auch das Feld Termine.GeaendertAm im Datensatz mit dem aktuellen Zeitpunkt beschrieben werden, damit ich es mit Lastmodified in Outlook vergleichen kann.
Wenn Du etwa einschätzen kannst, wie lang Deine Bearbeitungszeiten sind, kannst Du solche zum Vergleich heranziehen:
If Abs(ZeitInAccess - ZeitInOutlook) < 1/48 Then ...    ' kleiner halbe Stunde
Mit freundlichem Glück Auf!

Eberhard
  •