Clé d'activation
Fadialama
Messages postés
13
Statut
Membre
-
Fadialama Messages postés 13 Statut Membre -
Fadialama Messages postés 13 Statut Membre -
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:
Suis le formulaire ActivationLicence:
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.
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.
2 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, "ne marche pas": message d'erreur?-
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".
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
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.-
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. -
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 deIf 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 -
-
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 -
-