Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Sécurité
Sécurité Le forum qui s'occupe de votre préoccupation de sécuriser l'accès à votre application Access, ainsi qu'à la sécurité des données.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/06/2008, 16h01   #1
Invité régulier
 
Inscription : mai 2008
Messages : 34
Détails du profil
Informations personnelles :
Âge : 40
Localisation : Suisse

Informations forums :
Inscription : mai 2008
Messages : 34
Points : 8
Points : 8
Par défaut Securite et protection formulaire

Bonjour

J'aurai s'il vous plaît besoin des connaissances de personnes connaissant l'art de coder pour me permettre de déterminer ce qui coince dans mon formulaire.

Explications:

Pour mon travail j'ai du créer une base de gestion de bons de travail, celle ci fonctionnant on m'a demandé de rajouter à cette dernière le suivi de la facturation.
Or j'ai deux commerciaux (superieur/subalterne) , mon problème vient du fait que je dois isoler les deux bases et que superieur doit pouvoir visualiser subalterne mais pas l'inverse...

Pour se faire j'ai tenté de reprendre les principes décrits par marot_r dans les deux posts qui sont relatifs à cette méthode.
Mais le résultat n'est pas concluant et comme je ne connais rien au code et que peu en Access, je ne vois pas mon erreur ( qui doit être gigantesque pour un habitué).

J'ai une table tblpassword qui contient trois champs ( clef primaire numeroauto, et nom et code de type texte) et qui reprend le nom de l'utilisateur et son mot de passe.

J'ai un formulaire formpassword qui contient mes deux champs de saisie nom et code ainsi qu'un bouton. Le premier champ me permet de sélectionner le nom ( zone de liste déroulante), le second de saisir le mot de passe.

Jusque là tout fonctionne, mais ça se corse.

J'ai mis comme évènement pour le bouton ouvrir un formulaire :

Mon problème est celui ci
lorsque je clique sur le bouton.

soit dans le cadre de la saisie d'un mot de passe bon ou mauvais j'ai un retour d'erreur "3078" et l'ouverture de mon formulaire protégé.
soit dans le cadre d'un champs mot de passe vide l'ouverture directe de mon formulaire protégé.

Pour une mise en place de sécurisation, c'est pour le moins ballot...

je vous donne mon code:

Citation:
Private Function MOTDEPASSEVALIDE(prmNOM As String, prmCODE As String) As Boolean
Dim result As Boolean: result = False

