Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 9 của 9
  1. #1
    Ngày tham gia
    Feb 2014
    Bài viết
    0

    Lập trình bảo mật cơ sở dữ liệu Access

    Hầu như ai mần một ứng dụng Microsoft Access cũng xài một trong những (hoặc tất cả) cách sau để bảo vệ cơ sở dữ liệu (CSDL), hòng khóa tay, khóa chân những nhân viên tò mò, thích quậy:

    1. Bảo vệ mã lệnh VBA (Visual Basic for Application) bằng cách chọn mục Properties trên trình đơn Tools của cửa sổ soạn thảo Microsoft Visual Basic rồi chọn trang Protection trên hộp thoại Project Properties. Cuối cùng, chọn Lock project for viewing, kèm theo là mật khẩu bảo vệ. Với cách này, cấu trúc và dữ liệu các bảng (table) vẫn có thể được xem và sửa đổi.

    2. Dùng chức năng Make MDE file để ngăn không cho sửa đổi mã lệnh, thiết kế biểu mẫu (form) và thiết kế báo biểu (report). Với cách này, cấu trúc và dữ liệu các bảng (table) vẫn có thể được lấy đi để chuyển vào tập tin .MDB khác mà xem và sửa đổi.

    3. Dùng chức năng Encrypt / Decrypt database… để mã hóa CSDL, ngăn không cho các chương trình tiện ích hay xử lý văn bản giải mã nhưng vẫn có thể dùng Access để mở.

    4. Dùng chức năng Set database password để quy định mật khẩu cho CSDL. Cách này hơi phiền nếu có một bảng trong CSDL khác liên kết (link) với nó. Nếu quên mật khẩu thì … khóc luôn chứ sao!

    5. Thiết kế một biểu mẫu khởi động, trong đó yêu cầu cho biết tên và mật khẩu, dùng hộp thoại ******* (từ danh sách Display Form/Page) để quy định phải mở biểu mẫu này trước tiên mỗi lần mở CSDL. Nhờ cách này, ta có thể giấu luôn cửa sổ Database, nơi có thể xem và chọn các thành phần của CSDL để sửa chữa.

    Trong những cách trên, cách thứ 5 vẫn có thể bị vượt qua bằng cách nhấn và giữ phím Shift trong lúc mở CSDL. Để khắc phục, ta có thể dùng Visual Basic gán trị False cho thuộc tính AllowBypassKey để vô hiệu hóa phím Shift khi mở CSDL.

    Giả sử bạn có một CSDL tên dbLock.MDB. Mỗi lần người ta mở nó, bạn muốn biểu mẫu frmKhoiDong luôn được hiển thị trước tiên bằng cách xác định Display Form/Page là frmKhoiDong. Để thay đổi thuộc tính AllowBypassKey, bắt buộc phải mở CSDL, gán trị mới cho thuộc tính này, đóng CSDL lại thì lần mở sau mới có ép-phê. Bạn nhớ, cần khóa làm sao để người ta không mở được mà mình mở được, nghĩa là ta phải có chìa khóa để mở. Chìa ở đây chính là một biểu mẫu khác, chẳng hạn có tên là frmChiaKhoa.

    Khi đã thay đổi thuộc tính AllowBypassKey được rồi, chắc chắn biểu mẫu frmKhoiDong được hiển thị khi mở CSDL. Cho nên ta đặt chìa khóa thông qua biểu mẫu này bằng cách vẽ một ô điều khiển nào đấy (miễn sao nó có thủ tục xử lý tình huống Click là được), chẳng hạn nhãn lblChiaKhoa, rồi đặt thuộc tính Visible là No và thêm dòng lệnh DoCmd.OpenForm “frmChiaKhoa” vào thủ tục xử lý tình huống Click. Bạn phải nhớ vị trí nhãn lblChiaKhoa để lôi chìa khóa ra nhé. Như vậy, vấn đề còn lại nằm ở biểu mẫu frmChiaKhoa.

    Bạn mở cửa sổ soạn thảo Microsoft Visual Basic, chọn mục References… để bảo đảm Microsoft DAO xx.xx Object Library (trong đó, phiên bản xx.xx có thể là: 2.5 hoặc 3.51 hoặc 3.6 tùy theo phiên bản Access, dĩ nhiên nên chọn phiên bản mới nhất) đã được chọn trong danh sách Available References.

    Hình 1: Biểu mẫu cần thiết kế



    Hình 1 là biểu mẫu frmChiaKhoa cần thiết kế, bao gồm một ô văn bản txtPassword để nhận mật khẩu mà người cần mở khóa phải gõ vào, một nút lệnh cmdLock thực hiện việc khóa CSDL và một nút lệnh cmdUnlock thực hiện việc mở khóa CSDL. Xong, bạn gõ các thủ tục xử lý như đoạn mã 1. Trước khi quậy chuyện này trên một CSDL, bạn nên sao chép phòng hờ CSDL để tránh sự cố khóa được rồi nhưng không mở được (do bạn gõ nhầm các dòng lệnh).



    Mã:
    Đoạn mã 1
    
    'Hàm ChangeProperty thay đổi các thuộc tính của CSDL
    
    Function ChangeProperty(strPropName, varPropType, varPropValue)
    
      Dim dbs As Database, prp As Property
    
      Const conPropNotFoundError = 3270
    
      Set dbs = CurrentDb
    
      On Error GoTo Change_XuLyLoi
    
      dbs.Properties(strPropName) = varPropValue
    
      ChangeProperty = True
    
    Change_KetThuc:
    
      Exit Function
    
    Change_XuLyLoi:
    
      'Thuộc tính không thấy
    
      If Err = conPropNotFoundError Then 
    
      Set prp = dbs.CreateProperty(strPropName, _
    
      varPropType, varPropValue)
    
      dbs.Properties.Append prp
    
      Resume Next
    
      Else
    
      'Không biết lỗi gì
    
      ChangeProperty = False
    
      Resume Change_KetThuc
    
      End If
    
    End Function
    
    'Xử lý tình huống chọn nút [Khóa database]
    
    Private Sub cmdLock_Click()
    
      ‘Biểu mẫu này được nạp trước
    
      ChangeProperty "StartupForm", dbText, "frmKhoiDong"
    
      ChangeProperty "StartupShowDBWindow", dbBoolean, False
    
      ChangeProperty "StartupShowStatusBar", dbBoolean, False
    
      ChangeProperty "AllowBuiltinToolbars", dbBoolean, False
    
      ChangeProperty "AllowFullMenus", dbBoolean, False
    
      ChangeProperty "AllowBreakIntoCode", dbBoolean, False
    
      ChangeProperty "AllowSpecialKeys", dbBoolean, False
    
     
    
      ‘Không cho xài phím Shift để bỏ qua biểu mẫu frmKhoiDong
    
      ChangeProperty "AllowBypassKey", dbBoolean, False
    
     
    
      MsgBox "Cơ sở dữ liệu đã được khóa! Đóng cơ sở dữ liệu, _
    
      rồi mở lại mới có ép-phê.", vbOKOnly, "eChip Security"
    
      cmdExit.SetFocus
    
      cmdUnlock.Visible = True
    
      cmdLock.Visible = False
    
    End Sub
    
    'Xử lý tình huống chọn nút [Mở database]
    
    Private Sub cmdUnlock_Click()
    
      ‘Không cần biểu mẫu khởi động nữa
    
      ChangeProperty "StartupForm", dbText, ""
    
      ChangeProperty "StartupShowDBWindow", dbBoolean, True
    
      ChangeProperty "StartupShowStatusBar", dbBoolean, True
    
      ChangeProperty "AllowBuiltinToolbars", dbBoolean, True
    
      ChangeProperty "AllowFullMenus", dbBoolean, True
    
      ChangeProperty "AllowBreakIntoCode", dbBoolean, True
    
      ChangeProperty "AllowSpecialKeys", dbBoolean, True
    
      ChangeProperty "AllowBypassKey", dbBoolean, True
    
      MsgBox "Cơ sở dữ liệu đã được mở khóa ! _
    
      Đóng cơ sở dữ liệu, rồi mở lại mới có ép-phê.", _
    
      vbOKOnly, "eChip Security"
    
      cmdExit.SetFocus
    
      txtPassword = ""
    
      cmdLock.Visible = True
    
      cmdUnlock.Visible = False
    
      txtPassword.Visible = False
    
    End Sub
    
    'Xử lý tình huống khi mở biểu mẫu
    
    Private Sub Form_Open(Cancel As Integer)
    
      Dim dbs As Database
    
      Set dbs = CurrentDb
    
      On Error GoTo KhongCoThuocTinh_Err
    
      If dbs.Properties("AllowBypassKey") Then
    
        cmdLock.Visible = True
    
        txtPassword.Visible = False
    
      Else
    
        cmdLock.Visible = False
    
        txtPassword.Visible = True
    
      End If
    
      Exit Sub
    
      KhongCoThuocTinh_Err:
    
      cmdLock.Visible = True
    
      txtPassword.Visible = False
    
    End Sub
    
    'Khi người ta gõ mật khẩu và nhấn phím Enter
    
    Private Sub txtPassword_LostFocus()
    
      If txtPassword = "echip" Then
    
        cmdUnlock.Visible = True
    
      End If
    
    End Sub
    (St)

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Bác ơi, các chiêu thức trên chỉ che đậy không cho hiện cấu trúc Database đối với người sử dụng bình thường thôi. Cho tới nay thì hầu như chưa có cách nào hiệu quả triệt để.
    Ngay với Mde, nếu muốn biết tác giả thiết kê cấu trúc các bảng thế nào, người ta chỉ cần dùng một mdb khác rồi import các table và query từ mde sang là ok.
    Còn chuyện đặt pwd cho Access file thì lại đơn giản, các cửa hàng CDR đều có loại phần mềm này.
    Không biết có bác nào có cao kiến, có thể chia sẻ việc bảo vệ thành quả trong môi trường Access không.

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    2
    Trích dẫn Gửi bởi Bigmaxx
    Bác ơi, các chiêu thức trên chỉ che đậy không cho hiện cấu trúc Database đối với người sử dụng bình thường thôi. Cho tới nay thì hầu như chưa có cách nào hiệu quả triệt để.
    Ngay với Mde, nếu muốn biết tác giả thiết kê cấu trúc các bảng thế nào, người ta chỉ cần dùng một mdb khác rồi import các table và query từ mde sang là ok.
    Còn chuyện đặt pwd cho Access file thì lại đơn giản, các cửa hàng CDR đều có loại phần mềm này.
    Không biết có bác nào có cao kiến, có thể chia sẻ việc bảo vệ thành quả trong môi trường Access không.
    Đối với bảo mật CSDL ko cho người ta chỉnh sửa trong access thì theo mình nên đơi Microsoft có những cải tiến mới vì nếu user dùng một số phần mềm crack password ( Access Password recovery là một ví dụ) thì họ dễ dàng vào cơ sở dữ liệu và chỉnh sửa.

    Đối với Code thì có vẻ đơn giản hơn vì bạn chỉ đơn giản tạo file MDE là xong. Hiện tại chưa có chương trình nào có thể hack code của file MDE.

    Cuối tuần dzui dzẻ!

    Thân:laugh:

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    table & query(giup do)

    mình tạo 1 bảng với 20 mẫu tin trong bảng này có cột STT=autonumber và khi tạo query cho table này với "group by " không có cột STT thì gồm 5 mẫu tin
    làm cách nào tạo số đánh thứ tự trong query từ 1 đến 5

    rất mong các bạn chỉ dẫn, cảm ơn!

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Lập trình bảo mật cơ sở dữ liệu Access

    Những bước cơ bản để bảo mật CSDL MsAccess như bạn Binhnt viết tôi thấy rất cơ bản và đầy đủ. Và mục đích bảo vệ đối với đối tượng nào thì ta có các công cụ bổ sung đến đó. Ví dụ bạn có thể áp dụng:
    - Thuật toán mã hóa dữ liệu ngay trong quá trình thao tác với dữ liệu.
    - Sau khi kết thúc chầu làm việc ta có thể sử dụng đoạn chương trình đổi phần mở rộng của file (mdb) thành đuôi khác.
    - Tiếp theo sử dụng thuật toán nén file với mật khẩu. Rồi lại đổi đuôi file lần nữa.
    - Sử dụng tiếp thuật toán băm file và cất dấu vào nhiều folders khác nhau (khi dùng sẽ có các công cụ nối chúng vào thành 1 file)
    - Kết hợp với chương trình hide folder để ngụy trang nơi lưu trữ thông tin.
    - Bạn còn có thể sử dụng các chương trình ngụy trang desktop khác nhau nữa để bổ sung thêm...
    Vâng, không thể 100% an toàn nhưng đối với kẻ muốn lấy cấu trúc dữ liệu để nghiên cứu thì thời gian mò mẫm tìm ra được thì cũng mệt nhoài... và tốt hơn hết để thời gian đó cho việc nghiên cứu tạo cho mình cấu trúc theo ý muốn còn nhanh hơn....

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Lập trình bảo mật cơ sở dữ liệu Access

    Nhìn chung do Access lưu dạng Database File nên khó có thể tìm giải pháp bảo mật cho hoàn hảo như các CSDL trên mạng như: SQL, Oracle ... được. Kinh nghiệm của mình là tạo CSDL Access với mật khẩu (càng dài, càng phức tạp càng tốt- vì nếu bạn đặt MK cỡ 20 ký tự cả alphabeta + chữ số + các dấu !+~ .. thì có dùng chương trình crack password cũng phải nản lòng vì cơ chế của chương trình dò mật khẩu cũng chỉ là dò tìm rồi thử chứ không can thiệp được vào cấu trúc lưu của file - cái này chỉ Microsoft biết thôi). Bạn có thể lập trình VBA, report ..v.v tùy thích trên file đó. Sau đó, bạn tạo một Project bằng Visual Basic để mở CSDL đó ra (dĩ nhiên đặt mật khẩu vào trong đoạn Code mở CSDL của chương trình), dùng các hàm của VB gọi chạy các VBA trong Access hoặc các modul của VB để truy cập thẳng vào các Table.
    Cách này tôi đã dùng nhiều trong các ứng dụng.

    Chúc các bạn thành công

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Lập trình bảo mật cơ sở dữ liệu Access

    1. Tôi thấy ở nhiều diễn đàn mọi người chỉ bàn cách ngăn không cho vào CSDL mà không nói đến việc code thế nào để CSDL trước khi mở luôn là read only vì nếu lở người ta vào k được tức quá xóa luôn thì sao?
    2. Tôi có một form khởi động có 1 textbox chứa password và chỉ muốn người ta không dùng được phím shift để bỏ qua form này thì lấy đoạn code nào ở trên (không cần khóa , mở gì hết) và đưa vào event nào của form?
    Mong các bác chỉ giúp !

  8. #8
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Lập trình bảo mật cơ sở dữ liệu Access




    Trích dẫn Gửi bởi longho
    2. Tôi có một form khởi động có 1 textbox chứa password và chỉ muốn người ta không dùng được phím shift để bỏ qua form này thì lấy đoạn code nào ở trên (không cần khóa , mở gì hết) và đưa vào event nào của form?
    Mong các bác chỉ giúp !
    Đã có rất nhiều câu hỏi về vấn đề này. Bạn lên google kiếm từ khóa "by pass shiftkey" là sẽ có. Tuy nhiên người ta vẫn vào dc csdl của bạn = 2 cách

    cách 1: Tạo một db trắng sau đó import csdl của bạn vào :sifone:Trường hợp csdl của bạn có cài pw họ sẽ dùng ctrình access password recovery để gỡ hic hic

    cách 2: bản chất của by pass shiftkey là gán thuộc tính là disable và enable nên họ dễ dàng vượt qua = cách đùng doạn code tương tự dể enable.

    Có một cách ko hẳn là hiệu quả, nhưng sẽ gây khó khăn hơn cho mấy ai táy máy dó là set quyền cho table.

    Thân

  9. #9
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Lập trình bảo mật cơ sở dữ liệu Access




    Trích dẫn Gửi bởi binhnt
    Hầu như ai mần một ứng dụng Microsoft Access cũng xài một trong những (hoặc tất cả) cách sau để bảo vệ cơ sở dữ liệu (CSDL), hòng khóa tay, khóa chân những nhân viên tò mò, thích quậy:

    1. Bảo vệ mã lệnh VBA (Visual Basic for Application) bằng cách chọn mục Properties trên trình đơn Tools của cửa sổ soạn thảo Microsoft Visual Basic rồi chọn trang Protection trên hộp thoại Project Properties. Cuối cùng, chọn Lock project for viewing, kèm theo là mật khẩu bảo vệ. Với cách này, cấu trúc và dữ liệu các bảng (table) vẫn có thể được xem và sửa đổi.

    2. Dùng chức năng Make MDE file để ngăn không cho sửa đổi mã lệnh, thiết kế biểu mẫu (form) và thiết kế báo biểu (report). Với cách này, cấu trúc và dữ liệu các bảng (table) vẫn có thể được lấy đi để chuyển vào tập tin .MDB khác mà xem và sửa đổi.

    3. Dùng chức năng Encrypt / Decrypt database… để mã hóa CSDL, ngăn không cho các chương trình tiện ích hay xử lý văn bản giải mã nhưng vẫn có thể dùng Access để mở.

    4. Dùng chức năng Set database password để quy định mật khẩu cho CSDL. Cách này hơi phiền nếu có một bảng trong CSDL khác liên kết (link) với nó. Nếu quên mật khẩu thì … khóc luôn chứ sao!

    5. Thiết kế một biểu mẫu khởi động, trong đó yêu cầu cho biết tên và mật khẩu, dùng hộp thoại ******* (từ danh sách Display Form/Page) để quy định phải mở biểu mẫu này trước tiên mỗi lần mở CSDL. Nhờ cách này, ta có thể giấu luôn cửa sổ Database, nơi có thể xem và chọn các thành phần của CSDL để sửa chữa.

    Trong những cách trên, cách thứ 5 vẫn có thể bị vượt qua bằng cách nhấn và giữ phím Shift trong lúc mở CSDL. Để khắc phục, ta có thể dùng Visual Basic gán trị False cho thuộc tính AllowBypassKey để vô hiệu hóa phím Shift khi mở CSDL.

    Giả sử bạn có một CSDL tên dbLock.MDB. Mỗi lần người ta mở nó, bạn muốn biểu mẫu frmKhoiDong luôn được hiển thị trước tiên bằng cách xác định Display Form/Page là frmKhoiDong. Để thay đổi thuộc tính AllowBypassKey, bắt buộc phải mở CSDL, gán trị mới cho thuộc tính này, đóng CSDL lại thì lần mở sau mới có ép-phê. Bạn nhớ, cần khóa làm sao để người ta không mở được mà mình mở được, nghĩa là ta phải có chìa khóa để mở. Chìa ở đây chính là một biểu mẫu khác, chẳng hạn có tên là frmChiaKhoa.

    Khi đã thay đổi thuộc tính AllowBypassKey được rồi, chắc chắn biểu mẫu frmKhoiDong được hiển thị khi mở CSDL. Cho nên ta đặt chìa khóa thông qua biểu mẫu này bằng cách vẽ một ô điều khiển nào đấy (miễn sao nó có thủ tục xử lý tình huống Click là được), chẳng hạn nhãn lblChiaKhoa, rồi đặt thuộc tính Visible là No và thêm dòng lệnh DoCmd.OpenForm “frmChiaKhoa” vào thủ tục xử lý tình huống Click. Bạn phải nhớ vị trí nhãn lblChiaKhoa để lôi chìa khóa ra nhé. Như vậy, vấn đề còn lại nằm ở biểu mẫu frmChiaKhoa.

    Bạn mở cửa sổ soạn thảo Microsoft Visual Basic, chọn mục References… để bảo đảm Microsoft DAO xx.xx Object Library (trong đó, phiên bản xx.xx có thể là: 2.5 hoặc 3.51 hoặc 3.6 tùy theo phiên bản Access, dĩ nhiên nên chọn phiên bản mới nhất) đã được chọn trong danh sách Available References.

    Hình 1: Biểu mẫu cần thiết kế



    Hình 1 là biểu mẫu frmChiaKhoa cần thiết kế, bao gồm một ô văn bản txtPassword để nhận mật khẩu mà người cần mở khóa phải gõ vào, một nút lệnh cmdLock thực hiện việc khóa CSDL và một nút lệnh cmdUnlock thực hiện việc mở khóa CSDL. Xong, bạn gõ các thủ tục xử lý như đoạn mã 1. Trước khi quậy chuyện này trên một CSDL, bạn nên sao chép phòng hờ CSDL để tránh sự cố khóa được rồi nhưng không mở được (do bạn gõ nhầm các dòng lệnh).



    Mã:
    Đoạn mã 1
    
    'Hàm ChangeProperty thay đổi các thuộc tính của CSDL
    
    Function ChangeProperty(strPropName, varPropType, varPropValue)
    
      Dim dbs As Database, prp As Property
    
      Const conPropNotFoundError = 3270
    
      Set dbs = CurrentDb
    
      On Error GoTo Change_XuLyLoi
    
      dbs.Properties(strPropName) = varPropValue
    
      ChangeProperty = True
    
    Change_KetThuc:
    
      Exit Function
    
    Change_XuLyLoi:
    
      'Thuộc tính không thấy
    
      If Err = conPropNotFoundError Then 
    
      Set prp = dbs.CreateProperty(strPropName, _
    
      varPropType, varPropValue)
    
      dbs.Properties.Append prp
    
      Resume Next
    
      Else
    
      'Không biết lỗi gì
    
      ChangeProperty = False
    
      Resume Change_KetThuc
    
      End If
    
    End Function
    
    'Xử lý tình huống chọn nút [Khóa database]
    
    Private Sub cmdLock_Click()
    
      ‘Biểu mẫu này được nạp trước
    
      ChangeProperty "StartupForm", dbText, "frmKhoiDong"
    
      ChangeProperty "StartupShowDBWindow", dbBoolean, False
    
      ChangeProperty "StartupShowStatusBar", dbBoolean, False
    
      ChangeProperty "AllowBuiltinToolbars", dbBoolean, False
    
      ChangeProperty "AllowFullMenus", dbBoolean, False
    
      ChangeProperty "AllowBreakIntoCode", dbBoolean, False
    
      ChangeProperty "AllowSpecialKeys", dbBoolean, False
    
     
    
      ‘Không cho xài phím Shift để bỏ qua biểu mẫu frmKhoiDong
    
      ChangeProperty "AllowBypassKey", dbBoolean, False
    
     
    
      MsgBox "Cơ sở dữ liệu đã được khóa! Đóng cơ sở dữ liệu, _
    
      rồi mở lại mới có ép-phê.", vbOKOnly, "eChip Security"
    
      cmdExit.SetFocus
    
      cmdUnlock.Visible = True
    
      cmdLock.Visible = False
    
    End Sub
    
    'Xử lý tình huống chọn nút [Mở database]
    
    Private Sub cmdUnlock_Click()
    
      ‘Không cần biểu mẫu khởi động nữa
    
      ChangeProperty "StartupForm", dbText, ""
    
      ChangeProperty "StartupShowDBWindow", dbBoolean, True
    
      ChangeProperty "StartupShowStatusBar", dbBoolean, True
    
      ChangeProperty "AllowBuiltinToolbars", dbBoolean, True
    
      ChangeProperty "AllowFullMenus", dbBoolean, True
    
      ChangeProperty "AllowBreakIntoCode", dbBoolean, True
    
      ChangeProperty "AllowSpecialKeys", dbBoolean, True
    
      ChangeProperty "AllowBypassKey", dbBoolean, True
    
      MsgBox "Cơ sở dữ liệu đã được mở khóa ! _
    
      Đóng cơ sở dữ liệu, rồi mở lại mới có ép-phê.", _
    
      vbOKOnly, "eChip Security"
    
      cmdExit.SetFocus
    
      txtPassword = ""
    
      cmdLock.Visible = True
    
      cmdUnlock.Visible = False
    
      txtPassword.Visible = False
    
    End Sub
    
    'Xử lý tình huống khi mở biểu mẫu
    
    Private Sub Form_Open(Cancel As Integer)
    
      Dim dbs As Database
    
      Set dbs = CurrentDb
    
      On Error GoTo KhongCoThuocTinh_Err
    
      If dbs.Properties("AllowBypassKey") Then
    
        cmdLock.Visible = True
    
        txtPassword.Visible = False
    
      Else
    
        cmdLock.Visible = False
    
        txtPassword.Visible = True
    
      End If
    
      Exit Sub
    
      KhongCoThuocTinh_Err:
    
      cmdLock.Visible = True
    
      txtPassword.Visible = False
    
    End Sub
    
    'Khi người ta gõ mật khẩu và nhấn phím Enter
    
    Private Sub txtPassword_LostFocus()
    
      If txtPassword = "echip" Then
    
        cmdUnlock.Visible = True
    
      End If
    
    End Sub
    (St)
    Bạn có thể giúp làm một file ví dụ KhoaMoCSDL.mdb đơn giản up lên đây dùm không?
    Chân thành cám ơn!

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •