Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

ACCESS Login ePassword

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

ACCESS Login ePassword

Postdi Francesco53 » 05/03/11 18:53

Buona serata a tutti, leggendo un forum inglese, ho trovato la descrizione di come
creare in Access una maschera di login per gli utenti, ma già c'è qualche errore in
quanto al primo utente sostituisce la password con quella dell'ultimo inserimento.
Io ho aggiunto (ho cercato di aggiungere) la possibilità che se l'utente è diverso,
apriva una maschera diversa. Per fare ciò, ho previsto un tabella IngressoLogin
contenete ID_Utente che viene aggiornata con il valore dell'utente al riconoscimento
della password, e che poi tramite la query QArchivio fa vedere solo i dati di quell'utente.
Purtroppo non riesco a memorizzare il dato nella tabella IngressoLogin.
Questo è il link per il file: http://www.megaupload.com/?d=2ECQSEHA
Ringrazio chi può aiutarmi.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Sponsor
 

Postdi archimede » 06/03/11 08:40

Francesco53 ha scritto:al primo utente sostituisce la password con quella dell'ultimo inserimento. Io ho aggiunto (ho cercato di aggiungere) la possibilità che se l'utente è diverso, apriva una maschera diversa.
Temo di non aver capito nulla. Cosa vuoi fare esattamente?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Login ePassword

Postdi Francesco53 » 06/03/11 10:52

Buon giorno Alessandro, come prima cosa ti evidenzio quello che non mi funziona:
If Me.txtPassword.Value = DLookup("Password", "Login", _
"[ID_Utente]=" & Me.Utente.Value) Then

ID_Utente = Me.Utente.Value

If ID_Utente = 1 Then
DoCmd.Close acForm, "frmLogon", acSaveNo
DoCmd.OpenForm "Menu"
Else
Set db = CurrentDb
criterio = "delete from IngressoLogin"
db.Execute (criterio)
criterio = "INSERT INTO IngressoLogin (ID_Utente)"
criterio = criterio & "SELECT IngressoLogin.ID_Utente"
Values (Utente)
criterio = criterio & "WHERE " & Wherex
db.Execute (criterio)


DoCmd.Close acForm, "frmLogon", acSaveNo
DoCmd.OpenForm "Menu2"
End If

Else
.....
End If
i comando INSERT delle linee colorate, non riesce a memorizzare nella tabella IngressoLogin!'ID_Utente,
il valore di accesso alla richiesta Utente e Password della Maschera di Login. In base a questo valore,
l'utente vedrà tramite la query QArchivio solo i suoi dati.
Altra difficoltà è quella che a volte mi ritrovo la prima password del primo record della Tabella Login,
sostituita con la password di altro utente.
Spero di essere riuscito a focalizzare le mie difficoltà.
Ti ringrazio per l'interessamento
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Postdi archimede » 06/03/11 11:17

Francesco53 ha scritto:Spero di essere riuscito a focalizzare le mie difficoltà.
Ahimè temo di no. Perché non provi a spiegare semplicemente quello che vorresti fare (indipendentemente da quello che hai già tentato di realizzare)?

Come si chiamano e come sono fatte le tabelle che usi? Qual è l'url del forum inglese da cui hai preso spunto?

ID_Utente = Me.Utente.Value -> ID_Utente è un numero? Me.Utente.Value è un numero?

criterio = criterio & "WHERE " & Wherex -> La variabile Wherex è la prima volta che viene citata nel tuo codice. :mmmh:
In base a questo valore, l'utente vedrà tramite la query QArchivio solo i suoi dati.
Eh?

Alessandro

PS: usa il tag code per il codice e cerca di evitare gli a capo inutili: il testo si adatta automaticamente alla larghezza della pagina.
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Login ePassword

Postdi Francesco53 » 06/03/11 12:02

Buon giorno Alessandro, pensavo che scaricando il file e vedendo come composto, si poteva capire ciò che chiedevo.
ID_Utente = Me.Utente.Value -> ID_Utente è un numero? Me.Utente.Value è un numero?
Si, sono numeri, nella maschera di login, tramite combobox chiamata Utente, scelgo l'ID_Utente, che poi dovrei memorizzare come numero nella tabella IngressoLogin!'ID_Utente.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Postdi archimede » 08/03/11 09:36

