Clé d'activation

Fermé
Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020 - Modifié le 29 juin 2018 à 22:31
Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020 - 7 juil. 2018 à 22:52
Bonjour , j'ai une base de donnée (access 2016) que je souhaite mettre une clé d'activation sur dessus. J'ai déjà un code vba qui permet de bloquer la BD à une heure définie et ça marche well (j'ai utilisé un compteur d'heure). Pour la clé d'activation j'ai utilisé un code avec (Dlookup combiné avec une requête qui supprime les enregistrements dans les tables) pour l'idée que la meme BD soit réactivée à chaque expiration d'heure par une clé sans l'a changée. Mais ce dernier ne marche pas, je souhaite vraiment votre aide pour que ça marche.
Voici le code:
Sous le formulaire Evaluation:



Private [/contents/446-fichier-sub Sub] Form_Load()
If Me!Minutes > 0 Then
MsgBox "Il vous reste " & 135 - Me!Heures & Space(1) & " " & "heures" & _
" " & " d 'utilisation.", vbInformation, "Information"
DoCmd.OpenForm "FormConnexion", acNormal
Else
MsgBox "La période d'utilisation de cette" & _
Chr(13) & "application est de 135 heures.", vbInformation, "Information"
DoCmd.OpenForm "FormConnexion", acNormal
End If
End Sub

Private Sub Form_Timer()
Me![Secondes] = Me![Secondes] + 1
Me![Minutes] = Int(Me![Secondes] / 60)
Me![Heures] = Int(Me![Minutes] / 60)
DoCmd.Save acForm, Me.Name
If Me![Heures] >= 135 Then
MsgBox "La période d'utilisation est expirée." & _
Chr(13) & "Veuillez contacter au 0000000 ou abc@gmail.com" & _
Chr(13) & "pour une éventuelle mise en marche.", vbCritical, "Information"
DoCmd.Close acForm, Me.Name
DoCmd.Close acForm, "FormConnexion", acNormal
DoCmd.OpenForm "ActivationLicence", acNormal
End If
End Sub

Suis le formulaire ActivationLicence:
Dim controlkey As String

Private Sub bt_activer_Click()
If IsNull(DLookup("keyactivation", "registre_key", "keyactivation='" & txt_keyactivation & "'")) Then 'Qui verifie si le textbox est vide ou si la clé saisie existe dans la table registre_key
'MsgBox "La clé que vous avez entré(e) n'est pas valide ou a été déjà utilisée. Veuillez entrer une clé valide ou contactez au 0000000 ou abc@gmail.com", vbInformation, "Données manquantes"
txt_keyactivation = Clear
txt_keyactivation.SetFocus
Exit Sub
End If
controlkey = DLookup("keyactivation", "registre_key", "keyactivation='" & txt_keyactivation & "'")
If controlkey = " & txt_keyactivation & " Then
CurrentDb.Execute "DELETE * FROM [Evaluation];" 'Qui supprime les enregistrements dans table Evaluation
CurrentDb.Execute "DELETE keyactivation FROM [registre_key] where keyactivation=[" & txt_keyactivation & "];" 'qui supprime la meme clé saisie par user dans la table registre_key 
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Evaluation", acNormal 'Qui ouvre ce formulaire pourque le compteur recommence
DoCmd.OpenForm "menuprincipalmokoaccdb", acNormal
Else
MsgBox "La clé que vous avez entré(e) n'est pas valide ou a été déjà utilisée. Veuillez entrer une clé valide ou contactez au 0000000 ou abc@gmail.com", vbInformation, "Données manquantes"
txt_keyactivation = Clear
txt_keyactivation.SetFocus
End If
End Sub


J'ai crée deux tables:
-Évaluation(Secondes[numérique], Minutes [numérique], Heures[numérique]).
-Registre_key(keyactivation[Texte cours]) dans laquelle les clés seront insérées manuellement.
Puis j'ai créé deux formulaires :
-Evaluation créé a travers la table Evaluation et affecté comme celui de démarrage.
-ActivationLicence créé avec un textbox nommé txt_keyactivation et un bouton activer.
A voir également:

2 réponses

yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
29 juin 2018 à 21:32
bonjour, "ne marche pas": message d'erreur?
1
Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020
Modifié le 30 juin 2018 à 01:31
Non, meme si j'insère une clé dans le textbox(txt_keyactivation) qui est déjà enregistrée dans la table registre_key et qui devrait activer normalement la bd ne prend pas, ça renvoi le message :
If IsNull(DLookup("keyactivation", "registre_key", "keyactivation='" & txt_keyactivation & "'")) Then 'Qui verifie si le textbox est vide ou si la clé saisie existe dans la table registre_key
Msgbox "La clé que vous avez entré(e) n'est pas valide ou a été déjà utilisée. Veuillez entrer une clé valide ou contactez au 0000000 ou abc@gmail.com", vbInformation, "Données manquantes"
txt_keyactivation = Clear
txt_keyactivation.SetFocus
Exit Sub
End if