Dim CODE As Variant
'Trouve le mot de passe de l'utilisateur
CODE = DFirst("[code]", "CODE", "[NOM]" = """" & prmNOM & """")

If Not IsNull(CODE) Then

If CODE = prmCODE Then
result = True
Else
result = False
End If

Else
'L'utilisateur n'existe pas dans la table mot de passe.
result = False
End If

MOTDEPASSEVALIDE = result
End Function
Sachant que j'ai mis en gras le point de débogage renvoyé par access.

J'ai remplacé ClefUsager et MotDePasse par les noms de mes champs et si lors du débogage au début j'ai bien un renvoi des données inscrites dans les zones de mon formulaire le renvoi est "=vide" dès la ligne dimcode as variant sur le terme code...

Si quelqu'un a une idée pour me guider ce ne serait pas de refus ( je tourne autour de cela depuis ce matin).


Cordialement
Strig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 23h34   #2
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 941
Points : 6 283
Points : 6 283
Bonsoir

Essaie
Citation:
CODE = DFirst("[code]", "tblpassword", "NOM=""" & prmNOM & """")


"[code]" est le champ dont DFirst retourne la valeur
"tblpassword" est la table dans laquelle on fait la recherche
"NOM=""" & prmNOM & """" est le critère

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2008, 10h15   #3
Invité régulier
 
Inscription : mai 2008
Messages : 34
Détails du profil
Informations personnelles :
Âge : 40
Localisation : Suisse

Informations forums :
Inscription : mai 2008
Messages : 34
Points : 8
Points : 8
Bonjour et merci de m'apporter ton soutien une fois de plus LedZeppII ( ps c'est toujours la même p***** de base que le mois passé!!!).

J'ai essayé en entrant tblpassword au lieu de code comme indiqué et j'ai un changement :je suis passé en erreur 2001 => opération annulée.

Je précise que CODE ( avant le "=" et après Dim renvoient toujours CODE = vide???).


Quand je clique sur mon bouton en ayant entré le bon mdp ou un mauvais et j'ai le message d'erreur, je fais fin et ça ouvre mon formulaire protégé.

Soit je ne rentre rien dans les 2 champs ou dans le champs code et ça ouvre le formulaire sans difficulté...

Cordialement
Strig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2008, 16h35   #4
Invité régulier
 
Inscription : mai 2008
Messages : 34
Détails du profil
Informations personnelles :
Âge : 40
Localisation : Suisse

Informations forums :
Inscription : mai 2008
Messages : 34
Points : 8
Points : 8
Bonjour

Si je remplace
par

Code :
Dim tblpassword as variant
( n'importe quoi pour essayer quelque chose), alors ça ne fonctionne pas mieux (toujours les même erreurs) mais par contre à la ligne

Code :
 CODE = DFirst("[prmCODE]", "TBLPASSWORD", "[NOM]" = """" & prmNOM
,

CODE = prend bien cette fois la valeur de mon mot de passe inscrit dans le formulaire.

Quelqu'un a t'il une idée?

Cordialement
Strig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 16h15   #5
Invité régulier
 
Inscription : mai 2008
Messages : 34
Détails du profil
Informations personnelles :
Âge : 40
Localisation : Suisse

Informations forums :
Inscription : mai 2008
Messages : 34
Points : 8
Points : 8
Bonjour

bon après avoir retapé mon code ça fonctionne

Par contre si nom et code sont vides ça ouvre mon formulaire en direct le formulaire ne bloque l'entrée que si au moins un champs est rempli...

Et cela ne fonctionne que pour un seul enregistrement ( nom) le second n'est pas pris).
Strig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2008, 19h52   #6
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 941
Points : 6 283
Points : 6 283
Bonsoir,

Voici un exemple.

Table : TBLPASSWORD (Cle, Nom, Code)
Formulaire avec deux zones de texte (txtNom, txtCode) et un bouton (cmdOK)
Code vba :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub cmdOK_Click()
MsgBox MOTDEPASSEVALIDE(Nz(Me.txtNom), Nz(Me.txtCode))
End Sub
 
 
Private Function MOTDEPASSEVALIDE(prmNOM As String, prmCODE As String) As Boolean
Dim Cnt As Long
'Trouve le mot de passe de l'utilisateur
Cnt = DCount("*", "TBLPASSWORD", "Nom=""" & prmNOM & """ AND Code=""" & prmCODE & """")
 
MOTDEPASSEVALIDE = (Cnt > 0)
End Function
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 11h32   #7
Invité régulier
 
Inscription : mai 2008
Messages : 34
Détails du profil
Informations personnelles :
Âge : 40
Localisation : Suisse

Informations forums :
Inscription : mai 2008
Messages : 34
Points : 8
Points : 8
Bonjour

ça fonctionne très bien par contre le code suivant me renvoie une boite de message vrai/ faux

Code :
1
2
3
Private Sub cmdOK_Click()
MsgBox MOTDEPASSEVALIDE(Nz(Me.txtNom), Nz(Me.txtCode))
End Sub
dois je remplacer ce code par l'ouverture de mon formulaire , et mettre ce code dans la propriété après màj de txtCode car je veux que cmdOK ouvre mon formulaire FORMPWDMJA ? ou suis je complètement à l'ouest???

Cordialement
Strig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2008, 20h41   #8
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 941
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 941
Points : 6 283
Points : 6 283
Bonjour,

C'était juste un exemple pour montrer le résultat de la fonction MOTDEPASSEVALIDE.

Pour ouvrir ton formulaire tu fais
Code vb :
If MOTDEPASSEVALIDE(Nz(Me.txtNom), Nz(Me.txtCode)) Then DoCmd.OpenForm "Le Nom Du Formulaire"
Tu mets ce code dans l'événement de ton choix.
Ça peut être un le "Clic" d'un bouton ou l'événement "Sur Sortie" de txtCode.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/07/2008, 15h28   #9
Invité régulier
 
Inscription : mai 2008
Messages : 34
Détails du profil
Informations personnelles :
Âge : 40
Localisation : Suisse

Informations forums :
Inscription : mai 2008
Messages : 34
Points : 8
Points : 8



Merci beaucoup ça fonctionne!!!

Et dire que ça semble si facile quand on a la solution.

Il ne me reste plus qu'a solutionner mes problèmes de print et de coche ( objet
d'un autre post ) et toute cette affaire va rouler.

Encore merci pour l'aide fournie

Cordialement
Strig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h19.


 
 
 
 
Partenaires

Hébergement Web