Francesco53 ha scritto:pensavo che scaricando il file e vedendo come composto, si poteva capire ciò che chiedevo.
Devi tener presente due cose. Non tutti hanno sempre a disposizione un PC con Access (ad esempio io uso Linux e solo saltuariamente ho accesso a PC Windows). Inoltre, cosa ben più importante, tra sei mesi o un anno l'url da te postato molto probabilmente non sarà più valido; di conseguenza, l'utilità di questa discussione sarebbe pari a zero per altri utenti con un problema simile.

Un file di esempio può senz'altro essere di aiuto in alcuni casi, ma ritengo che ciò non possa esimere l'utente dall'esporre il più esaustivamente possibile il suo problema.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Login ePassword

Postdi Francesco53 » 08/03/11 16:36

Buona sera Alessandro, ti spiego qule è la mia necessità. Ho due Tabelle la prima di nome Login con i seguenti campi:
ID_Utente (Numerico); Utente (Testo); Password (Testo). La seconda Tabella con nome IngressoLogin ha un solo campo ID_Utente (Numerico).
Una Maschera in cui dalla Tabella Login, inserisco l' ID_Utente per mezzo di una CasellaCombinata nominata Utente, la Password e poi alla chiusura della stessa se la password è giusta, mi deve memorizzare nella Tabella IngressoLogin, l' ID_Utente.
Grazie e spero di essere stato chiaro.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Postdi archimede » 09/03/11 09:52

