Inserimento Password.

mercoledì 09 gennaio 2008 - 11.26

salinis Profilo | Junior Member

Hoi una maschera di access 2003 dove ho due campi in cui inserisco username e password. Come posso inserire nel campo testo una password con asterischi in modo che non sia visibile all' utente?

Grazie

alpanix Profilo | Junior Member

>Hoi una maschera di access 2003 dove ho due campi in cui inserisco
>username e password. Come posso inserire nel campo testo una
>password con asterischi in modo che non sia visibile all' utente?

Proprietà della casella di testo: InputMask (Maschera di Input) = Password
sostituisce un asterisco per ogni carattere


>Grazie

prego


AlPanix

salinis Profilo | Junior Member

Dove nella proprietà della casella di testo?
Significa che inserirò la password come asterischi?


Grazie

lbenaglia Profilo | Guru

>Dove nella proprietà della casella di testo?
Si.

>Significa che inserirò la password come asterischi?
Significa che a video verranno visualizzati degli asterischi, ma ovviamente la password corrisponderà a quella digitata

>Grazie
Prego.

Ciao!

--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

alpanix Profilo | Junior Member

>Dove nella proprietà della casella di testo?
in Visualizzazione Struttura, nel tab "Dati" della casella di testo in cui vuoi inserire la password, è presente la proprietà "Maschera di input"
in questa proprietà devi scrivere il valore "Password" senza virgolette


>Grazie
prego


AlPanix

salinis Profilo | Junior Member

Ok perfetto.

Da codice VB invece posso fare?


Grazie

alpanix Profilo | Junior Member

>Da codice VB invece posso fare?

cosa intendi con "da codice vb"?
se ti riferisci a modificare la maschera di input durante la digitazione, basta che nell'evento che ti serve inserisci il seguente codice

CasellaDiTesto.InputMask = "Password"


>Grazie

prego


AlPanix

salinis Profilo | Junior Member

Mi genera un errore. E' un command button in cui lancio una query di inserimento e mi ritorna una casella di testo per l' inserimento della password: esempio
Private Sub cmdAggiorna_Click() Dim varOK As Integer Dim ins_password As String varOK = MsgBox("Sicuro?", vbOKCancel, "SICURO") If varOK = vbOK Then ins_password = InputBox("Inserire password", "Controllo autorizzazione") ins_password.InputMask = "Password" If UCase(ins_password) = txtpwd Then DoCmd.SetWarnings False DoCmd.OpenQuery "query_aggiornamento" Else MsgBox "Utente non autorizzato. Modifica non effettuata.", vbOKOnly, "Password errata" End If Else Exit Sub End If lista.Requery CodiceProdotto.SetFocus End Sub

Dov'è l'errore?

alpanix Profilo | Junior Member

>[...]
>ins_password = InputBox("Inserire password", "Controllo autorizzazione")
> ins_password.InputMask = "Password"
>[...]
>
>Dov'è l'errore?

l'errore consiste nell'aver attribuito una proprietà ad una variabile
la variabile non è un controllo, per cui non puoi assegnarle proprietà caratteristiche dei controlli
c'è comunque da considerare il fatto che tu vorresti che la proprietà InputMask fosse addirittura assegnata alla InputBox, il che non è possibile, per lo stesso motivo di cui sopra
dovrai gestire il tuo controllo password in maniera differente, tramite casella di testo sulla maschera stessa o su un'altra maschera da aprire e chiudere sulla quale ci sia un controllo del tipo casella di testo con proprietà InputMask = "Password"

spero di essere stato chiaro


AlPanix

salinis Profilo | Junior Member

Scusa ma non ho capito. Comunque la mia necessità è che la proprietà dell' imputbox ci sia nell' evento del button. Non è possibile apportare una modifica di codice in modo che posso inserire la proprietà dell' imputbox?


Grazie1000

alpanix Profilo | Junior Member

>Scusa ma non ho capito. Comunque la mia necessità è che la proprietà
>dell' imputbox ci sia nell' evento del button. Non è possibile
>apportare una modifica di codice in modo che posso inserire la
>proprietà dell' imputbox?

