Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
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 17/10/2011, 13h13   #1
Débutant
 
Inscription : octobre 2004
Messages : 432
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 432
Points : 93
Points : 93
Par défaut Adapation Function DateExpirationApplication()

Bonjour,

J'aimerais pouvoir modifier la date d'expiration de ma base tous les 6 mois.
Le problème avec le code suivant, c'est que chaque 6 mois je dois réinstaller une copie sur le pc de chaques utilisateurs.
Y aurait-il un moyen de rechercher la DateSerial dans une table ?

Code :
1
2
3
4
5
6
Public Function DateExpirationApplication()
If Date >= DateSerial(2012, 6, 1) Then
MsgBox "The expiry date of CTX has passed !", vbExclamation, "CTX"
DoCmd.QUIT
End If
End Function
Merci
lucas-18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 14h00   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 564
Points : 7 564
Oui il te suffit de crée une table de paramètre dans ta base dorsale et d'y mettre la date que tu veux puis dans ton code.

Code :
1
2
3
4
5
6
7
8
Public Function DateExpirationApplication()
 
   If Date >= DFirst("ChampDate","NomTaTable") Then
       MsgBox "The expiry date of CTX has passed !", vbExclamation, "CTX"
      DoCmd.QUIT
   End If
 
End Function
Évidement avec cette solution simpliste toutes tes bases frontales expirent en même temps et un petit malin pourrait aller changer la date dans la table de paramètre.

Tu pourrais l'améliorer en 'encryptant' la date (qui est en réalité un réel double) et ajouter une notion d'identification (ex : code d'utilisateur, numéro de machine, numéro de clef client) si plusieurs personnes partagent une même dosrale et que tu ne veux pas que toutes expirent en même temps.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 14h08   #3
Débutant
 
Inscription : octobre 2004
Messages : 432
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 432
Points : 93
Points : 93
Citation:
Envoyé par marot_r Voir le message
Oui il te suffit de crée une table de paramètre dans ta base dorsale et d'y mettre la date que tu veux puis dans ton code.

Code :
1
2
3
4
5
6
7
8
Public Function DateExpirationApplication()
 
   If Date >= DFirst("ChampDate","NomTaTable") Then
       MsgBox "The expiry date of CTX has passed !", vbExclamation, "CTX"
      DoCmd.QUIT
   End If
 
End Function
Évidement avec cette solution simpliste toutes tes bases frontales expirent en même temps et un petit malin pourrait aller changer la date dans la table de paramètre.

Tu pourrais l'améliorer en 'encryptant' la date (qui est en réalité un réel double) et ajouter une notion d'identification (ex : code d'utilisateur, numéro de machine, numéro de clef client) si plusieurs personnes partagent une même dosrale et que tu ne veux pas que toutes expirent en même temps.

A+
En fait je veux que toutes expirent en même temps mais c'est vrai que quelqu'un pourrait aller changer les données dans la table.
Je ne comprends pas très bien ta notion d'identification. Comment dois-je m'y prendre concrètement ?
lucas-18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 15h10   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 564
Points : 7 564
C'est peut être le DFirst() qui pose un problème. As-tu créer une table pour enregistrer ta date d'expiration ? Y as-tu saisie une date d'expiration ?

Pour l'identification si tu veux que toutes expirent en même temps tu n'en as pas besoin mais il suffirait d'ajouter un champ à ta table de paramêtre (ex : CodeUtilisateur) et de chercher la date associée à l'identifiant choisi.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 15h22   #5
Débutant
 
Inscription : octobre 2004
Messages : 432
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 432
Points : 93
Points : 93
Citation:
Envoyé par marot_r Voir le message
C'est peut être le DFirst() qui pose un problème. As-tu créer une table pour enregistrer ta date d'expiration ? Y as-tu saisie une date d'expiration ?

Pour l'identification si tu veux que toutes expirent en même temps tu n'en as pas besoin mais il suffirait d'ajouter un champ à ta table de paramêtre (ex : CodeUtilisateur) et de chercher la date associée à l'identifiant choisi.

A+
Je me suis trompé, ton code marche nickel
Ce qui mé dérange, c'est qu'il y a possibilité de modifier en entrant dans la table ...
lucas-18 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 17h28   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 564
Points : 7 564
Oui c'est un problème récurent avec Access.

Comme je te l'ai suggéré tu pourrais 'encrypter' la date. Une méthode très simple est d'utiliser une fonction XOR() sur ta date.

Code :
1
2
3
private function EncrypterDecrypter(valeur as string) as string
    EncrypterDecrypter=valeur xor "ABCDEFGHIJ" 'Definir une clef d'encryprtage de 10 caractères pour une sécurité maximum et une simplicté de code.
end function
exemple de code exploitant cela

Code :
1
2
3
4
5
6
7
8
9
10
dim valeurEncryptee as string
valeurEncryptee=EncrypterDecrypter(format(dateExpiration,"yyyy\-mm\-dd"))
dim valeurDecryptee as string
valeurDecryptee=EncrypterDecrypter(valeurEncryptee) 
dateTestPourExpiration as date
dateTestPourExpiration=CDate(valeurDecryptee)
 
if date>=dateTestPourExpiration then
    'Périmée
end if

Donc a lieu de stocker une date en claire tu stockes la valeur encryptée dans un champ texte et tu t'en sert pour contrôler la date d'expiration.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r 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 11h33.


 
 
 
 
Partenaires

Hébergement Web