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.
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
- Clé usb - Accueil - Stockage
2 réponses
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour, "ne marche pas": message d'erreur?
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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
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 ifEt 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.