Clé d'activation
Fadialama
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
Fadialama Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Fadialama Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
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.
A voir également:
- Clé d'activation
- Clé d'activation windows 10 - Guide
- Clé usb non détectée - Guide
- Clé activation office 2010 gratuit - Télécharger - Sécurité
- Formater clé usb - Guide
- Telecharger windows 10 gratuit avec clé d'activation - Accueil - Mise à jour
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, "ne marche pas": message d'erreur?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
ne serait-ce pas plutôt avec ceci que tu as un soucis?
le IF me semble inutile, et, de plus, ne fait probablement pas ce que tu imagines.
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:
Avec ça j'ai aussi une table qui contient des données et ça marche.
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 de
faire plutôt:
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
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
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".
ensuite: ajoute txt_keyactivation dans le texte publié par la msgbox, cela te permettra de vérifier si la valeur est bien passée.