ขอยกตัวอย่างที่ผมทำนะครับ
แต่ผมเก็บ log ไว้ในตารางนะครับ ไม่ได้เขียนลงไฟล์
เหตุการณ์ After_Click ในปุ่ม OK / ในฟอร์ม Login
'โค้ดนี้หลังจากตรวจสอบ username / password ผ่านแล้ว
LogUser_ID = DLookup("Employee_ID", "Employees", "Username='" & Me.txtUserName.Value & "'")
EnvUserName = Eniron("USERNAME")
EnvCompName = Environ("COMPUTERNAME")
Call Start_SS(LogUser_ID, EnvUserName, EnvCompName)
Call SaveActivity(session_Login_ID, "ลงชื่อเข้าใช้", session_Env_UserName, session_Env_CompName, Now())
มาที่โมดูล
ฟังก์ชั่นสร้างเซซซั่น ประกาศตัวแปรเป็นแบบ Public เอาไว้เรียกใช้เวลาจะตรวจสอบผู้ใช้ก่อนจะทำอะไรต่าง ๆ
Public Function Start_SS(getUser_ID As Integer, getUserName As String , getCompName As String)
session_Login_ID = getUser_ID
session_Env_UserName = getUserName
session_Env_CompName = getCompName
End Function
ฟังก์ชั่นในการบันทึกว่าใครทำอะไร
Public Function SaveActivity(LogUser_ID As Integer, Activity As String, getUserName As String, getCompName As String, TimeStampNow As Date)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("Activity_Log")
rs.AddNew
rs("Employee_ID") = LogUser_ID //ID
rs("Activity_Log") = Activity //ทำอะไร
rs("User_Name") = getUserName //ชื่อที่ลงชื่อเข้าใช้คอมพิวเตอร์
rs("Computer_Name") = getCompName //ชื่อของเครื่องคอมพิวเตอร์
rs("TimeStamp_Log") = TimeStampNow // วันเวลา
rs.Update
rs.Close
End Function
การเรียกบันทึก log
วิธีการเรียกใช้ก็คือ เรียกฟังก์ชั่น SaveActivity ในเหตุการณ์ที่ต้องการบันทึก log เช่น AfterInsert , AfterUpdate , หรือปุ่มกดต่าง ๆ
ตัวอย่าง
Call SaveActivity(session_Login_ID, "สร้างในเสนอราคา No : " & Me![Q_ID], session_Env_UserName, session_Env_CompName, Now())
Call SaveActivity(session_Login_ID, "แก้ไขใบเสนอราคา No : " & Me![Q_ID], session_Env_UserName, session_Env_CompName, Now())
คร่าว ๆ ประมาณนี้ครับ