purtroppo, per quel che ne so, no
invece della InputBox potresti utilizzare una maschera con una casella di testo in formato password che passi il valore inserito alla sua chiusura
in questo caso dovresti disegnarti una maschera (copiando la InputBox che utilizzi per controllare l'autorizzazione tramite la password) ed attribuire alla TextBox la proprietà InputMask = "Password"


>Grazie1000

prego


AlPanix

salinis Profilo | Junior Member

Considerando che non posso attribuire alla inputbox come proprietà PasswordChar vorrei creare una Text Box.

Ho scritto il codice da vb ad un command button ma mi genera l' errore. Come posso fare?

Private Sub cmdAggiorna_Click() Dim varOK As TextBox Dim ins_password As String varOK = MsgBox("Sicuro?", vbOKCancel, "SICURO") If varOK = vbOK Then ins_password = Text1.PasswordChar = "*" If UCase(ins_password) = txtpwd Then DoCmd.SetWarnings False DoCmd.OpenQuery "query_aggiornamento" Else MsgBox "Utente non autorizzato. Modifica non effettuata.", vbOKOnly, "Password errata" End If Else Exit Sub


alpanix Profilo | Junior Member

>Considerando che non posso attribuire alla inputbox come proprietà
>PasswordChar vorrei creare una Text Box.
>
>Ho scritto il codice da vb ad un command button ma mi genera
>l' errore. Come posso fare?
>
>Private Sub cmdAggiorna_Click()
>Dim varOK As TextBox
>Dim ins_password As String
>
>
> varOK = MsgBox("Sicuro?", vbOKCancel, "SICURO")
> If varOK = vbOK Then
> ins_password = Text1.PasswordChar = "*"
>
> If UCase(ins_password) = txtpwd Then
> DoCmd.SetWarnings False
> DoCmd.OpenQuery "query_aggiornamento"
>
> Else
>MsgBox "Utente non autorizzato. Modifica non effettuata.", vbOKOnly,
>"Password errata"
> End If
> Else
> Exit Sub

dunque, non conosco la proprietà PasswordChar, ma per il tuo caso utilizzerei un TextBox con InputMask = "Password" e non associato in cui inserire la password per l'azione da autorizzare
la inputbox non ti serve più

metti un controllo TextBox sulla maschera con Maschera di Input = Password e non associarlo a nessun campo della tabella sotto la maschera
quando poi risponderai al messaggio della MsgBox "Sicuro?"..., confronta la password con quella corretta e comportati di conseguenza
questo toglilo, poiché credo che l'errore derivi proprio da qui:
ins_password = Text1.PasswordChar = "*"
fammi sapere se sono stato chiaro

AlPanix

salinis Profilo | Junior Member

Scusami non essendo molto pratico di vb potresti modificare il codice che ho riportato sulla base di ciò che mi hai descritto.


Grazie 1000

alpanix Profilo | Junior Member

Private Sub cmdAggiorna_Click() 'non dichiarare una variabile come TextBox, semmai Object e poi ci lavori sopra ' Dim varOK As TextBox Dim varOK As Integer ' il valore della costante vbOk è un numero ' questa non ti serve più ' Dim ins_password As String varOK = MsgBox("Sicuro?", vbOKCancel, "SICURO") If varOK = vbOK Then ' questo non ti serve ' ins_password = Text1.PasswordChar = "*" ' qui devi controllare il valore della password che sarà in un altro campo della maschera ' se ad esempio la password da controllare fosse nel campo txtPassWord e ' quella corretta nel campo txtActualPassWord, il codice sarà: If txtPassWord = txtActualPassWord Then ' naturalmente devi trasformare o meno txtPassWord con UCase in base a come ' hai deciso che sia inserita txtActualPassWord DoCmd.SetWarnings False DoCmd.OpenQuery "query_aggiornamento" Else MsgBox "Utente non autorizzato. Modifica non effettuata.", vbOKOnly, "Password errata" End If End If Exit Sub


ho tolto la dichiarazione di ins_password ed ho modificato il tipo dato di vbOk

spero di esser stato chiaro


AlPanix

alpanix Profilo | Junior Member

se ha funzionato accetta la risposta, altrimenti mandami un esempio del tuo mdb in modo che possa lavorarci sopra nel modo descritto


AlPanix

salinis Profilo | Junior Member

Non riesco ad inviare l' esempio come allegato. Comunque non mi funziona. Accedo attraverso una maschera Login formata da 2 campi testi: Utente e Password. Nella maschera principale ho copiato i 2 campi testi della maschera Login. I due campi sono nominato come txtutente e txtpwd. Quando eseguo la query attraverso il codice di cui ti ho descritto verifico la corrispondenza del txtpwd della maschera principale e il txtpwd della login. Se corrisponde come dato mi esegue la query.

Spero di essere stato chiaro.

Help

alpanix Profilo | Junior Member

>Non riesco ad inviare l' esempio come allegato. Comunque non
>mi funziona. Accedo attraverso una maschera Login formata da
>2 campi testi: Utente e Password. Nella maschera principale ho
>copiato i 2 campi testi della maschera Login. I due campi sono
>nominato come txtutente e txtpwd. Quando eseguo la query attraverso
>il codice di cui ti ho descritto verifico la corrispondenza del
>txtpwd della maschera principale e il txtpwd della login. Se
>corrisponde come dato mi esegue la query.
>
>Spero di essere stato chiaro.
>
>Help

sei stato chiaro, credo di aver capito allora dove sta il problema.
il controllo devi farlo tra [Forms]![Login].[Password] e txtPwd

cioè, una volta inserita la password deve essere eseguito il seguente codice nell'evento Click del pulsante:

[...]
If Not UCase(txtPwd) = [Forms]![Login].[Password] Then
MsgBox [...]
Exit Sub
End If
[...]

in questo caso il controllo viene effettuato sui due valori delle due maschere differenti (sempre che entrambi siano in maiuscolo, altrimenti ometti il richiamo alla funzione UCase() lasciando solo txtPwd)
quello che ti avevo scritto io più sopra era utile solo se nella stessa maschera ci fossero sia la password da inserire (quindi da controllare) che quella effettiva (nascosta), ma nel tuo caso non va bene


AlPanix

salinis Profilo | Junior Member

Il codice che ho scritto è
Private Sub cmdAggiorna_Click() Dim varOK As Integer Dim ins_password As String varOK = MsgBox("Sicuro?", vbOKCancel, "SICURO") If varOK = vbOK Then ins_password = InputBox("Inserire password", "Controllo autorizzazione") If UCase(ins_password) = txtpwd Then DoCmd.SetWarnings False DoCmd.OpenQuery "query_aggiornamento" Else MsgBox "Utente non autorizzato. Modifica non effettuata.", vbOKOnly, "Password errata" End If Else Exit Sub End If lista.Requery CodiceProdotto.SetFocus End Sub

Come lo dovrei modifcare?
Ripeto funziona solo se non c'è la proprietà di Password (Non vorrei che la password fosse a vista)

Grazie

alpanix Profilo | Junior Member

>Il codice che ho scritto è
>
>Come lo dovrei modifcare?
>Ripeto funziona solo se non c'è la proprietà di Password (Non
>vorrei che la password fosse a vista)

