อยากได้วิธีสร้าง logfile



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

17 ส.ค. 62 , 04:16:57
อ่าน 289 ครั้ง

kunlek

อยากได้วิธีสร้าง logfile
« เมื่อ: 17 ส.ค. 62 , 04:16:57 »
อยากได้วิธีสร้าง logfile เพื่อรู้ว่าใครเข้าใช้งาน  วันที่  เวลา เรียกใช้ไฟล์ใดบ้าง

 

18 ส.ค. 62 , 17:11:16
ตอบกลับ #1

สันติสุข

: อยากได้วิธีสร้าง logfile
« ตอบกลับ #1 เมื่อ: 18 ส.ค. 62 , 17:11:16 »
ใช้ฟังก์ชั่น Environ("username") เพื่ออ่านค่า Windows User
ใช้ฟังก์ชั่น Environ("computername") เพื่ออ่านชื่อเครื่อง
การเก็บ log ก็สามารถทำได้ทั้งสร้างเทเบิลไว้เก็บข้อมูลการใช้งาน แล้วก็สั่งเขียนลงเทเบิลเหมือนทั่วๆไปนี่แหล่ะครับ หรือจะเขียนลงเท็กซ์ไฟล์ก็ได้โดยใช้โค้ด

' #1 คือเลขที่ของไฟล์ที่เรากำหนดเอาเอง (อาจเป็น #7 #23 หรือเลขอะไรก็ได้) ใช้เพื่ออ้างอิงสำหรับคำสั่งอื่นๆที่ทำกับไฟล์นี้
open "drive:\path\...\file.txt" for append as #1
write #1, "ข้อความ", ตัวแปร, ...
close #1

ส่วนที่บอกว่าเรียกใช้ไฟล์หรือเทเบิลอะไรนั้น ตัว Access ไม่มี event อะไรที่ดักจับตรงจุดนี้ให้ คุณต้องหา event ที่เหมาะสมที่เป็นจุดของการใช้ไฟล์เหล่านั้นเอง
« แก้ไขครั้งสุดท้าย: 19 ส.ค. 62 , 22:40:19 โดย สันติสุข »
ช่วยพกถุงผ้า/ถุงพลาสติกไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

19 ส.ค. 62 , 22:39:42
ตอบกลับ #2

สันติสุข

: อยากได้วิธีสร้าง logfile
« ตอบกลับ #2 เมื่อ: 19 ส.ค. 62 , 22:39:42 »
ผมผิดแล้ว กรณีการใช้เทเบิล สามารถสร้าง Data Macro เพื่อบันทึกเหตุการณ์ได้ แต่รายละเอียดนี่ไม่ทราบ ยังไม่เคยใช้เลย ท่านใดที่รู้ช่วยตอบแทนด้วย

UPDATE : เท่าที่ทดลองถึงตอนนี้ คิดว่าบันทึก log ได้เมื่อมีการเพิ่ม/แก้ไข/ลบข้อมูลในเทเบิล แต่น่าจะไม่มี event ที่เกิดจากการอ่านข้อมูล ดังนั้นการจะบันทึกว่ามีการอ่านข้อมูลเกิดขึ้น ยังคงต้องหาตำแหน่งที่เหมาะสมในโค้ดของเราเองครับ
« แก้ไขครั้งสุดท้าย: 20 ส.ค. 62 , 09:09:54 โดย สันติสุข »
ช่วยพกถุงผ้า/ถุงพลาสติกไปซื้อของเพื่อลดการใช้พลาสติก ขยะ รักษาสิ่งแวดล้อม และไม่ให้ภาวะโลกร้อนวิกฤติเร็วขึ้นกว่านี้
ช่วยคลิกโฆษณาข้างล่างนี้ เพื่อสนับสนุนเวปบอร์ดด้วยครับ
:nice day:
 

23 ส.ค. 62 , 17:24:43
ตอบกลับ #3

kunlek

: อยากได้วิธีสร้าง logfile
« ตอบกลับ #3 เมื่อ: 23 ส.ค. 62 , 17:24:43 »
จริงๆๆต้องการแค่รู้ว่า usernameอะไร login เมื่อไหร่ logout เมื่อไหร่ ส่วนจะไปทำอะไร กับไฟล์อะไร ใช้พูดคุยกันครับ? ใครพอมีตัวอย่างเพื่อศึกษาบ้างครับ 

 

24 ส.ค. 62 , 11:48:43
ตอบกลับ #4

Kxess

: อยากได้วิธีสร้าง logfile
« ตอบกลับ #4 เมื่อ: 24 ส.ค. 62 , 11:48:43 »
ขอยกตัวอย่างที่ผมทำนะครับ
แต่ผมเก็บ log ไว้ในตารางนะครับ ไม่ได้เขียนลงไฟล์


เหตุการณ์ After_Click ในปุ่ม OK / ในฟอร์ม Login

โค๊ด: [Select]
'โค้ดนี้หลังจากตรวจสอบ 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 เอาไว้เรียกใช้เวลาจะตรวจสอบผู้ใช้ก่อนจะทำอะไรต่าง ๆ

โค๊ด: [Select]
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


ฟังก์ชั่นในการบันทึกว่าใครทำอะไร
โค๊ด: [Select]
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())

คร่าว ๆ ประมาณนี้ครับ


 


บอร์ดเรียนรู้ Access สำหรับคนไทย