การเก็บ Log เวลามีคนเข้ามาใช้งาน Access ทำอย่างไรครับ


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

03 มี.ค. 62 , 10:10:55
อ่าน 1488 ครั้ง

Keng

  • สมาชิกไท.Access
  • กระทู้: 7

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ผมลองทำตามคำแนะนำในเวปต่างๆ เรื่องการเก็บ Log คนเข้าใช้งานทั้งชื่อ และ เวลาการใช้งาน ใช้คำสั่งด้งนี้่ได้แต่ผลลัพธ์ของเวลาแล้ว แต่ชื่อคนที่พิมพ์ไม่ปรากฎ
ขอคำแนะนำหน่อยว่าคำสั่งใน Form พิมพ์ชื่อตอนเข้าใช้งาน (ชื่อกล่อง PassBox) อยากให้ขึ้นข้อมูลชื่อคนพิมพ์เป็น Record เก็บไว้ในตาราง Table1 ที่ตั้งไว้(เวลาที่ใช้ขึ้นแล้วในตารางนี้) ต้องแก้ไขอย่างไรครับ
ผมใช้คำสั่งดังนี้

(รหัสผ่านใน Form ที่ให้คีย์ ชื่อ PassBox)

Private Sub Command21_Click()

Dim fpass As String
On Error GoTo 1: MsgBox "Invalid UserName / Password ??? Please Enter"
fpass = DLookup("[User]![Password]", "[User]", "[UserName]=[UserBox]")


    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Table1", dbOpenDynaset)
    rs.AddNew
    rs!Login_name = "[UserBox]"
   
    rs!Login_Date = Now()
    rs.Update
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
   
If fpass = PassBox.Value Then
DoCmd.OpenForm "OA DBMS_Form", acNormal, "", "", , acNormal

End If
Exit Sub
1:

End Sub

ขอบคุณมากครับ

 

03 มี.ค. 62 , 11:33:30
ตอบกลับ #1

ปิ่นณรงค์

มี 2 แบบนะครับ

แบบที่ 1 ถ้าต้องการแสดงชื่อเต็มๆ ของ User


ที่ตาราง User ใส่ Field FullName เข้าไปด้วยเก็บชื่อนามสกุล ของ User คนนั้นๆ นะครับ
ส่วนตัวอย่างคำสั่งประมาณนี้

โค๊ด: [Select]
Private Sub BtnLogin_Click()
Dim fpass As String, fusername As String
If IsNull(Me.Userbox) Then
MsgBox "กรุณาระบุ UserName", vbInformation, "ข้อผิดพลาด"
Exit Sub
ElseIf IsNull(Me.PassBox) Then
MsgBox "กรุณาระบุ Password", vbInformation, "ข้อผิดพลาด"
Else
fusername = Nz(DLookup("[UserName]", "User", "[UserName]='" & Me.Userbox & "'"))
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบชื่อผู้ใช้งาน"
    Me.Undo
    Me.Userbox.SetFocus
Else
        fpass = Nz(DLookup("[Password]", "User", "[UserName]='" & Me.Userbox & "'"))
       If fpass = Me.PassBox Then
          Call UserLoginStamp
          DoCmd.OpenForm "OA DBMS_Form", acNormal, "", "", , acNormal
       Else
          MsgBox "รหัสผ่านไม่ถูกต้อง", vbCritical, "พบข้อผิดพลาด"
          Me.Undo
          Me.Userbox.SetFocus
    End If
    End If
    End If
End Sub

Sub UserLoginStamp()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim UserFullName As String
   
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Table1", dbOpenDynaset)
    UserFullName = DLookup("[Fullname]", "User", "[UserName]='" & Me.Userbox & "'")
   
    rs.AddNew
    rs!Login_name = UserFullName
    rs!Login_Date = Now()
    rs.Update
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
End Sub

แบบที่ 2 ถ้าไม่ได้ต้องการเก็บชื่อเต็มของ User แต่จะเก็บแค่ Username แทนก็แก้เป็นแบบนี้

โค๊ด: [Select]
Private Sub BtnLogin_Click()
Dim fpass As String, fusername As String
If IsNull(Me.Userbox) Then
MsgBox "กรุณาระบุ UserName", vbInformation, "ข้อผิดพลาด"
Exit Sub
ElseIf IsNull(Me.PassBox) Then
MsgBox "กรุณาระบุ Password", vbInformation, "ข้อผิดพลาด"
Else
fusername = Nz(DLookup("[UserName]", "User", "[UserName]='" & Me.Userbox & "'"))
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบชื่อผู้ใช้งาน"
    Me.Undo
    Me.Userbox.SetFocus