scusa, errore mio
sulla tua nuova maschera devi avere una casella di controllo "txtPwd" con maschera di input = Password (così escono tutti gli asterischi)
questo è quello che devi scrivere

Private Sub cmdAggiorna_Click() Dim varOK As Integer varOK = MsgBox("Sicuro?", vbOKCancel, "SICURO") If varOK = vbOK Then If Not UCase(Me!txtPwd) = UCase([Forms]![Login].txtPwd.Text) Then MsgBox "Utente non autorizzato. Modifica non effettuata.", vbOKOnly, "Password errata" Exit Sub End If DoCmd.SetWarnings False DoCmd.OpenQuery "query_aggiornamento" Else Exit Sub End If lista.Requery CodiceProdotto.SetFocus End Sub

fammi sapere


>Grazie

prego


AlPanix

salinis Profilo | Junior Member

Invio in allegato un mdb. Login: username=prova pwd=prova

Mi genera un errore. Accedo con la maschera di login, richiamo l'articolo dall' elenco articolo faccio una variazione e lancio il button di modifica.


Help

alpanix Profilo | Junior Member

>Invio in allegato un mdb. Login: username=prova pwd=prova
>
>Mi genera un errore. Accedo con la maschera di login, richiamo
>l'articolo dall' elenco articolo faccio una variazione e lancio
>il button di modifica.
>
>
>Help

se la maschera su cui sta il controllo txtPassword non è attiva, non fare il controllo sulla proprietà Text di txtPassword ma su txtPassword direttamente:

[...]
If Not UCase(Me!txtPwd) = UCase([Forms]![Login].txtPassword) Then
[...]

nota che ho tolto ".Text"

così dovrebbe funzionare correttamente
resta il fatto che non mi chiede la password nella maschera degli articoli, quando vado a modificare


AlPanix

salinis Profilo | Junior Member

Ok funziona. Considerando che all'inputbox non posso associare la proprietà di Password, quale sarebbe l'alternativa che ad ogni inserimento o ad ogni modifica di articolo possa inserire la password per lasciare traccia di tutti i movimenti che eseguo. Ovviamente la password deve corrispondere alla login e debba avere come proprietà Password.


