• Đóng gói ứng dụng access
  • RE: Đóng gói ứng dụng access

    yamakashi2003 > 29-09-20, 11:46 AM

    (23-09-20, 12:52 PM)AnNguyen Đã viết: Đây bạn ơi, mình có đoạn code này trước anh Bảo cho nay vẫn dùng,
    Trong ứng dụng mình viết thì mình có điều kiện là file ACCDE thì mới áp dụng cái này còn file ACCDB là designer thì không cần vì khóa mà quên không mở cùng khổ big green

    Mã:
    Public Sub SercurityDB(locker As Boolean)

    'SecurityDB True ( False)

        ' Doi ten ung dung
        'ChangeProperty "Apptitle", dbText, "QUAN LY NHAN SU"
        ' Dat lai form khoi dong cua ung dung
        'ChangeProperty "StartupForm", dbText, "frmLogin"
       
        ' Cho nhìn thay Khung Database hay không
        ChangeProperty "StartupShowDBWindow", dbBoolean, locker
        ' Cho nhìn thay thanh Status hay không
        ChangeProperty "StartupShowStatusBar", dbBoolean, locker
        ' Cho phép hien thanh  design hay không
        ChangeProperty "AllowBuiltinToolbars", dbBoolean, locker
        ' Cho phép thêm bot 1 item vào các thanh công cu hay không
        ChangeProperty "AllowToolbarChanges", dbBoolean, locker
        ' Cho phép hien thanh menu con khi click chuot phai hay không
        ChangeProperty "AllowShortcutMenus", dbBoolean, locker
        ' Cho phép hien toan bo thanh menu hay không
        ChangeProperty "AllowFullMenus", dbBoolean, locker
        'Cho phép ngung chuong trình bang phím Ctrl+ Break khi dang chay hay không
        ChangeProperty "AllowBreakIntoCode", dbBoolean, locker
        ' Vô hieu hoa phím dac biet nhu: F11
        ChangeProperty "AllowSpecialKeys", dbBoolean, locker
        ' Vô hieu hoa phím shift
        ChangeProperty "AllowBypassKey", dbBoolean, locker
        'Cho phep design/ sua thuoc tính form/ report khi ðang mo hay không.
        ChangeProperty "AllowDesignChanges", dbBoolean, locker

        'ChangeProperty "AppIcon", dbText, Access.CurrentProject.Path & "\HinhAnh\Icons\ongke0711.ico"
        Application.SetOption "ShowWindowsInTaskbar", locker

    End Sub

    Còn Ẩn Navigation Pane mình từng thử dù ẩn hết nhưng khi vào chọn thanh tiêu đề chọn "Customize the Ribo" thì sau đó tìm mấy cái tab kia vẫn hiện nó lên được và vào được các FORM mà không theo lộ trình hoặc bị khóa,
    Nên mình thêm 1 bước là khi lưu thành file accde rồi thì hiện Navigation ra rồi ẩn từng nhóm đối tượng là Form, table, report..

    Cá nhân mình là thấy như vậy big green
    Bác ơi code này copy vào module xong rồi tiếp theo dùng như thế nào ạ
  • RE: Đóng gói ứng dụng access

    AnNguyen > 29-09-20, 12:27 PM

    (29-09-20, 11:46 AM)yamakashi2003 Đã viết:
    (23-09-20, 12:52 PM)AnNguyen Đã viết: Đây bạn ơi, mình có đoạn code này trước anh Bảo cho nay vẫn dùng,
    Trong ứng dụng mình viết thì mình có điều kiện là file ACCDE thì mới áp dụng cái này còn file ACCDB là designer thì không cần vì khóa mà quên không mở cùng khổ big green

    Mã:
    Public Sub SercurityDB(locker As Boolean)

    'SecurityDB True ( False)

        ' Doi ten ung dung
        'ChangeProperty "Apptitle", dbText, "QUAN LY NHAN SU"
        ' Dat lai form khoi dong cua ung dung
        'ChangeProperty "StartupForm", dbText, "frmLogin"
       
        ' Cho nhìn thay Khung Database hay không
        ChangeProperty "StartupShowDBWindow", dbBoolean, locker
        ' Cho nhìn thay thanh Status hay không
        ChangeProperty "StartupShowStatusBar", dbBoolean, locker
        ' Cho phép hien thanh  design hay không
        ChangeProperty "AllowBuiltinToolbars", dbBoolean, locker
        ' Cho phép thêm bot 1 item vào các thanh công cu hay không
        ChangeProperty "AllowToolbarChanges", dbBoolean, locker
        ' Cho phép hien thanh menu con khi click chuot phai hay không
        ChangeProperty "AllowShortcutMenus", dbBoolean, locker
        ' Cho phép hien toan bo thanh menu hay không
        ChangeProperty "AllowFullMenus", dbBoolean, locker
        'Cho phép ngung chuong trình bang phím Ctrl+ Break khi dang chay hay không
        ChangeProperty "AllowBreakIntoCode", dbBoolean, locker
        ' Vô hieu hoa phím dac biet nhu: F11
        ChangeProperty "AllowSpecialKeys", dbBoolean, locker
        ' Vô hieu hoa phím shift
        ChangeProperty "AllowBypassKey", dbBoolean, locker
        'Cho phep design/ sua thuoc tính form/ report khi ðang mo hay không.
        ChangeProperty "AllowDesignChanges", dbBoolean, locker

        'ChangeProperty "AppIcon", dbText, Access.CurrentProject.Path & "\HinhAnh\Icons\ongke0711.ico"
        Application.SetOption "ShowWindowsInTaskbar", locker

    End Sub

    Còn Ẩn Navigation Pane mình từng thử dù ẩn hết nhưng khi vào chọn thanh tiêu đề chọn "Customize the Ribo" thì sau đó tìm mấy cái tab kia vẫn hiện nó lên được và vào được các FORM mà không theo lộ trình hoặc bị khóa,
    Nên mình thêm 1 bước là khi lưu thành file accde rồi thì hiện Navigation ra rồi ẩn từng nhóm đối tượng là Form, table, report..

    Cá nhân mình là thấy như vậy big green
    Bác ơi code này copy vào module xong rồi tiếp theo dùng như thế nào ạ

    Mã:
    Private Sub btnKhoa_Click()
    SercurityDB( False) ' khóa lại
    End Sub

    Private Sub btnMoKhoa_Click()
    SercurityDB( True) ' mở khóa
    End Sub
    Bạn vào 1 form nào đó có 1 sự kiện nào đó gọi nó ra và dùng thôi bạn
  • RE: Đóng gói ứng dụng access

    yamakashi2003 > 29-09-20, 06:02 PM

    (29-09-20, 12:27 PM)AnNguyen Đã viết:
    (29-09-20, 11:46 AM)yamakashi2003 Đã viết:
    (23-09-20, 12:52 PM)AnNguyen Đã viết: Đây bạn ơi, mình có đoạn code này trước anh Bảo cho nay vẫn dùng,
    Trong ứng dụng mình viết thì mình có điều kiện là file ACCDE thì mới áp dụng cái này còn file ACCDB là designer thì không cần vì khóa mà quên không mở cùng khổ big green

    Mã:
    Public Sub SercurityDB(locker As Boolean)

    'SecurityDB True ( False)

        ' Doi ten ung dung
        'ChangeProperty "Apptitle", dbText, "QUAN LY NHAN SU"
        ' Dat lai form khoi dong cua ung dung
        'ChangeProperty "StartupForm", dbText, "frmLogin"
       
        ' Cho nhìn thay Khung Database hay không
        ChangeProperty "StartupShowDBWindow", dbBoolean, locker
        ' Cho nhìn thay thanh Status hay không
        ChangeProperty "StartupShowStatusBar", dbBoolean, locker
        ' Cho phép hien thanh  design hay không
        ChangeProperty "AllowBuiltinToolbars", dbBoolean, locker
        ' Cho phép thêm bot 1 item vào các thanh công cu hay không
        ChangeProperty "AllowToolbarChanges", dbBoolean, locker
        ' Cho phép hien thanh menu con khi click chuot phai hay không
        ChangeProperty "AllowShortcutMenus", dbBoolean, locker
        ' Cho phép hien toan bo thanh menu hay không
        ChangeProperty "AllowFullMenus", dbBoolean, locker
        'Cho phép ngung chuong trình bang phím Ctrl+ Break khi dang chay hay không
        ChangeProperty "AllowBreakIntoCode", dbBoolean, locker
        ' Vô hieu hoa phím dac biet nhu: F11
        ChangeProperty "AllowSpecialKeys", dbBoolean, locker
        ' Vô hieu hoa phím shift
        ChangeProperty "AllowBypassKey", dbBoolean, locker
        'Cho phep design/ sua thuoc tính form/ report khi ðang mo hay không.
        ChangeProperty "AllowDesignChanges", dbBoolean, locker

        'ChangeProperty "AppIcon", dbText, Access.CurrentProject.Path & "\HinhAnh\Icons\ongke0711.ico"
        Application.SetOption "ShowWindowsInTaskbar", locker

    End Sub

    Còn Ẩn Navigation Pane mình từng thử dù ẩn hết nhưng khi vào chọn thanh tiêu đề chọn "Customize the Ribo" thì sau đó tìm mấy cái tab kia vẫn hiện nó lên được và vào được các FORM mà không theo lộ trình hoặc bị khóa,
    Nên mình thêm 1 bước là khi lưu thành file accde rồi thì hiện Navigation ra rồi ẩn từng nhóm đối tượng là Form, table, report..

    Cá nhân mình là thấy như vậy big green
    Bác ơi code này copy vào module xong rồi tiếp theo dùng như thế nào ạ

    Mã:
    Private Sub btnKhoa_Click()
    SercurityDB( False) ' khóa lại
    End Sub

    Private Sub btnMoKhoa_Click()
    SercurityDB( True) ' mở khóa
    End Sub
    Bạn vào 1 form nào đó có 1 sự kiện nào đó gọi nó ra và dùng thôi bạn
    khi em tạo 2 button và dùng code như trên, ấn vào nó thì nó báo lỗi code trong module:
    • dòng này bị bôi vàng: Public Sub SercurityDB(locker As Boolean)
    • dòng này bị bôi đen, nếu xóa đi thì dòng như thế ở dưới sẽ bị bôi đen tiếp: ChangeProperty
    Nó hiện thông báo lỗi là: 
           Compile error
           sub or function not dèined
    Bác chỉ em cách sửa với
  • RE: Đóng gói ứng dụng access

    AnNguyen > 29-09-20, 06:15 PM

    Bạn chụp hình lỗi và cái đoạn bạn áp dụng xem nào
  • RE: Đóng gói ứng dụng access

    ongke0711 > 29-09-20, 07:38 PM

    Copy còn thiếu cái hàm ChangeProperty.
  • RE: Đóng gói ứng dụng access

    yamakashi2003 > 29-09-20, 11:46 PM

    (29-09-20, 06:15 PM)AnNguyen Đã viết: Bạn chụp hình lỗi và cái đoạn bạn áp dụng xem nào
    em gửi bác file bác xem giúp em với, hình như thiếu hàm như bác ongke chỉ ấy ạ
    Bác mở file lên ấn nút khóa ở form đang nhập là thấy ạ
    http://www.mediafire.com/file/gfcnep76cj...accdb/file
  • RE: Đóng gói ứng dụng access

    ongke0711 > 30-09-20, 12:13 AM

    (29-09-20, 11:46 PM)yamakashi2003 Đã viết: em gửi bác file bác xem giúp em với, hình như thiếu hàm như bác ongke chỉ ấy ạ
    Bác mở file lên ấn nút khóa ở form đang nhập là thấy ạ

    Copy thêm hàm này vào module là hết lỗi.

    Mã PHP:
    Function ChangeProperty(strPropNamevarPropTypevarPropValue)
        Dim dbs As Databaseprp 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 coì thuôòc tiình ðoì
            ChangeProperty 
    False
            Resume Change_KetThuc
        End 
    If
    End Function 
  • RE: Đóng gói ứng dụng access

    AnNguyen > 30-09-20, 10:38 AM

    (29-09-20, 07:38 PM)ongke0711 Đã viết: Copy còn thiếu cái hàm ChangeProperty.

    Ngại quá, copy thiếu anh ạ, big green
  • RE: Đóng gói ứng dụng access

    yamakashi2003 > 30-09-20, 09:03 PM

    [/quote]

    Ngại quá, copy thiếu anh ạ, big green
    [/quote]

       
        ' Cho phép hien thanh  design hay không
        ChangeProperty "AllowBuiltinToolbars", dbBoolean, locker
        ' Cho phép thêm bot 1 item vào các thanh công cu hay không
        ChangeProperty "AllowToolbarChanges", dbBoolean, locker 
        'Cho phep design/ sua thuoc tính form/ report khi ðang mo hay không.
        ChangeProperty "AllowDesignChanges", dbBoolean, locker

    Em có test thử trên access 2010 tháy 3 lênhj này không có tác dụng gì. chắc chỉ chạy ở bản cũ à bác
  • RE: Đóng gói ứng dụng access

    tranthanhan1962 > 01-10-20, 12:35 AM

    Mình thấy các bạn xử lý vấn đề bảo mật cho accdb quá nhiều code. Thực ra với access 2007 trở đi thì nếu xử lý bảo mật OK. Thì nếu đã chuyển sang accde bảo mật cũng tương đối dễ dàng:
    1/ ẨnNavigation bar:  Chỉ cần bỏ check Display Navigation là ẩn ngay chứ đâu cần viết code gì
     [Hình: Hd3qexk.jpg]
    [Hình: Ud7Q7ln.jpg]
    2/Khi đã chuyển sang accde thì làm sao design được mà phải viết code ẩn thanh design. Còn đã là một chương trình hoàn chỉnh thì phải có Custom Ribbon, Các thanh Custom Ribon hoàn toàn thay thế System Ribbon, muốn có công cụ nào thì phải tự tạo. Đâu cần đến code ẩn hiện thanh công cụ hệ thống.
    3/Vấn đề cuối là khóa shift tránh người ta vào được Option để thay đổi thiết đặt để có thể mở những phần bị ẩn thì tôi thấy đoạn mã dưới đây OK cho tất cả các ver access kể cả các phiên bản 32 và 64 bit:
    Khóa shift:
    Public Function Disable_ShiftKey()

      Dim db As Database
      Dim prp, prptest As Property
      On Error GoTo Err_Handler
      Set db = CurrentDb
        For Each prptest In db.Properties
        If prptest.Name = "AllowBypassKey" Then
          db.Properties.Delete "AllowBypassKey"
        Exit For
        End If
        Next prptest
        Set prp = db.CreateProperty("AllowBypassKey", dbBoolean, False, True)
        db.Properties.Append prp
        db.Properties.Refresh
        msgBox "Disable Shift Key succeeded!", vbInformation
        Set db = Nothing
        Set prp = Nothing
        Err_Exit:
          Exit Function
        Err_Handler:
          msgBox "Error " & Err.Number & " ! " & Err.Description, vbCritical
          Resume Err_Exit
    End Function
    Bỏ khóa shift:
    Public Function Enable_ShiftKey()

        Dim db As Database
        Dim prp, prptest As Property
        On Error GoTo Err_Handler
        Set db = CurrentDb
        For Each prptest In db.Properties
          If prptest.Name = "AllowBypassKey" Then
          db.Properties.Delete "AllowBypassKey"
        Exit For
        End If
        Next prptest
        Set prp = db.CreateProperty("AllowBypassKey", dbBoolean, True, True)
        db.Properties.Append prp
        db.Properties.Refresh
        msgBox "Enable Shift Key succeeded!", vbInformation
        Set db = Nothing
        Set prp = Nothing
        Err_Exit:
        Exit Function
        Err_Handler:
          msgBox "Error " & Err.Number & " ! " & Err.Description, vbCritical
          Resume Err_Exit
    End Function
    Phần khó nhất trong vấn đề bảo mật, tôi nghĩ rằng rắc rối nhất là ẩn nút Option, bởi vì tùy theo ver access cách xử lý phần này khác nhau nên muốn access tương thích với nhiều version phải viết nhiều thanh ribbon cho phù hợp