Asked by:
How to save and record a button single click event's time to access field

Question
-
Develop PDMS via access. For production tracer ability, I need to record the each button click event's time, and save it to field. I use the function Now().
Monday, November 5, 2018 2:55 AM
All replies
-
You'll have to create a public function and call it as part of each button's click event.
In a standard module you could do something along the lines of
'Req'd for fOSUserName() below Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long Public Function BtnClickTracer(ByVal frmName As String, ByVal ctlName As String) As Boolean Dim db As DAO.Database Dim sSQL As String On Error GoTo Error_Handler Set db = CurrentDb sSQL = "INSERT INTO tbl_ClickTracking (FrmName, CtlName, ClickDate, Username) " & vbCrLf & _ "SELECT '" & frmName & "' AS Expr4, '" & ctlName & "' AS Expr3, Now() AS Expr1, fosusername() AS Expr2;" db.Execute sSQL, dbFailOnError If db.RecordsAffected <> 0 Then BtnClickTracer = True End If Error_Handler_Exit: On Error Resume Next If Not db Is Nothing Then Set db = Nothing Exit Function Error_Handler: MsgBox "The following error has occured" & vbCrLf & vbCrLf & _ "Error Number: " & Err.Number & vbCrLf & _ "Error Source: BtnClickTracer" & vbCrLf & _ "Error Description: " & Err.Description & _ Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _ , vbOKOnly + vbCritical, "An Error has Occured!" Resume Error_Handler_Exit End Function '******************** Code Start ************************** ' This code was originally written by Dev Ashish. ' It is not to be altered or distributed, ' except as part of an application. ' You are free to use it in any application, ' provided the copyright notice is left unchanged. ' ' Code Courtesy of ' Dev Ashish ' Function fOSUserName() As String ' http://www.theaccessweb.com/api/api0008.htm ' Returns the network login name Dim lngLen As Long Dim 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 '******************** Code End **************************
and then in each button's click event you'd call it
Call BtnClickTracer(Me.Name, Screen.ActiveControl.Name)
Daniel Pineault, 2010-2018 Microsoft MVP
Professional Support: http://www.cardaconsultants.com
MS Access Tips and Code Samples: http://www.devhut.netMonday, November 5, 2018 10:57 AM -
Thanks your reply.
We develop the PDMS via access. For production tracer ability, I add function now() to record the Command button click event's time. On related query there a field "print time" to save the value of now(). But now just save the last print time from now(). I want to save all value from function now() if click this button many times.
Sorry I cant add a photo attachment.
https://social.msdn.microsoft.com/Forums/getfile/1356074
https://social.msdn.microsoft.com/Forums/getfile/1356075
Tuesday, November 6, 2018 12:58 PM -
Thanks your reply.
We develop the PDMS via access. For production tracer ability, I add function now() to record the Command button click event's time. On related query there a field "print time" to save the value of now(). But now just save the last print time from now(). I want to save all value from function now() if click this button many times.
Sorry I cant add a photo attachment.
https://social.msdn.microsoft.com/Forums/getfile/1356074
https://social.msdn.microsoft.com/Forums/getfile/1356075
Wednesday, November 7, 2018 12:46 AM -
Hi,
Can't see your download file.
Daniel had given you a sample code. The code needs to modify for your own use.
You can still do it without the sample function. It will requires you to key-in the same (almost) code in each and every Buttons on your Form.
To use a single function for the button click, you'll need a Function with a input value (the button number).
From what you're asking, it seems you're doing an audit checks.
To call the function, use the button OnClick Event
Private Sub MyButtonNo1() MyFunctionName("ButtonNo1") End Sub
Create a VBA Module
Function MyFunctionName(MyString As String) CurrentDB.Execute "INSERT INTO MyTableName (ClickTime, WhichButtonClick) VALUES (Now(), MyString)" End Function
Hope the code sample will give you an idea.
Wednesday, November 7, 2018 3:19 AM