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 12/10/2011, 12h52   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
Par défaut Création automatique d'un login unique par concaténation

Bonjour
Je souhaite automatiser la création d'un login unique par concaténation de la l'initiale du prénom + nom complet + "1".
Mais si ce login existe déjà le "1" et remplacé par "2" et ainsi de suite.
Je m'explique :
DURAND Philippe ==> pdurand1
DURAND Patrick ==> pdurand2


un peu plus ...
si le prénom est composé du type DURAND jean-Pierre il faudrait avoir jpdurand1

Merci de vos informations précieuses
Stéphane
stefane26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 21h15   #2
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
J'ai résolu une partie de mon problème :
j'ai réussi à concaténer mes champs [prenom] & [nom] tronqués avec la (les) première(s) lettre(s) de(s) prénom(s) ==>çà fonctionne aussi avec les prénoms composés.

Je suis toujours bloqué avec la possibilité d'avoir des "homonimes", et je cherche la solution pour éviter les doublons.
Le login devient [première(s) letrtre(s) du prénom]&[nom]&"un numéro incrémentiel" ==> mais je ne sais pas comment incrémenter sur ce doublon

merci
stefane26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/10/2011, 21h55   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
Pour être plus complet, je vous joins les codes (ou fonction) réalisant mes premiers désirs :


mettre en majuscule les initiales du prénom (même composé) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function MiseEnMajuscule(Chaine As String) As String
Dim nCar As Integer  'Compteur (position dans la chaine à traiter)
Chaine = Trim$(Chaine) 'Récupère la chaîne sans les espaces facultatifs
'Traitement spécifique sur le premier caractère
MiseEnMajuscule = UCase$(Left(Chaine, 1))
'Début de la boucle sur les autres caractères
For nCar = 2 To Len(Chaine)
'Teste le caractère précédent (" " ou "-")
If (Mid$(Chaine, nCar - 1, 1) = " ") Or (Mid$(Chaine, nCar - 1, 1) = "-") Then
'Si c'est vrai, mettre en majuscule le caractère courant
MiseEnMajuscule = MiseEnMajuscule & UCase$(Mid(Chaine, nCar, 1))
Else
'Si c'est faux, mettre en minuscule le caractère courant
MiseEnMajuscule = MiseEnMajuscule & LCase$(Mid(Chaine, nCar, 1))
End If
'Fin de la boucle sur les caractères
Next
End Function
Concaténer les initiales du prénom (même composé) avec le nom :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Function InitialePrenom(Chaine As String) As String
Dim nCar As Integer  'Compteur (position dans la chaine à traiter)
Chaine = Trim$(Chaine) 'Récupère la chaîne sans les espaces facultatifs
'Traitement spécifique sur le premier caractère
InitialePrenom = Left$(Chaine, 1)
'Début de la boucle sur les autres caractères
For nCar = 2 To Len(Chaine)
'Teste le caractère précédent (" " ou "-")
If (Mid$(Chaine, nCar - 1, 1) = " ") Or (Mid$(Chaine, nCar - 1, 1) = "-") Then
'Si c'est vrai,récupére le caractère courant
InitialePrenom = InitialePrenom & Mid$(Chaine, nCar, 1)
''Else
'Si c'est faux, récupére le caractère courant
''InitialePrenom = InitialePrenom & LCase$(Mid(Chaine, nCar, 1))
End If
'Fin de la boucle sur les caractères
Next
End Function
Ces fonctons sont appelées dans un code comme celui-ci :
Code :
1
2
3
4
5
6
Private Sub Prenom_utilisateur_LostFocus()
If Len(Me.Prenom_utilisateur) <> 0 Then
Me.Prenom_utilisateur = MiseEnMajuscule(Me.Prenom_utilisateur)
Me.Utilisateur = StrConv(InitialePrenom(Me.Prenom_utilisateur), vbLowerCase) & StrConv(Me.Nom_utilisateur, vbLowerCase)
End If
End Sub
Mais je n'ai toujours ma solution pour éviter le doublon
stefane26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 03h51   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il y a plusieurs solutions pour éviter les doublons en voici deux parmi d'autres.

1 - Indexé le champ qui contient cette donnée de manière à refuser les doublons (c'est dans les propriétés du champ lorsque ta table est en mode création). Il y aura un message, mais pas top au niveau visu.


2 - Faire un test avec la fonction de domaine DLookup, pour chercher si celui-ci existe déjà.

Voilà quelques pistes, et de nombreuses discussions sur le forum (coté VBA Access) parlent des doublons.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 13h17   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
Bonjour
désolé pour ma réponse tardive.

Merci pour cette première réponse, mais il me semble que le test dlookup ne marcherai pour 2 doublons maxi
stefane26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2011, 15h24   #6
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 945
Points : 30 945
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Re

Citation:
Envoyé par stefane26 Voir le message
Merci pour cette première réponse, mais il me semble que le test dlookup ne marcherai pour 2 doublons maxi
Faux le DLookup te permettra de chercher une occurrence, s'il y en a pas, tu peux ajouter une donnée, s'il y en a une tu incrémente ta numérotation et tu ajoutes ta donnée.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 00h27   #7
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
salut Philippe et bienvenu stefane26,

ou avec DCount() dans le genre:
Code :
Me.Utilisateur = Me.Utilisateur & (DCount("*","latable","login like '" & Me.Utilisateur & "?'")+1)
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 11h31   #8
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
Bonjour et merci pour cette réponse.
Mais, je suis quelqu'un de compliqué
Imaginons que nous ayons 2 login identiques => le résultat sera par exemple :

sbc1
sbc2

Maintenant, imaginons que le premier login (sbc1) disparaisse : un nouveau login identique deviendrait :

sbc3

alors que j'aimerais que le chiffre reprenne le numero manquant soit : sbc1

MErci
stefane26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 23h55   #9
Expert Confirmé
 
Avatar de vodiem
 
Homme Diem VO
Vivre
Inscription : avril 2006
Messages : 2 644
Détails du profil
Informations personnelles :
Nom : Homme Diem VO
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Vivre
Secteur : Conseil

Informations forums :
Inscription : avril 2006
Messages : 2 644
Points : 3 895
Points : 3 895
he bien comme te l'a dit Philippe, un truc du genre:
Code :
1
2
3
i=1
while not isnull(dlookup("login","latable","login like '" & Me.Utilisateur & i & "'")):i=i+1:wend
Me.Utilisateur = Me.Utilisateur & i
vodiem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2011, 19h28   #10
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 43

Informations forums :
Inscription : juin 2007
Messages : 70
Points : 12
Points : 12
Merci Vodiem
Cela fonctionne parfaitement
stefane26 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 04h40.


 
 
 
 
Partenaires

Hébergement Web