Passa ai contenuti principali

Access - Finestra inserimento password

All'interno di un database di Access è comodo poter bloccare certe sezioni del database tramite password.

Per fare questo occorre creare un modulo in Visual Basic con all'interno queste righe di codice:
Option Compare Database
Option Explicit
'////////////////////////////////////////////////////////////////////
'Password masked inputbox
'Allows you to hide characters entered in a VBA Inputbox.
'
'Code written by Daniel Klann
'March 2003
'////////////////////////////////////////////////////////////////////
'Tradotto in italiano da Davide
'https://davidetech.blogspot.com/
'////////////////////////////////////////////////////////////////////
'Funzioni API da utilizzare
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
'Costanti da utilizzare nelle funzioni API
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 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 'Una finestra è stata attivata
RetVal = GetClassName(wParam, strClassName, lngBuffer)
If Left$(strClassName, RetVal) = "#32770" Then 'Nome della classe dell'Inputbox
'Questo permette di modificare il testo in modo che visualizzi il carattere della password *.
'si può cambiare carattere ("*") come preferisci.
SendDlgItemMessage wParam, &H1324, EM_SETPASSWORDCHAR, Asc("*"), &H0
End If
End If
'Questa linea assicurerà che tutti gli altri ganci che possono essere in posizione siano
'chiamati correttamente
CallNextHookEx hHook, lngCode, wParam, lParam
End Function
Public Function InputBoxDK(Prompt, Optional Title, Optional Default, Optional XPos, _
Optional YPos, Optional HelpFile, Optional Context) As String
Dim lngModHwnd As Long, lngThreadID As Long
lngThreadID = GetCurrentThreadId
lngModHwnd = GetModuleHandle(vbNullString)
hHook = SetWindowsHookEx(WH_CBT, AddressOf NewProc, lngModHwnd, lngThreadID)
InputBoxDK = InputBox(Prompt, Title, Default, XPos, YPos, HelpFile, Context)
UnhookWindowsHookEx hHook
End Function

Poi occorre preparare l'interfaccia grafica in questo modo:
Creare una maschera principale che chiameremo Mascehra 1
Creare all'interno della Maschera 1 un pulsante

Creare una maschera secondaria che ciameremo Maschera 2, contenente i dati che vogliamo proteggere da password

All'interno della Maschera 1 cliccare sul pulsante e nella finestra delle proprietà cliccare sulla scheda Evento, cliccare poi sulla voce Su clic e selezionare Routine Evento.
Verrà aperto Visual Basic in modo da inserire il codice da associare al pulsante quando clicchiamo su di esso (Su clic).
Quindi inserire queste righe di codice all'interno della funzione nomepulsante_Click()
Dim strAdminPWord As String
Dim string1 As String
Dim string2 As String
Dim result
Richiesta:
strAdminPWord = InputBoxDK("Per accedere, inserisci la password dell'utente Amministratore", "Richiesta Password")
string1 = strAdminPWord
string2 = "miapassword" 'inserire la propria password
result = StrComp(string1, string2, 0)
If result = 0 Then
DoCmd.OpenForm "Maschera 2", acNormal, "", "", , acNormal 'Al posto di Maschera 2 inserire il nome della propria
'maschera da aprire dopo aver inserito la password
ElseIf strAdminPWord = "" Or IsNull(strAdminPWord) = True Then
Exit Sub
'Visualizzazione di una finestra se è stata inserita una password non valida
ElseIf MsgBox("Password non valida" & Chr(13) & Chr(10) & "Riprova!", vbCritical + vbYesNo, "Errore Password") = vbYes Then
GoTo Richiesta
Else
Exit Sub
End If
Ecco il risultato:


Download Project

Commenti

Post popolari in questo blog

Android Studio - Impostare lingua app

In questo articolo vedremo come poter selezionare la lingua all'interno della nostra app. Nel precedente articolo in cui si parlava del file string.xml , la lingua dell'app veniva selezionata automaticamente in base alle impostazioni del dispositivo, mentre qui vedremo come poter selezionare a proprio piacimento la lingua che dovrà avere la nostra app indipendentemente dall'impostazione del dispositivo. Per prima cosa creare il layout Ecco un esempio do come può essere il file activity_main.xml Ora creare le stringhe di testo all'interno del file string.xml Ora creare la traduzione del file string.xml nelle varie lingua come descritto in questo articolo Il risultato sarà una serie di file string.xml delle varie lingue impostate. Ora queste di seguito sono tre funzioni che servono per: selezione della lingua salvataggio della selezione nelle preferenze dell'app caricamento della lingua quando si avvia l'app Ecco come si presenta il file Main...

Android Studio - Rinominare il progetto

Rinominare il progetto Android Studio ATTENZIONE!: non eseguire questa procedura se l'app è stata pubblicata su Google Play Store Quando si vuole cambiare nome al progetto: nome cartella in cui è contenuto il progetto package name bisogna eseguire questi passaggi: Andare nella cartella dove è contenuto il progetto Creare una copia del progetto in questione Rinominare la cartella copiata con il nome dell'app (non usare spazi tra le parole) Ora è necessario dire ad Android Studio il nome del nuovo progetto  Aprire Android Studio Aprire il progetto creato in precedenza Una volta caricato il progetto cliccare Build Cliccare Clean Project Attendere che venga eseguito il processo di "pulitura" Cliccare ancora su Build Cliccare su Rebuild Project Attendere che venga ricostruito il progetto Ora aprire la cartella app fino a visualizzare la cartella java Cliccare sull'ingranaggio  Deselezionare la voce Compact Middle Packa...

Arduino - Lettura tensione potenziometro e display LCD

Leggere il valore di un poteziometro (parte 2) Oggi vedremo come leggere il valore in tensione di un potenziometro collegato al pin Analogico A0 di Arduino.