Microsoft Access มีคุณลักษณะการรักษาความปลอดภัยที่มีอยู่สองสำหรับการป้องกันฐานข้อมูลของคุณ:
- บัญชีผู้ใช้/กลุ่มและสิทธิ์
- รหัสผ่านฐานข้อมูล
บทความนี้แสดงว่าคุณยังสามารถกำหนดแต่ละรหัสผ่าน สำหรับแต่ละฟอร์ม และรายงานแต่ละในฐานข้อมูลของคุณ
Microsoft แสดงตัวอย่างการเขียนโปรแกรมเพื่อประกอบการอธิบายเท่านั้น และไม่มีการรับประกัน ไม่ว่าโดยชัดแจ้งหรือโดยนัย ทั้งนี้รวมถึง แต่ไม่จำกัดเพียงการรับประกันโดยนัยในเรื่องการซื้อขายหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ บทความนี้อนุมานว่าคุณมีความคุ้นเคยกับภาษาการเขียนโปรแกรมที่แสดงอยู่ รวมทั้งเครื่องมือต่างๆ ที่ใช้ในการสร้างและแก้จุดบกพร่องกระบวนการ วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายเกี่ยวกับหน้าที่การใช้งานของกระบวนการเฉพาะได้ แต่จะไม่ปรับเปลี่ยนตัวอย่างเหล่านี้เพื่อให้มีหน้าที่การใช้งานที่เพิ่มขึ้น หรือสร้างกระบวนการใดๆ เพื่อตอบสนองความต้องการอย่างใดอย่างหนึ่งของคุณโดยเฉพาะ
ข้อควรระวัง: ถ้าคุณทำตามขั้นตอนในตัวอย่างนี้ คุณปรับเปลี่ยนฐานข้อมูลตัวอย่าง Northwind.mdb คุณอาจต้องการสำรองข้อมูลแฟ้ม Northwind.mdb และทำตามขั้นตอนเหล่านี้บนสำเนาของฐานข้อมูล
หมายเหตุ:: ตัวอย่างรหัสในบทความนี้ใช้วัตถุการเข้าถึงข้อมูลของ Microsoft เพื่อให้โค้ดนี้ทำงานอย่างเหมาะสม คุณต้องอ้างอิงไลบรารีวัตถุ Microsoft DAO 3.6 เมื่อต้องการทำเช่นนั้น คลิก
อ้างอิง:ในการ
เครื่องมือเมนูในใน Visual Basic Editor และตรวจสอบให้แน่ใจว่าการ
การไลบรารีวัตถุ Microsoft DAO 3.6มีเลือกกล่องกาเครื่องหมาย
การใช้รหัสเมื่อต้องการรหัสผ่านป้องกันฟอร์มเป็น
โดยใช้รหัส คุณสามารถพร้อมท์สำหรับรหัสผ่านเมื่อผู้ใช้เปิดฟอร์มหรือรายงาน ถ้ามีป้อนรหัสผ่านที่ถูกต้อง แบบฟอร์มหรือรายงานถูกเปิด
ตัวอย่างต่อไปนี้แสดงวิธีการที่คุณสามารถรหัสผ่านป้องกันแบบฟอร์มใบสั่งในฐานข้อมูลตัวอย่าง Northwind.mdb:
- เริ่มการทำงานการเข้าถึงแล้ว เปิดฐานข้อมูลตัวอย่าง Northwind.mdb
- กด ALT + F11 เพื่อเริ่มตัวแก้ไข Microsoft Visual Basic
- ในการแทรกเมนู คลิกโมดูล.
- ในแผ่นงานโมดูล พิมพ์ขั้นตอนต่อไปนี้:
Public MyPassword
Public Function KeyCode(Password As String) As Long
' This function will produce a unique key for the
' string that is passed in as the Password.
Dim I As Integer
Dim Hold As Long
For I = 1 To Len(Password)
Select Case (Asc(Left(Password, 1)) * I) Mod 4
Case Is = 0
Hold = Hold + (Asc(Mid(Password, I, 1)) * I)
Case Is = 1
Hold = Hold - (Asc(Mid(Password, I, 1)) * I)
Case Is = 2
Hold = Hold + (Asc(Mid(Password, I, 1)) * _
(I - Asc(Mid(Password, I, 1))))
Case Is = 3
Hold = Hold - (Asc(Mid(Password, I, 1)) * _
(I + Len(Password)))
End Select
Next I
KeyCode = Hold
End Function
- กด ALT + F11 เพื่อกลับไปยังการเข้าถึง
- ในหน้าต่างฐานข้อมูล ภายใต้วัตถุคลิกตารางแล้ว คลิกใหม่.
- ในการสร้างตารางกล่องโต้ตอบ คลิกสองครั้งมุมมองออกแบบ.
- สร้างตารางใหม่เป็นดังนี้:
Table: tblPassword
---------------------------
Field Name: ObjectName
Data Type: Text
Field Size: 50
Field Name: KeyCode
Data Type: Text
Field Size: 25
Input Mask: Password
Table Properties: tblPassword
-----------------------------
PrimaryKey: ObjectName
- เปิดตาราง tblPassword และจากนั้น ป้อนข้อมูลต่อไปนี้:
ObjectName: Orders
KeyCode: 2818
- สร้างฟอร์มใหม่ในมุมมองออกแบบ และบันทึกฟอร์มเป็น frmPassword
- เพิ่มกล่องข้อความที่เดียวเพื่อ frmPassword ที่เรียกว่า Text0 และปุ่มคำสั่งที่เรียกว่า CheckPassword
- ตั้งค่านี้รูปแบบการป้อนข้อมูลคุณสมบัติของ Text0 ไป "PASSWORD" (ลบ ด้วยใส่เครื่องหมายอัญประกาศ)
- เพิ่มรหัสต่อไปนี้ในเหตุการณ์ OnClick ของปุ่ม CheckPassword และจากนั้น ให้บันทึกแบบฟอร์ม:
If IsNull(Forms!frmPassword!Text0.Value) Then
MsgBox "You cannot enter a blank Password. Try again."
Me!Text0.SetFocus
Else
MyPassword = Me!Text0.Value
DoCmd.Close acForm, "frmPassword"
End If
- เปิดแบบฟอร์มใบสั่งในมุมมองออกแบบ
- ถ้ามองไม่เห็นแผ่นคุณสมบัติ คลิกคุณสมบัติในการมุมมองเมนู
- พิมพ์กระบวนงานเหตุการณ์ต่อไปนี้ในโมดูลสำหรับการonopenคุณสมบัติของฟอร์ม:
Private Sub Form_Open(Cancel as Integer)
Dim Hold As Variant
Dim tmpKey As Long
Dim I As Integer
Dim rs As DAO.Recordset
Dim db As DAO.Database
On Error GoTo Error_Handler
' Prompt the user for the Password.
DoCmd.OpenForm "frmPassword", acNormal, , , , acDialog
Hold = MyPassword
' Open the table that contains the password.
Set db = CurrentDb
Set rs = db.OpenRecordset("tblPassword", dbOpenTable)
rs.Index = "PrimaryKey"
rs.Seek "=", Me.Name
If rs.NoMatch Then
MsgBox "Sorry cannot find password information. Try Again"
Cancel = -1
Else
' Test to see if the key generated matches the key in
' the table; if there is not a match, stop the form
' from opening.
If Not (rs![keycode] = KeyCode(Cstr(Hold))) Then
MsgBox "Sorry you entered the wrong password." & _
"Try again.", vbOKOnly, "Incorrect Password"
Cancel = -1
End If
End If
rs.Close
db.Close
Exit Sub
Error_Handler:
MsgBox Err.Description, vbOKOnly, "Error #" & Err.Number
Exit Sub
End Sub
- ปิด และจากนั้น ให้บันทึกแบบฟอร์มใบสั่ง
- เปิดแบบฟอร์มใบสั่ง และพิมพ์รหัสผ่าน:เมื่อคุณได้รับการพร้อมท์สำหรับรหัสผ่าน
ขอให้สังเกตว่า ใบสั่งในแบบฟอร์มเปิดขึ้น KeyCode ที่สร้างขึ้นด้วยรหัสผ่าน:ตรงกับ KeyCode ในตาราง tblPassword และขึ้นอยู่กับตัวพิมพ์ของตัวอักษรในรหัสผ่านที่ใส่ - ปิดแล้ว เปิดแบบฟอร์มใบสั่ง และพิมพ์รหัสผ่าน:เมื่อคุณได้รับการพร้อมท์สำหรับรหัสผ่าน
ขอให้สังเกตว่า คุณได้รับข้อความ:sorry คุณใส่รหัสผ่านไม่ถูกต้อง ลองอีกครั้ง
แบบฟอร์มใบสั่งไม่ถูกเปิดได้เนื่องจากกระบวนการรหัสผ่านคือ case-sensitive - เพื่อตรวจสอบ KeyCode ที่สอดคล้องกันเป็นสำหรับสตริงที่เฉพาะ พิมพ์ต่อไปนี้ในหน้าต่าง Immediate แล้วกด enter:ตัวอย่างก่อนหน้านี้ส่งกลับ 5864
- เมื่อต้องการซ่อนตาราง tblPassword ในหน้าต่างฐานข้อมูล คลิกขวาตาราง tblPassword และจากนั้น คลิกคุณสมบัติ. ในหน้าต่างคุณสมบัติ คลิกเพื่อเลือกนั้นซ่อนกล่องกาเครื่องหมาย และจากนั้น คลิกตกลง.
หมายเลขบทความ (Article ID): 209871 - รีวิวครั้งสุดท้าย: 17 กันยายน 2554 - Revision: 4.0
ใช้กับ
- Microsoft Access 2000 Standard Edition
| kbhowto kbmt KB209871 KbMtth |
แปลโดยคอมพิวเตอร์ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:
209871
(http://support.microsoft.com/kb/209871/en-us/
)