grazie


alpanix Profilo | Junior Member

>Ok funziona. Considerando che all'inputbox non posso associare
>la proprietà di Password, quale sarebbe l'alternativa che ad
>ogni inserimento o ad ogni modifica di articolo possa inserire
>la password per lasciare traccia di tutti i movimenti che eseguo.
>Ovviamente la password deve corrispondere alla login e debba
>avere come proprietà Password.

una soluzione è costruirti una maschera identica alla InputBox con una casella di testo visualizzata con Maschera di Input = Password alla quale passi un valore (credo tu debba utilizzare la proprietà "OpenArgs" da VBA alla chiusura della maschera di conferma stessa) e che in base a questo valore ti permetta o meno le modifiche e/o gli inserimenti nelle tabelle relative
ad esempio, potresti passare come argomento la password stessa e poi la confronti con quella che immetti
questa potrebbe essere la soluzione più veloce


>grazie

prego


AlPanix

salinis Profilo | Junior Member

Scusami potresti farmi un esempio pratico? Magari sull'db di esempio che ho inviato come allegato?


Grazie 100000000!!

alpanix Profilo | Junior Member

>Scusami potresti farmi un esempio pratico? Magari sull'db di
>esempio che ho inviato come allegato?

una cortesia, la prossima volta che alleghi un esempio non proteggerlo in alcun modo
non perché è impossibile lavorarci, ma perché per farlo ci vuole un po' più di tempo per importare tutti gli elementi e purtroppo di tempo non ne ho moltissimo
allego il tuo mdb corretto
ho aggiunto una form "frmConferma" alla quale passo il valore della casella di testo txtPwd e che utilizzo poi per autorizzare o meno l'azione di modifica
il "DoCmd.OpenQuery" l'ho spostato sulla nuva maschera


>Grazie 100000000!!

prego


AlPanix

salinis Profilo | Junior Member

Grande funziona. Però sulla nuova maschera creata (frmconferma) per l' inserimento della password al caricamento esegue il codice come di seguito riportato:

Private Sub cmdOK_Click() If UCase(txtPassword) = Me.OpenArgs Then DoCmd.SetWarnings False DoCmd.OpenQuery "query_aggiornamento" Forms!ArchivioArticoli.Requery Forms!ArchivioArticoli.lista.Requery DoCmd.Close acForm, "frmConferma" Else If MsgBox("Password errata. Azione non autorizzata.", vbOKCancel, "Errore") = vbCancel Then DoCmd.Close acForm, "frmConferma" End If Exit Sub End If End Sub

Dovrei modificarlo perchè nella maschera articoli ho attivato un pulsante di comando (INSERISCI) che avvia una query di inserimento. Come devo fare?
All' interno del db ho altre 2 maschere a cui devo interfacciare il frmConferma. Le atre 2 maschera sono nominate SchedaTecnica e Garanzie. Come devo fare per intefacciare le 2 maschere con il codice suddetto?

Grazie

alpanix Profilo | Junior Member

>Grande funziona. Però sulla nuova maschera creata (frmconferma)
>per l' inserimento della password al caricamento esegue il codice
>come di seguito riportato:
>
>[...]
>
>Dovrei modificarlo perchè nella maschera articoli ho attivato
>un pulsante di comando (INSERISCI) che avvia una query di inserimento.
>Come devo fare?
>All' interno del db ho altre 2 maschere a cui devo interfacciare
>il frmConferma. Le atre 2 maschera sono nominate SchedaTecnica
>e Garanzie. Come devo fare per intefacciare le 2 maschere con
>il codice