Else
        fpass = Nz(DLookup("[Password]", "User", "[UserName]='" & Me.Userbox & "'"))
       If fpass = Me.PassBox Then
          Call UserLoginStamp
          DoCmd.OpenForm "OA DBMS_Form", acNormal, "", "", , acNormal
       Else
          MsgBox "รหัสผ่านไม่ถูกต้อง", vbCritical, "พบข้อผิดพลาด"
          Me.Undo
          Me.Userbox.SetFocus
    End If
    End If
    End If
End Sub

Sub UserLoginStamp()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
     
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Table1", dbOpenDynaset)
     
    rs.AddNew
    rs!Login_name = Me.UserBox
    rs!Login_Date = Now()
    rs.Update
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
End Sub
« แก้ไขครั้งสุดท้าย: 06 มี.ค. 62 , 22:27:00 โดย ปิ่นณรงค์ »
:love: :grin:
 

06 มี.ค. 62 , 15:39:08
ตอบกลับ #2

Keng

  • สมาชิกไท.Access
  • กระทู้: 7

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ขอบคุณมากๆ ครับ
ได้ run ดูแล้ว Log ขึ้นแล้วครบครับ

แต่ลองใช้คำสั่งการเข้าระบบดู อย่างอื่น OK แต่หากพิมพ์  UserName ผิด มันขึ้นว่า Error บรรทัดนี่้แก้ไขอย่างไรครับ
 
Private Sub Command21_Click()

Dim fpass As String, fusername As String
If IsNull(Me.UserBox) Then
MsgBox "กรุณาระบุ UserName", vbInformation, "ข้อผิดพลาด"
Exit Sub
ElseIf IsNull(Me.PassBox) Then
MsgBox "กรุณาระบุ Password", vbInformation, "ข้อผิดพลาด"
Else
    fusername = DLookup("[UserName]", "User", "[UserName]='" & Me.UserBox & "'")
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบชื่อผู้ใช้งาน"
    Me.Undo
    Me.UserBox.SetFocus

บรรทัดที่ตัวอักษรสีแดง จะแก้ไขอย่างไร รบกวนด้วยครับ

 

06 มี.ค. 62 , 21:11:51
ตอบกลับ #3

ปิ่นณรงค์

ขอบคุณมากๆ ครับ
ได้ run ดูแล้ว Log ขึ้นแล้วครบครับ

แต่ลองใช้คำสั่งการเข้าระบบดู อย่างอื่น OK แต่หากพิมพ์  UserName ผิด มันขึ้นว่า Error บรรทัดนี่้แก้ไขอย่างไรครับ
 
Private Sub Command21_Click()

Dim fpass As String, fusername As String
If IsNull(Me.UserBox) Then
MsgBox "กรุณาระบุ UserName", vbInformation, "ข้อผิดพลาด"
Exit Sub
ElseIf IsNull(Me.PassBox) Then
MsgBox "กรุณาระบุ Password", vbInformation, "ข้อผิดพลาด"
Else
    fusername = DLookup("[UserName]", "User", "[UserName]='" & Me.UserBox & "'")
If fusername = "" Then
    MsgBox "ชื่อผู้ใช้ไม่ถูกต้อง", vbCritical, "ไม่พบชื่อผู้ใช้งาน"
    Me.Undo
    Me.UserBox.SetFocus

บรรทัดที่ตัวอักษรสีแดง จะแก้ไขอย่างไร รบกวนด้วยครับ

แก้เป็นแบบนี้ครับ
fusername = Nz(DLookup("[UserName]", "User", "[UserName]='" & Me.Userbox & "'"))

ลองดูจากตัวอย่างนี้ครับ
« แก้ไขครั้งสุดท้าย: 06 มี.ค. 62 , 21:47:28 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Keng

07 มี.ค. 62 , 08:50:58
ตอบกลับ #4

Keng

  • สมาชิกไท.Access
  • กระทู้: 7

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

ใช้ได้แล้ว ขอบคุณมากๆ ครับ

 


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


 

Sitemap 1 2 3 4 5