กระทู้เก่าบอร์ด อ.Yeadram
3,491 3
URL.หัวข้อ /
URL
การเก็บวันเวลา login-logout ของ user
เรียน อาจารย์ และผู้รู้ทุกท่านคะ
จูนได้สร้าง form login เข้าสู่ระบบให้ user แต่ละแผนกได้แล้ว โดยมี
1.table
User เก็บ UserName และ Password ของแผนกต่างๆ ไว้แล้ว
2.form
login เพื่อใช้เข้าสู่เมนูแผนกต่างๆ ดังนี้
- FrmMenuAccount
- FrmMenuRelated
- FrmMenuSales
- FrmMenuTechnical
- FrmMainMenu สำหรับผู้จัดการ (เปิดได้ทุกฟอร์ม)
*สิ่งที่จูนต้องการตอนนี้คือ อยากให้โปรแกรมสามารถบันทึก ว/ด/ป , เวลา การ login-logout ของ user ทั้งหมดโดยอัตโนมัติเมื่อมีการ login-logout คะ
*จูนต้องสร้างตาราง ฟอร์ม และเขียนโค้ดยังไงบ้างคะ
รบกวนอาจารย์ และผู้รู้ทุกท่านด้วยนะคะ /ขอบคุณคะ
จูนได้สร้าง form login เข้าสู่ระบบให้ user แต่ละแผนกได้แล้ว โดยมี
1.table
User เก็บ UserName และ Password ของแผนกต่างๆ ไว้แล้ว
2.form
login เพื่อใช้เข้าสู่เมนูแผนกต่างๆ ดังนี้
- FrmMenuAccount
- FrmMenuRelated
- FrmMenuSales
- FrmMenuTechnical
- FrmMainMenu สำหรับผู้จัดการ (เปิดได้ทุกฟอร์ม)
*สิ่งที่จูนต้องการตอนนี้คือ อยากให้โปรแกรมสามารถบันทึก ว/ด/ป , เวลา การ login-logout ของ user ทั้งหมดโดยอัตโนมัติเมื่อมีการ login-logout คะ
*จูนต้องสร้างตาราง ฟอร์ม และเขียนโค้ดยังไงบ้างคะ
รบกวนอาจารย์ และผู้รู้ทุกท่านด้วยนะคะ /ขอบคุณคะ
3 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R05433
ขอบคุณมากคะอาจารย์ yeadram จูนจะไปแทรกคำสั่งตามที่แนะนำคะ
3 @R05434
คุณควรจะสร้าง ตัวแปร Public ไว้ที่โมดูล ตัวหนึ่งเพื่อเก็บ username ให้เป็นตัวแปรเอาไว้ใช้ในงานต่างๆ เช่นการตรวจสอบสิทธิ์ก่อนจะรันคำสั่งสำคัญๆ และรวมถึงใช้ในเวลาล็อกเอ้าท์ด้วย เช่นสมมติคุณประกาศไว้ว่า
Public userName as string
เมื่อมีการล็อกอินทุกครั้ง ถ้าตรวจสอบพาสเวิร์ดผ่านก็เพิ่มคำสั่งต่อด้วยว่า
userName = 'อ้างชื่อtextboxที่คุณให้เขากรอก username'
เมื่อมีการล็อกเอ้าท์ ออกจากระบบ
ถ้าคุณมีปุ่มให้ล็อกเอาท์ ก็ให้คุณไปดูคำสั่งในนั้นแล้วแทรกคำสั่งเข้าไปเพื่อบันทึกเวลาล็อกเอาท์ดังนี้
ข้อจำกัด ข้อควรระวัง คำตอบล่วงหน้าสำหรับคำถามที่ต่อเนื่อง
อาจมีกรณีไฟดับ เครื่องแฮ้งค์ หรือมี Software อื่นใด ที่สั่งการหรือบังคับให้ Access หยุดการประมวลผลโดยกระทันหัน และ/หรือมีเหตุอื่นหลายๆ ประการใดๆ ก็ตามที่ทำให้ ผู้ใช้มิได้กดปุ่ม logout โปรแกรมก็จะไม่มีการบันทึกเวลาล็อกเอาท์เอาไว้
และเมื่อผู้ใช้เดิมได้ทำการล็อกอินใหม่ ก็จะเป็นการเพิ่มรายการใหม่เข้าไปในตาราง tblog ดังนั้น อาจจะ ตรวจพบในภายหลังได้ว่า มีการล็อกอินจากผู้ใช้คนเดียวกันหลายครั้งที่ยังไม่มีบันทึกเวลาล็อกเอาท์ ก็ไม่ต้องไปแก้โค้ดใดๆ ควรหาทางแก้อื่นๆ เช่นดูแลระบบเครื่องให้ดีอย่าให้แฮ้งค์บ่อย ดูแลระบบไฟฟ้าอย่าให้ดับบ่อยๆ แนะนำผู้ใช้ให้กด ล็อกเอาท์ทุกครั้งก่อนปิดโปรแกรม
โค้ดที่บันทึกเวลาล็อกเอาท์ตัวนี้ จะนำเวลาล็อกเอ้าท์ไปใส่ในรายการที่มีการล็อกอินล่าสุดเท่านั้น (และโดยไม่สนว่ามีข้อมูลเก่าในนั้นหรือไม่)
ปัจฉิมลิขิต...
หากโค้ด error ในบรรทัดตัวสีน้ำเงิน
ให้ลองปรับเปลี่ยนค่าในตัวหนังสือสีแดง สลับเลขหาดู เพราะผมเองก็ไม่แม่น และไม่ได้ทดสอบ ให้ลองเปลี่ยนจาก 1,3 เป็น 3,3 หรือ 3,1 หาไปเรื่อยๆ ครับเดี๋ยวก็หาย error เองครับ
Public userName as string
เมื่อมีการล็อกอินทุกครั้ง ถ้าตรวจสอบพาสเวิร์ดผ่านก็เพิ่มคำสั่งต่อด้วยว่า
userName = 'อ้างชื่อtextboxที่คุณให้เขากรอก username'
เมื่อมีการล็อกเอ้าท์ ออกจากระบบ
ถ้าคุณมีปุ่มให้ล็อกเอาท์ ก็ให้คุณไปดูคำสั่งในนั้นแล้วแทรกคำสั่งเข้าไปเพื่อบันทึกเวลาล็อกเอาท์ดังนี้
dim rs as adodb.recordset
dim sq as string
sq = "select Top 1 tblog.* from tblog where f1 Like '" & userName & "' Order by f2 Desc;"
rs.open sq, currentproject.connection,1, 3
if not rs.eof and not rs.bof then
rs(2)=now()
rs.update
end if
rs.close
set rs.nothing
ข้อจำกัด ข้อควรระวัง คำตอบล่วงหน้าสำหรับคำถามที่ต่อเนื่อง
อาจมีกรณีไฟดับ เครื่องแฮ้งค์ หรือมี Software อื่นใด ที่สั่งการหรือบังคับให้ Access หยุดการประมวลผลโดยกระทันหัน และ/หรือมีเหตุอื่นหลายๆ ประการใดๆ ก็ตามที่ทำให้ ผู้ใช้มิได้กดปุ่ม logout โปรแกรมก็จะไม่มีการบันทึกเวลาล็อกเอาท์เอาไว้
และเมื่อผู้ใช้เดิมได้ทำการล็อกอินใหม่ ก็จะเป็นการเพิ่มรายการใหม่เข้าไปในตาราง tblog ดังนั้น อาจจะ ตรวจพบในภายหลังได้ว่า มีการล็อกอินจากผู้ใช้คนเดียวกันหลายครั้งที่ยังไม่มีบันทึกเวลาล็อกเอาท์ ก็ไม่ต้องไปแก้โค้ดใดๆ ควรหาทางแก้อื่นๆ เช่นดูแลระบบเครื่องให้ดีอย่าให้แฮ้งค์บ่อย ดูแลระบบไฟฟ้าอย่าให้ดับบ่อยๆ แนะนำผู้ใช้ให้กด ล็อกเอาท์ทุกครั้งก่อนปิดโปรแกรม
โค้ดที่บันทึกเวลาล็อกเอาท์ตัวนี้ จะนำเวลาล็อกเอ้าท์ไปใส่ในรายการที่มีการล็อกอินล่าสุดเท่านั้น (และโดยไม่สนว่ามีข้อมูลเก่าในนั้นหรือไม่)
ปัจฉิมลิขิต...
หากโค้ด error ในบรรทัดตัวสีน้ำเงิน
ให้ลองปรับเปลี่ยนค่าในตัวหนังสือสีแดง สลับเลขหาดู เพราะผมเองก็ไม่แม่น และไม่ได้ทดสอบ ให้ลองเปลี่ยนจาก 1,3 เป็น 3,3 หรือ 3,1 หาไปเรื่อยๆ ครับเดี๋ยวก็หาย error เองครับ
Time: 0.3252s
f1 เก็บ user ห้ามว่าง
f2 ชนิด Date/Time เก็บเวลา login ห้ามว่าง
f3 ชนิด Date/Time เก็บเวลา logout อนุญาตให้ว่างได้
ในฟอร์ม login ของคุณ คงจะมีคำสั่งตรวจสอบ user name กับ password อยู่แล้ว
คงเป็น If......then...else
ให้คุณไปดูว่า ทางเลือกใด ที่คุณอนุญาตให้เขาเข้าใช้งาน ซึ่งแสดงว่าเป็นทางเลือกหลังการตรวจสอบแล้วพบว่า ถูกต้อง
เช่น
if ................... then
docmd.openform..............
else
.........
end if
ให้คุณไปแทรกคำสั่งไว้ก่อนจะสั่งเปิดฟอร์มนั่นแหละครับว่า
currentproject.connection.execute "Insert into tblog (f1, f2) values('อ้างชื่อtextboxที่คุณให้เขากรอก username', Now())
เสร็จแล้วครับ