se ci fai caso, all'evento Click del pulsante "ModificaRecord" sulla maschera degli articoli ho aggiunto il comando che richiama la maschera "frmConferma" passandogli come argomento (OpenArgs) la stringa presente nella casella di testo nascosta "txtPwd" della maschera degli articoli
potresti utilizzare lo stesso costrutto per il pulsante "InserisciRecord" passando sempre txtPwd, ma anche una condizione che indichi la volontà di inserimento anziché di modifica (ad esempio la lettera "I" quando vuoi inserire, "M" per modificare, "C" per cancellare..) in questo modo:
ti dichiari una variabile (ad es. varOpenArgs) di tipo String
alla pressione del pulsante "ModificaRecord" concateni, nella variabile varOpenArgs, UCase(txtPwd) + "M" ("I" se premi il pulsante "InserisciRecord" e "C" per "CancellaRecord")
poi esegui il comando DoCmd.OpenForm "frmConferma" specificando come argomento la variabile varOpenArgs e sulla maschera "frmConferma" fai un check sull'elemento "Me.OpenArgs" suddividendo il testo che ti arriva in due parti:
varPassWord = Left(Me.OpenArgs, Len(Me.OpenArgs) - 1) ===> prende la stringa fino al penultimo carattere
varAzione = Right(Me.OpenArgs, 1) ===> prende l'ultimo carattere della stringa
stabilendo quale query lanciare tramite l'ultima lettera (varAzione), che se è "M" lancia la query "qryModificaRecord", se è "I" lancia la query "qryInserisciRecord" e se è "C" lancia la query "qryCancellaRecord"
nello stesso modo puoi richiamare la maschera "frmConferma" dalle altre maschere del tuo db, tenendo sempre in alta considerazione il fatto che il codice, così come l'ho scritto io, non ti permette di aprire la maschera "frmConferma" se non viene richiamata con la parte variabile valorizzata (If IsNull(Me.OpenArgs) Then...) e passandogli un altro carattere per decidere quale query lanciare di conseguenza
ti assicuro che è più facile di quel che sembra


>Grazie

figurati


AlPanix

salinis Profilo | Junior Member

Mi potresti modificare il codice di VB che ti ho riportato sulla base delle 2 maschere aggiuntive?

Esempio Oltre alla maschera ArchivioArticoli c'è la maschera SchedaTecnica. Sui pulsanti di comando che avviano le query ho apportato le modifiche però non riesco a modificare il codice di VB che sta su caricamento della maschera frmConferma. Sul codice di VB della frmConferma è scritto la query di aggiornamento ma devo scrivere anche la query di inserimento, è scritto il nome della maschera ArchivioArticoli ma devo scrivere anche la maschera SchedaTecnica che all' interno della quale ci sono le 2 query. Mi aiuti a modificare il codice VB della frmConferma?

Scusami mi potresti gentilemente effettuare le modifiche nel db che mi hai allegato?



Grazie

alpanix Profilo | Junior Member

>Scusami mi potresti gentilemente effettuare le modifiche nel db che mi hai allegato?

fatto
adesso puoi creare una maschera "SchedaTecnica" e scommentare i comandi relativi nella maschera "frmConferma"


>Grazie

prego


AlPanix

salinis Profilo | Junior Member

Alla modifica di un'articolo mi esce il messaggio: Password errata. Come mai?

Ti riporto il codice che ho modificato sulla base delle query che devo eseguire e delle tre maschere che eventualmente devo aprire. Cosa ho sbagliato?
Private Sub cmdOK_Click() Dim varPassword As String Dim varAzione As String varPassword = Left(Me.OpenArgs, Len(Me.OpenArgs) - 2) varAzione = Right(Me.OpenArgs, 2) If UCase(txtPassword) = varPassword Then DoCmd.SetWarnings False Select Case Right(varAzione, 1) Case "M" DoCmd.OpenQuery "query_aggiornamento" Case "I" DoCmd.OpenQuery "query_inserimento" Case "S" DoCmd.OpenQuery "q_inserimento_ST" Case "T" DoCmd.OpenQuery "q_inserimento_storico" Case "L" DoCmd.OpenQuery "q_aggiornamento_ST" Case "E" DoCmd.OpenQuery "q_inserimento_RP" End Select Select Case Left(varAzione, 1) Case "A" Forms!ArchivioArticoli.Requery Forms!ArchivioArticoli.lista.Requery Case "S" Forms!SchedaTecnica.Requery Forms!SchedaTecnica.lista.Requery Case "R" Forms!RapportoPrestazione.Requery Forms!RapportoPrestazione.lista.Requery End Select DoCmd.Close acForm, "frmConferma" Else If MsgBox("Password errata. Azione non autorizzata.", vbOKCancel, "Errore") = vbCancel Then DoCmd.Close acForm, "frmConferma" End If Exit Sub End If

Grazie

alpanix Profilo | Junior Member

>Alla modifica di un'articolo mi esce il messaggio: Password errata.
>Come mai?
>
>Ti riporto il codice che ho modificato sulla base delle query
>che devo eseguire e delle tre maschere che eventualmente devo
>aprire. Cosa ho sbagliato?
>
>[...]
>
>Grazie

il codice mi sembra giusto
forse è un problema di aggiornamento
a me non evidenzia il messaggio di password errata e registra tutte le modifiche
dovrei vedere il tuo mdb, perché su quello che ti ho mandato io non risulta questo problema


AlPanix
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5