A parte il fatto che mostrare la lista degli utenti validi non mi pare una pratica molto "sicura" (è più usuale far inserire lo username all'utente), a cosa serve la tabella IngressoLogin? Non sarebbe sufficiente un campo nella tabella Login (tipo Entrato S/N o 1/0)? O, ancor più semplicemente, non basta una variabile globale?

La tua applicazione può essere usata solo da un utente alla volta?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Login ePassword

Postdi Francesco53 » 09/03/11 20:24

Buona sera Alessandro, avevo previsto l'utilizzo in unico PC di diversi utenti, un Utente alla volta, che dopo loggato, poteva lavorare sui dati da lui inseriti. Per il fatto di far vedere la lista utenti mi sembrava la cosa più semplice, se hai da suggerirmi altra forma te ne sono grato. Per l'aggiunta di un campo nella tabella login và benissimo ugualmente, perchè mi permette in base al valore abbinato all'utente di far lavorare solo i suoi dati. Ti ringrazio per il tuo aiuto e attendo eventuali indicazioni.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Postdi archimede » 11/03/11 12:24

La cosa più semplice in assoluto potrebbe essere usare il nome dell'utente Windows. In alternativa una variabile in un modulo globale.

Metti questo in un Modulo standard (cioè NON nel codice di una form o di un report):
Codice: Seleziona tutto
Option Compare Database
Option Explicit
Private g_Utente As String
Public Sub setUser(p_val As String)
    g_Utente = p_val
End Sub
Public Function getUser() As String
    getUser = g_Utente
End Function
Public Function getWinUser() As String
    getWinUser = Environ("USERNAME")
End Function
Potrai quindi usare nelle query (o nel codice VBA) getUser() o getWinUser(). Ad esempio:
Codice: Seleziona tutto
SELECT * FROM Tabella WHERE NomeUtente=getWinUser();
oppure
Codice: Seleziona tutto
SELECT * FROM Tabella WHERE IDUtente=getUser();
Se vuoi impostare l'utente dalla tua form di login, basterà richiamare
Codice: Seleziona tutto
setUser (Me.Utente.Value)
alla chiusura (cioè al posto delle delete e insert che facevi nella IngressoLogin).

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Login ePassword

Postdi Francesco53 » 11/03/11 20:08

Grazie Alessandro.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: ACCESS Login ePassword

Postdi sarox85 » 22/07/11 21:33

Salve, mi sono imbattuto nel VS dialogo.
Io cercavo qualcosa di simile, ma prima di andare avanti Vi spiego il mio problema:

Al DB che sto creando dovranno accedere persone diverse con diversi permessi:

Es:
ADMIN vede e scrive la maschera da 1 a 10 (tutte)
USER 1 -> vede e scrive la maschera solo 4 e 7
USER 2 -> vede e scrive la maschera solo 8 e 7
USER 3 -> vede e scrive la maschera solo 5 e 9

DOMANDA: come imposto i permessi sulle maschere? come nascondo una e scopro l'altra?

PS: sono interessato al login con utente di windows...ho letto il modulo...ma il codice relativo da inserire nella form?
qualche consiglio?
sarox85
Newbie
 
Post: 8
Iscritto il: 22/07/11 21:20

Postdi archimede » 23/07/11 23:55

sarox85 ha scritto:come imposto i permessi sulle maschere?
Ci sono ovviamente diversi modi per farlo. Ad esempio puoi provare con qualcosa di questo genere nell'evento Open di ciascuna maschera:
Codice: Seleziona tutto
Private Sub Form_Open(Cancel As Integer)

Dim strUser As String

strUser = getWinUser()

If strUser = "pippo" Or strUser = "pluto" Then
    MsgBox "Non hai i permessi per aprire questa maschera."
    Cancel = True
End If

End Sub
sarox85 ha scritto:ho letto il modulo...ma il codice relativo da inserire nella form?
Eh?

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Login ePassword

Postdi sarox85 » 24/07/11 20:51

Salve Alessandro

Ottimo grazie, così facendo precludo tutte le maschere amministratore da quelle user...

ma come mi comporto con le maschere in comune?

Esempio:
due insegnati accedono alla stessa maschera corsi e dovranno vedere solo i propri corsi...


pensavo....se faccio assegnare un id_insegnateper ogni corso e li filtro in query? Troppo contorto?

Per il login:

si ho letto il modulo e credo di averlo capito; ma come dico in VB di confrontare l'utente di windows con la casella di testo "username" che si trova nella mi form di login?

assegno una variabile del tipo:

cboEmployee = getWinUser()

e lavoro con quella in un controllo "dlookup" confrontando i campi con una tabella?

Esempio:
Codice: Seleziona tutto
 
cboEmployee = getWinUser()

    If IsNull(Me.cboEmployee) Or Me.cboEmployee = "" Then
            MsgBox "You must enter a User Name.", vbOKOnly, "Required Data"
            Me.cboEmployee.SetFocus
        Exit Sub
    End If



o sto sto scrivendo eresie? :D


Grazie
sarox85
Newbie
 
Post: 8
Iscritto il: 22/07/11 21:20

Postdi archimede » 24/07/11 23:14

sarox85 ha scritto:se faccio assegnare un id_insegnateper ogni corso e li filtro in query? Troppo contorto?
Non direi. Ovviamente se i dati delle tabelle devono essere filtrati per utente avrai bisogno di un campo in ciascuna tabella che ti consenta di farlo. Quindi userai quel campo nella WHERE delle tue query.
sarox85 ha scritto:come dico in VB di confrontare l'utente di windows con la casella di testo "username" che si trova nella mi form di login?
Ma se usi l'utente Windows che te ne fai di una form di login? Ci pensa Windows a riconoscere l'utente, no?

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Login ePassword

Postdi sarox85 » 25/07/11 00:16

Non direi. Ovviamente se i dati delle tabelle devono essere filtrati per utente avrai bisogno di un campo in ciascuna tabella che ti consenta di farlo. Quindi userai quel campo nella WHERE delle tue query.


si, non credo che ci siano intoppi...

Ma se usi l'utente Windows che te ne fai di una form di login? Ci pensa Windows a riconoscere l'utente, no?


la tua domanda non è sbagliata...

in pratica: io sto implementando una rete con accesso per ogni user tramite chip card...sia insegnati che alunni....accedono al pc....e trovano i loro files ed aprendo il DB avranno le loro schede...con i relativi dati...senza chip card niente accesso...

come tu giustamente osservi non sarebbe necessario inserire il form login...ma secondo le nuove disposizione del governo vogliono una password sia sul PC che contiene dati sensibili, sia nel Software... perché secondo loro l'utente potrebbe andare in bagno senza bloccare il pc o togliere la card, lasciando i dati a portata di tutti... e non ultimo io mi vorrei lasciare una backdoor per me in caso di mal funzionamenti futuri della rete, quindi con una form posso sempre inserire una tabella utenti nascosta nel quale mettere tutti gli utenti che hanno accesso...ed in caso forzare se serve con una mio User e Password....

detto questo... sono aperto a qualunque consiglio se tu reputi che ci sia una strada migliore....
sarox85
Newbie
 
Post: 8
Iscritto il: 22/07/11 21:20

Re: ACCESS Login ePassword

Postdi Flash30005 » 25/07/11 00:40

Scusate se mi intrometto
(devo dire che ho letto molto di fretta il post e potrei aver preso una cantonata ma spero di no)
in tutte le occasioni finora capitate ho usato questo codice per risalire all'utente di windows
Codice: Seleziona tutto
utente = UCase(Environ("userName"))

a questo punto è sufficiente scansionare una tabella nascosta
e assegnare la maschera relativa una volta riscontrato l'utente
oppure senza tabella
determinare un vettore da 1 a 100 (o quanti ne occorrono)
poi vettore 1 è l'admin
da 2 a 30 gli insegnanti
da 31 a 100 per gli alunni
Con una case else...
aprire le maschere che vuoi

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Postdi archimede » 25/07/11 08:51

sarox85 ha scritto:l'utente potrebbe andare in bagno senza bloccare il pc o togliere la card, lasciando i dati a portata di tutti
Mi sfugge come una form di login personalizzata possa risolvere questo problema.
sarox85 ha scritto:mi vorrei lasciare una backdoor per me in caso di mal funzionamenti futuri della rete
La backdoor è collegarsi a Windows come Administrator.
sarox85 ha scritto:con una form posso sempre inserire una tabella utenti nascosta nel quale mettere tutti gli utenti che hanno accesso
Ok, ma se proprio devi farlo (e a quel punto avrai il problema di nascondere la tabella temo) allora tanto vale che lasci perdere l'utente di Windows.

Un'altra possibilità potrebbe essere mettere le tabelle condivise in un mdb su un server di rete e le tabelle "personali" in un mdb specifico per ogni utente. così non devi preoccuparti di filtrare i dati. Questo, ovviamente, supponendo che tu faccia lo split del tuo db, cosa che è raccomandabile in generale, ma ancor più nel tuo scenario direi.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: ACCESS Login ePassword

Postdi sarox85 » 25/07/11 10:05

si..mi hai convinto...
uso il login di windows e vediamo che succede...

interessante l'idea di dividere il DB... ma così facendo avrei un DB per alunni e un DB docenti...perchè fare un DB per ogni user è impossibile... sono in continuo cambiamento qui le persone...

ma a prescindere rimane la domanda...come dico all'avvio del DB di guardare l'utente di win? una macro?

Ed in ogni caso devo sempre confrontare il nomeutente con una tabella USER così da prendere l'ID_user e filtrare il resto del DB o no?
sarox85
Newbie
 
Post: 8
Iscritto il: 22/07/11 21:20

Postdi archimede » 25/07/11 10:16

sarox85 ha scritto:come dico all'avvio del DB di guardare l'utente di win?
Usi la funzione getWinUser di cui sopra, o fai come dice Flash (che è poi la stessa cosa).
sarox85 ha scritto:devo sempre confrontare il nomeutente con una tabella USER così da prendere l'ID_user e filtrare il resto del DB o no?
Non hai bisogno di un ID, nè di una tabella utenti: basta che nelle tabelle da filtrare metti Username (cioè un campo alfanumerico) e, nelle query, lo confronti con getWinUser.

Occhio però che se l'utente Administrator deve vedere i dati di tutti (cioè NON filtrati) la clausola WHERE deve gestirlo. Una roba tipo
Codice: Seleziona tutto
...WHERE (Tabella.Username=getWinUser OR gatWinUser='Administrator')...
HTH.

Alessandro

PS:
sono in continuo cambiamento qui le persone
Ma allora come pensi di gestire gli accessi alle form che dicevi sopra? Cambiano le persone ma gli utenti Windows sono sempre gli stessi?
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "ACCESS Login ePassword":


Chi c’è in linea

Visitano il forum: patel e 8 ospiti