1. Computer problem? Tech Support Guy is completely free -- paid for by advertisers and donations. Click here to join today! If you're new to Tech Support Guy, we highly recommend that you visit our Guide for New Members.

Solved: Open report with password in access

Discussion in 'Business Applications' started by jmk909er, Oct 28, 2011.

Thread Status:
Not open for further replies.
Advertisement
  1. jmk909er

    jmk909er Thread Starter

    Joined:
    May 20, 2009
    Messages:
    354
    I have a command button that opens a form that needs to be for admin only. How can I do that? password the command button? Password the report? I dont know how to write the code for it. The report is "AllRecords"

    Help! thanks, Joe
     
  2. Keebellah

    Keebellah Trusted Advisor

    Joined:
    Mar 27, 2008
    Messages:
    6,608
    First Name:
    Hans
    Hi Joe,

    I use this vba code to prompt for a password, maybe you can build it into your Ms Access, I normally use it in Excel but just tested it with Ms Access 2010 to see if it works and it does

    Code:
    Option Compare Database
    Option Explicit
    
    'Attribute VB_Name = "PasswordModule"
    'Last Update: 16-05-2009
    '////////////////////////////////////////////////////////////////////
    'Password masked inputbox
    'Allows you to hide characters entered in a VBA Inputbox.
    '
    'Code written by Daniel Klann
    'http://www.danielklann.com/
    'March 2003
    
    '// Kindly permitted to be amended
    '// Amended by Ivan F Moala
    '// http://www.xcelfiles.com
    '// April 2003
    '// Works for Xl2000+ due the AddressOf Operator
    '////////////////////////////////////////////////////////////////////
    
    '********************   CALL FROM FORM *********************************
    '    Dim pwd As String
    '
    '    pwd = InputBoxDK("Please Enter Password Below!", "Database Administration Security Form.")
    '
    '    'If no password was entered.
    '    If pwd = "" Then
    '        MsgBox "You didn't enter a password!  You must enter password to 'enter the Administration Screen!" _
    '        , vbInformation, "Security Warning"
    '    End If
    '**************************************
    
    
    'API functions to be used
    Private Declare Function CallNextHookEx _
        Lib "user32" ( _
        ByVal hHook As Long, _
        ByVal ncode As Long, _
        ByVal wParam As Long, _
        lParam As Any) _
    As Long
    
    Private Declare Function GetModuleHandle _
        Lib "kernel32" _
        Alias "GetModuleHandleA" ( _
        ByVal lpModuleName As String) _
    As Long
    
    Private Declare Function SetWindowsHookEx _
        Lib "user32" _
        Alias "SetWindowsHookExA" ( _
        ByVal idHook As Long, _
        ByVal lpfn As Long, _
        ByVal hmod As Long, _
        ByVal dwThreadId As Long) _
    As Long
    
    Private Declare Function UnhookWindowsHookEx _
        Lib "user32" ( _
        ByVal hHook As Long) _
    As Long
    
    Private Declare Function SendDlgItemMessage _
        Lib "user32" Alias "SendDlgItemMessageA" ( _
        ByVal hDlg As Long, _
        ByVal nIDDlgItem As Long, _
        ByVal wMsg As Long, _
        ByVal wParam As Long, _
        ByVal lParam As Long) _
    As Long
    
    Private Declare Function GetClassName _
        Lib "user32" _
        Alias "GetClassNameA" ( _
        ByVal hWnd As Long, _
        ByVal lpClassName As String, _
        ByVal nMaxCount As Long) _
    As Long
    
    Private Declare Function GetCurrentThreadId _
        Lib "kernel32" () _
    As Long
    
    'Constants to be used in our API functions
    Private Const EM_SETPASSWORDCHAR = &HCC
    Private Const WH_CBT = 5
    Private Const HCBT_ACTIVATE = 5
    Private Const HC_ACTION = 0
    Private hHook As Long
    
    Public Const cAdminPW As String = "[COLOR="Red"][B]admin[/B][/COLOR]"       ' <<< This is your password
    
    Function AskPassword() As Boolean
    Dim x
    Dim AllowIt As Boolean
    AllowIt = False
    On Error Resume Next
    x = InputBoxDK("Enter password", "PASSWORD REQUIRED")
    If Err > 0 Or x = "" Then
        Exit Function
    End If
    If x <> cAdminPW Then
        MsgBox "Incorrect password!", , ""
    Else
        AskPassword = True
    End If
    End Function
    
    Public Function NewProc(ByVal lngCode As Long, _
                            ByVal wParam As Long, _
                            ByVal lParam As Long) As Long
    
    Dim RetVal
    Dim strClassName As String, lngBuffer As Long
    
    If lngCode < HC_ACTION Then
        NewProc = CallNextHookEx(hHook, lngCode, wParam, lParam)
        Exit Function
    End If
    
    strClassName = String$(256, " ")
    lngBuffer = 255
    
    If lngCode = HCBT_ACTIVATE Then    'A window has been activated
        RetVal = GetClassName(wParam, strClassName, lngBuffer)
        If Left$(strClassName, RetVal) = "#32770" Then  'Class name of the Inputbox
            'This changes the edit control so that it display the password character *.
            'You can change the Asc("*") as you please.
            SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
        End If
    End If
       
    'This line will ensure that any other hooks that may be in place are
    'called correctly.
    CallNextHookEx hHook, lngCode, wParam, lParam
    
    End Function
    
    '// Make it public = avail to ALL Modules
    '// Lets simulate the VBA Input Function
    Public Function InputBoxDK(Prompt As String, Optional Title As String, _
                Optional Default As String, _
                Optional xPos As Long, _
                Optional Ypos As Long, _
                Optional Helpfile As String, _
                Optional Context As Long) As String
       
    Dim lngModHwnd As Long, lngThreadID As Long
       
    '// Lets handle any Errors JIC! due to HookProc> App hang!
    On Error GoTo ExitProperly
    lngThreadID = GetCurrentThreadId
    lngModHwnd = GetModuleHandle(vbNullString)
       
    hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
    If xPos Then
        InputBoxDK = InputBox(Prompt, Title, Default, xPos, Ypos, Helpfile, Context)
    Else
        InputBoxDK = InputBox(Prompt, Title, Default, , , Helpfile, Context)
    End If
    
    ExitProperly:
    UnhookWindowsHookEx hHook
    
    End Function
    
    
    It's just simply calling the function and if the answer is true its OK

    If AskPassword = False then exit sub

    The password is hardoced in the vba (see red text)

    You will have to hide the VBA Project nad use a password to display it, to keep the password secret
     
  3. jmk909er

    jmk909er Thread Starter

    Joined:
    May 20, 2009
    Messages:
    354
    I need a much simpler solution and have found this:

    Private Sub Command81_Click()
    If "facdiv" = InputBox$("Enter Password", "Limited Access") Then
    DoCmd.OpenReport "AllRecords"
    Else
    MsgBox "You're not allowed to see this."
    End If
    End Sub

    This solution is working except that when I put in the password and hit enter it prints the report out! What do I need to do to just open the report??

    Thanks
     
  4. Keebellah

    Keebellah Trusted Advisor

    Joined:
    Mar 27, 2008
    Messages:
    6,608
    First Name:
    Hans
    don't add the print command, you exceute DoCmd.OpenReport xxx and that is what it does.
    What did you want it to do?
     
  5. jmk909er

    jmk909er Thread Starter

    Joined:
    May 20, 2009
    Messages:
    354
    I figured it out:

    DoCmd.OpenReport "AllRecords", acViewReport

    I put ",acViewReport" on the end, I guess the default without it is to print
     
  6. Keebellah

    Keebellah Trusted Advisor

    Joined:
    Mar 27, 2008
    Messages:
    6,608
    First Name:
    Hans
    True, I'm not that hot with Access.
    Don't forget the "Mark Solved" button if you haven't already done so.

    :)
     
  7. nursell

    nursell

    Joined:
    Jul 26, 2011
    Messages:
    143
    Or you could use

    DoCmd.OpenReport "ReportName", AcViewPreview
     
  8. Sponsor

As Seen On
As Seen On...

Welcome to Tech Support Guy!

Are you looking for the solution to your computer problem? Join our site today to ask your question. This site is completely free -- paid for by advertisers and donations.

If you're not already familiar with forums, watch our Welcome Guide to get started.

Join over 733,556 other people just like you!

Loading...
Thread Status:
Not open for further replies.

Short URL to this thread: https://techguy.org/1024450

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice