Avatar billede ugotabe_kidding Nybegynder
07. december 2001 - 14:35 Der er 12 kommentarer og
1 løsning

Lagre historisk data i tabel

Jeg sidder og roder med at skulle gemme nogle historiske værdier i en tabel:

Jeg vil gerne kunne se hvilken bruger (og hvornår), der har oprettet et felt i en tabel. Desuden vil jeg gerne kunne se hvornår der er lavet ændringer i feltet (af hvem og hvornår)

Håber at der findes en simpel løsning :o)
Avatar billede terry Ekspert
07. december 2001 - 14:48 #1
Lets say you have a form containing the fields you have in your table. If you add two more fields to the TABLE for example:

LastUser (text) and LastUpdated (date/time)

Then in the forms before update event set the following code:

Me.LastUser = currentuser()
Me.LastUpdated = Now()



Avatar billede terry Ekspert
07. december 2001 - 14:53 #2
This only works if you are using Access User/Group security or the currentuser will be set to Admin.

You can use the following to get the logged in user
Place this in a module:

Private Declare Function GetUserName Lib \"advapi32.dll\" Alias \"GetUserNameA\" (ByVal lpBuffer As String, nSize As Long) As Long

Public Function sGetUserName() As String
Dim lBufSiz As Long
Dim sBuf As String
 
  sBuf = String$(255, 0)
  lBufSiz = 255
  If GetUserName(sBuf, lBufSiz) Then
    sGetUserName = UCase$(Left$(sBuf, lBufSiz - 1))
  Else
    sGetUserName = Null
  End If
 
end function
Avatar billede ugotabe_kidding Nybegynder
07. december 2001 - 15:04 #3
Thanks..
But I have no experience with modules (Visual Basic) and if there is an easier way, Id very much like that.
Its not a problem pasting your example into a module, but how do I use it ?
Can\'t the date and user-information be inserted directly into a table ?
I hope this isn\'t a rediculous question !?!
Avatar billede terry Ekspert
07. december 2001 - 19:47 #4
paste the above into a module.

Then in your form

If you are using Access user/group security

Me.LastUser = currentuser()
Me.LastUpdated = Now()

OR if you are using windows logon

Me.LastUser = sGetUserName
Me.LastUpdated = Now()





Avatar billede ugotabe_kidding Nybegynder
07. december 2001 - 21:21 #5
I hvilken sammenhæng skal det ind, i hhv. modulet og formen ?

Jeg satser på at anvende Windows-logon metoden, da den virker lettest tilgængelig..

Håber at du kan hjælpe en rookie i nød :o)
Avatar billede terry Ekspert
08. december 2001 - 09:31 #6
You will more than likely have a form showing the fields you can change and add records in.

Place this code in the FORMS BEFORE UPDATE event. You dont need to have these fields visible on the form, but they obviously must exist in the table.

Hope that helps!
Avatar billede ugotabe_kidding Nybegynder
11. december 2001 - 09:21 #7
>> terry
Tak for al din hjælp, men indtil videre kan jeg stadig ikke få det til at virke :o(
Jeg har en Usertabel med de forskellige brugere i og en tabel med alle de data, jeg ønsker at registrere. I sidstnævnte tabel er der derfor en fremmednøgle fra Usertabellen.
Men jeg har desværre stadig ikke held med det.
Min indtastningsform ser ud således:
Option Compare Database
Me.LastUser = CurrentUser()
Me.LastUpdated = Now()

Private Sub Combo68_AfterUpdate()
    \' Find the record that matches the control.
    Dim rs As Object

    Set rs = Me.Recordset.Clone
    rs.FindFirst \"[CorpNo] = \" & Str(Me![Combo68])
    Me.Bookmark = rs.Bookmark
End Sub

Private Sub Command82_Click()
On Error GoTo Err_Command82_Click


    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

Exit_Command82_Click:
    Exit Sub

Err_Command82_Click:
    MsgBox Err.Description
    Resume Exit_Command82_Click
   
End Sub
-------------
Jeg har lavet et modul \"GetUserName\"

Private Declare Function GetUserName Lib \"advapi32.dll\" Alias \"GetUserNameA\" (ByVal lpBuffer As String, nSize As Long) As Long

Public Function sGetUserName() As String
Dim lBufSiz As Long
Dim sBuf As String
 
  sBuf = String$(255, 0)
  lBufSiz = 255
  If GetUserName(sBuf, lBufSiz) Then
    sGetUserName = UCase$(Left$(sBuf, lBufSiz - 1))
  Else
    sGetUserName = Null
  End If
 
End Function
---------
Det ville være en KANON hjælp hvis du kunne hjælpe mig over denne \"hurdle\".. Det har VIRKELIG taget lang tid nu :o(
Avatar billede terry Ekspert
11. december 2001 - 09:34 #8
send the db to dktebrsa@europe.lego.com and I will take a look this evening, is that OK?

You also need to send the system.mdw and username/password
Avatar billede ugotabe_kidding Nybegynder
11. december 2001 - 10:22 #9
>>terry
Kan du ikke lige bekræfte at du har modtaget det ?
Min mailboks driller mig lidt...
Avatar billede terry Ekspert
11. december 2001 - 10:24 #10
I havent received a thing!
Avatar billede ugotabe_kidding Nybegynder
11. december 2001 - 10:35 #11
Hva\' med nu ?
Avatar billede ugotabe_kidding Nybegynder
04. januar 2002 - 16:37 #12
>>>terry
Jeg takker for din hjælp fra tidligere, men jeg må desværre indrømme at jeg er en klovn til moduler og VB.
Jeg skal lagre 6 værdier fra DB\'en + datoen for ændringen. Du har været til stor hjælp, men jeg roder stadig med at indsætte det i den rette form (og det rette sted i formen) og SQLudtrykket driller også lidt. Jeg er i tvivl om der skal være \' \' eller \" \" om de forskellige udtryk.
Håber at du stadig har mod på at hjælpe en stakkel i nød :o)
Avatar billede terry Ekspert
04. januar 2002 - 22:26 #13
Hi!
I\'ve been in GB for the New Year, so hope I can help you now.
I never did get your mail, I received a mail cintaining a shortcut, but didnt open it as I had a feelingit wa sa virus!

Http://feilong... or something.

SEND me a mail with a refrence to this question so I know what I ma receiving, then I will take a look.

mvh
Terry
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester