Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Datenmakro für Änderungen funktioniert, bis auf ...

Begonnen von derilzemer, April 01, 2015, 20:47:28

⏪ vorheriges - nächstes ⏩

derilzemer

Hallo,
ich habe in meiner Datenbank einen Audit über Änderungen angelegt. Als Grundlage habe ich mich an diesen Beitrag gehalten. https://scottgem.wordpress.com/2012/10/18/audit-trail-using-data-macros-2/
Da ich eine deutsche Access Version 2013 habe, musste ich natürlich die Ausdrücke wie z.B. Updated mit Aktualisiert, if mit Wenn und natürlich an meine Tabelle anpassen. Alles funktioniert, bis auf die Sache mit dem User. Auf der Webseite wird fOSUsername angegeben, dazu ein kleines Makro (wie in  der TestDB, welche zur Verfügung gestellt wird), aber es funktioniert nicht.
Makromodul:
Option Compare Database
Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" Alias _
    "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

Function fOSUserName() As String
' Returns the network login name
Dim lngLen As Long, lngX As Long
Dim strUserName As String
    strUserName = String$(254, 0)
    lngLen = 255
    lngX = apiGetUserName(strUserName, lngLen)
    If (lngX > 0) Then
        fOSUserName = Left$(strUserName, lngLen - 1)
    Else
        fOSUserName = vbNullString
    End If
End Function

Sobald ich diese "Wenn" Sektion entferne geht das Makro wieder. Ich habe auch versucht mit Environ zu arbeiten Environ("USERNAME") aber das hat wie erwartet nicht geholfen :-(. Ich habe da leider zu wenig Ahnung, wie ich dies in dem Bereich lösen kann. Wer hat hierzu einen Tip?
Gruß Andreas
Grüße und Dank im voraus
Andreas

MaggieMay

#1
Hallo Andreas,

ich verstehe ehrlich gesagt nicht, was du mit Wenn-Sektion meinst und Makros sind in Access auch etwas ganz anderes. Was du zeigst ist schlicht und einfach VBA-Code und der richtet sich auch in deutschsprachigem Access nach englischer Syntax.

Beschreibe doch bitte mal genauer, was "funktioniert nicht" bedeutet. Gibt es Fehlermeldungen, dann zitiere sie.

Freundliche Grüße
MaggieMay

derilzemer

Hi,
den VBA Code habe ich ja nur gepostet, was in dem kleinen VBA Modul drin steht, mehr nicht.
Naja, es heißt nun mal Datenmakro erstellen, wenn ich nach Aktualisierung was protokollieren möchte. Was du jetzt meinst, dass unter Access ein Datenmakro was ganz anderes ist kann ich jetzt nicht zuordnen. Schau dir mal bitte die beiden Bilder an. In sektion_fOSUSer ist das drin, was ich nicht hinbekomme, eben dieser Wert=fOSUsername. Bild sektion_ohne-fOSUser ist aktuell bei mir so integriert und geht, aber eben ohne den fOSUsername. Dafür habe ich keine Idee, wie ich das in der deutschen Version lösen muss. Ich weiss nicht wie ich es anders erklären soll :(.

Gruß Andreas
Grüße und Dank im voraus
Andreas

MaggieMay

Sorry, aber der Begriff "Datenmakro" ist in deinem ersten Beitrag nicht gefallen, das ist natürlich etwas anderes.
(OK, steht im Thema, habe ich glatt übersehen...)

Das entscheidende hast du aber weggelassen. Wie sieht denn die ausgelassene Aktion in deiner Version des Makros aus?

Was hat es mit dem "PtrSafe" auf sich, setzt du ein 64-Bit Office ein?
Freundliche Grüße
MaggieMay

derilzemer

Hi,
ja "PtrSafe" weisst darauf hin, dass ich eine 64 Bit Version einsetze ;).
Okay, ich bin noch mal in mich gegangen. Ich war wohl ein wenig verwirrt (wie so oft). Es hat ja mit der Test-DB auf meinem Rechner funktioniert. Also muss es ja auch mit meiner DB gehen, egal wie. Ich habe es jetzt noch einmal an der eingegeben und et voila es geht. Was ich in den 2 Stunden zuvor falsch gemacht habe weiss ich nicht :(. Danke aber, dass du versucht hast mich mit Fragen zu bewegen am Thema dran zu bleiben. Danke und Gruß
Andreas
Grüße und Dank im voraus
Andreas