Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog

11/10/09

Phân quyền sửa Chương trình trong Access

Hỏi
Bạn nào có biết cách phân quyền sử dụng trong Access không chỉ cho mình với. Có nghĩa là với chương trình mình tạo ra thì chỉ có mình mới có thể sửa source code được, có thể sửa design... được thôi, người sử dụng chỉ được quyền sử dụng và không có quyền truy cập vào source code cũng như table... để sửa chương trình. Ở bên mình mọi người cũng có kiến thức về Access nên biết là cứ bấm F11 là vào được data của chương trình.

Đáp
Trích:
Nguyên văn bởi hungtano
Bạn phải làm 2 việc :

1) Vào Tools --> Startup : bỏ chọn tất cả các check box trên biểu mẫu này. (không cho users sử dụng các phím tắt)

Còn muốn triệt để hơn, không cho xem code thì .mdb --> .mde


2) Disable phím SHIFT

Nguyên lý : trong database có 1 thuộc tính (property) gọi là : AllowBypassKey. Thuộc tính này cho phép bạn enable/disable phím SHIFT.

+ Nếu AllowBypassKey = False --> disable phím SHIFT

+ Nếu AllowBypassKey = True --> enable phím SHIFT

Cách làm : bạn tạo 1 Form (tạm gọi : F_ShiftKey) có 2 nút lịnh : 1 để enable và 1 disable phím SHIFT. Đưa 2 private sub dưới đây vào..........

Private Sub DisableSHIFTButton_Click()
On Error GoTo ErrHandler

Dim db As Database
Dim ThuocTinh As Property

Set db = CurrentDb
db.Properties("AllowBypassKey") = False
Set db = Nothing

Egress:
On Error Resume Next
Set db = Nothing
Set ThuocTinh = Nothing
Exit Sub

ErrHandler:
MsgBox Err.Number
If Err.Number = 3270 Then ' Property not found.
Set ThuocTinh = db.CreateProperty("AllowBypassKey", dbBoolean, False)
db.Properties.Append ThuocTinh
Resume Next
Else
MsgBox Err.Description
Resume Egress
End If
End Sub

=================================================

Private Sub EnableSHIFTButton_Click()

On Error GoTo ErrHandler

Dim db As Database
Dim ThuocTinh As Property

Set db = CurrentDb
db.Properties("AllowBypassKey") = True
Set db = Nothing

Egress:
On Error Resume Next
Set db = Nothing
Set ThuocTinh = Nothing
Exit Sub

ErrHandler:
MsgBox Err.Number
If Err.Number = 3270 Then ' Property not found.
Set ThuocTinh = db.CreateProperty("AllowBypassKey", dbBoolean, True)
db.Properties.Append ThuocTinh
Resume Next
Else
MsgBox Err.Description
Resume Egress
End If
End Sub

++++++++++++++++++++++++++++++++++++++++++++++++++

OK chưa bạn ? .............................................. Chưa đâu !


Bây giờ đặt F_ShiftKey ở đâu trong chương trình để không ai được quyền mở ngoại trừ Admin ? Có nhiều cách : cách đơn giản nhất là đặt ….ở đâu cũng được với 1 điều kiện : để mở F_ShiftKey cần phải biết password.

Ở sự kiện Form_Open, bạn yêu cầu nhập đúng password : Lambada mới cho mở form này.


Private Sub Form_Open(Cancel As Integer)

Dim Message, Title, MyValue

Message = "Ban vui long cho biet mat khau :" ' Set prompt.

Title = "Kiem tra" ' Set title.

MyValue = InputBox(Message, Title)

If MyValue <> "Lambada" Then

DoCmd.Close

End If

End Sub
[right] Nguồn Từ : Khoa Học Phổ Thông.
Website : http://www.khoahocphothong.net [/right]

Thảo luận thêm: http://thuthuataccess.co.cc/forum

4 comments:

  1. Cho mình hỏi làm cách nào dể mở 1 file *.mde duy nhất(tức chặn không cho phép chay nhiều bản)
    Nếu mở lần thư hai sẽ báo "Chương trinh da mo"
    dinhvank19@gmail.com

    ReplyDelete
  2. a ơi cho em hỏi sao e làm như trên mà nó lại thông báo lỗi:
    Set ThuocTinh = db.CreateProperty("AllowBypassKey", dbBoolean, True)
    là như thế nào ak
    hero_4h@yahoo.com

    ReplyDelete
  3. Chào Noname, Mình đã thực hiện theo phần thiết kế chương trình phân quyền mà Bạn đã Post lên và đã thực hiện được. Nhưng mình vẫn chưa hiểu được là làm thế nào để có thể phân quyền cho từng Table, query, form va report. Bạn có thể chỉ giáo thêm cho mình ko? Cám ơn nhiều
    Add. mail của mình: minhnn2001@yahoo.com

    ReplyDelete
  4. Phần mềm MSchool(Quản lý điểm và xét tốt nghiệp THCS theo TT58 - thông tư áp dụng học kỳ 2 năm học 2011-2012
    Phần mềm MSchool(Quản lý điểm và xét hoàn thành CTTH theo TT32 - thông tư áp dụng học kỳ 2 năm học 2010-2011
    http://www.mediafire.com/myfiles.php

    ReplyDelete

» Hãy để lại tên, email của bạn khi bạn post comment, để mình có thể dễ dàng trả lời comment của bạn khi cần.
» Có thể sử dụng các thẻ < b>,< i>,< a>. Và các icon thông dụng trên YM