Et l'idée est que ce message se déclenche si et seulement si la clé n'existe pas dans la table "registre_key".
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481 > Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020
30 juin 2018 à 10:18
avant toute chose: as-tu "option explicit" en début de module? si non, merci de l'ajouter, et de tester à nouveau.
ensuite: ajoute txt_keyactivation dans le texte publié par la msgbox, cela te permettra de vérifier si la valeur est bien passée.
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481
Modifié le 30 juin 2018 à 10:31
ne serait-ce pas plutôt avec ceci que tu as un soucis?
controlkey = DLookup("keyactivation", "registre_key", "keyactivation='" & txt_keyactivation & "'")
If controlkey = " & txt_keyactivation & " Then

le IF me semble inutile, et, de plus, ne fait probablement pas ce que tu imagines.
1
Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020
30 juin 2018 à 15:18
Peut être, en faite je suis pas trop bien en vba, j'ai fait une analyse d'un code qui m'a permit de mettre une fenêtre d'authentification à ma BD et je me suis référé de ça pour voir si ça allait marché.
Voici ce code:
Private Sub Bt_Ok_Click()
If IsNull(DLookup("Login", "Utilisateur", "Login='" & txt_Login & "'")) Then
MsgBox "Votre nom d'utilisateur est incorrect", vbInformation, "verification login"
txt_Login = Clear
txt_Login.SetFocus
Exit Sub
End If
If IsNull(DLookup("IdUser", "Utilisateur", "MotdPasse='" & Txt_Passwd & "'")) Then
MsgBox "Votre mot de passe incorrect", vbInformation, "verification mot de passe"
Txt_Passwd = Clear
Txt_Passwd.SetFocus
Exit Sub
End If
typeuser = DLookup("type", "Utilisateur", "Login='" & txt_Login & "'")
If typeuser = "Admin" Then
DoCmd.OpenForm "menuprincipalmokoaccdb", acNormal
DoCmd.Close acForm, Me.Name
Else
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Menuprincipal", acNormal
Forms![Menuprincipal]!bt_ListeAdmin.Enabled = False
End If
End Sub

Avec ça j'ai aussi une table qui contient des données et ça marche.
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481 > Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020
30 juin 2018 à 15:43
il vaut mieux vérifier en même temps le login et le mot de passe. il est préférable de ne pas indiquer à l'utilisateur si c'est le login ou si c'est le mot de passe qui est incorrect, sinon cela l'aide à tricher. de plus, comme tu fais, tu ne vérifies pas que le mot de passe correspond au login.
donc, suggestion:
au lieu de
If IsNull(DLookup("Login", "Utilisateur", "Login='" & txt_Login & "'")) Then
MsgBox "Votre nom d'utilisateur est incorrect", vbInformation, "verification login"
txt_Login = Clear
txt_Login.SetFocus
Exit Sub
End If
If IsNull(DLookup("IdUser", "Utilisateur", "MotdPasse='" & Txt_Passwd & "'")) Then
MsgBox "Votre mot de passe incorrect", vbInformation, "verification mot de passe"
Txt_Passwd = Clear
Txt_Passwd.SetFocus
Exit Sub
End If

faire plutôt:
If IsNull(DLookup("Login", "Utilisateur", "Login='" & txt_Login & "'" _
       & " and MotdPasse='" & Txt_Passwd & "'")) Then
MsgBox "Votre nom d'utilisateur ou votre mot de passe est incorrect", vbInformation, "verification login"
txt_Login = Clear
Txt_Passwd = Clear
txt_Login.SetFocus
Exit Sub
End If
0
Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020
30 juin 2018 à 16:03
Ok, mais pour la clé d'activation j'ai ajouté "option explicit" mais ça ne marche pas toujours.
0
Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020
30 juin 2018 à 16:35
Je viens d'utiliser ce code mais qui renvoi aussi une erreur '94' d'utilisation incorrect d' Isnull
Option Compare Database
Dim controlkey As String

Private Sub bt_activer_Click()
If IsNull(txt_keyactivation) Or txt_keyactivation.Value = "" Then
MsgBox "Colonne vide, entrer une clé valide sinon, contactez au 0000000 ou abc@gmail.com", vbInformation, "Information"
txt_keyactivation = Clear
txt_keyactivation.SetFocus
Exit Sub
End If
controlkey = DLookup("keyactivation", "registre_key", "keyactivation='" & txt_keyactivation & "'")
If controlkey = Me.txt_keyactivation.Value Then
CurrentDb.Execute "DELETE * FROM [Evaluation];"
CurrentDb.Execute "DELETE keyactivation FROM [registre_key] where keyactivation=[" & txt_keyactivation & "];"
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "Evaluation", acNormal
DoCmd.OpenForm "menuprincipal", acNormal
Else
MsgBox "La clé que vous avez entré(e) n'est pas valide ou a été déjà utilisée. Veuillez entrer une clé valide ou contactez au 0000000 ou abc@gmail.com", vbInformation, "Information"
txt_keyactivation = Clear
txt_keyactivation.SetFocus
End If
End Sub
0
yg_be Messages postés 22783 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 13 mai 2024 1 481 > Fadialama Messages postés 12 Date d'inscription vendredi 29 juin 2018 Statut Membre Dernière intervention 2 janvier 2020
30 juin 2018 à 16:37
as-tu fais quelque-chose suite à mes suggestions en #3 et en #4?
peux-tu montrer le code adapté?
0