arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006
-
21 juin 2006 à 12:18
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006
-
30 juin 2006 à 15:11
Bonjour,
Je débute sous ACCES, je me suis créé une base de données dans laquelle je gère des dates et j'aimerai qu'une MsgBox s'affiche, à l'ouverture de ma base de donnée, pour m'avertir un mois avant l'arrivée d'une échéance ou d'un événement (comme sous outlook par ex ).
pour être clair voici un ex de ce q je voudrai :
dans une table , j'ai un champ "Nom" Monsieur X ... et un autre champ "date changement " 01/12/06
j'aimerai qu' à l'ouverture de ma base de donnée, , qu'une MsgBox s'affiche, un mois avant la date précisée,par ex au 01/11/06, et me signale "Attention Changement"
j'ai réussi à créer la MsgBox grace à un outil trouvé sur le site mais je ne parviens pas à trouver les codes pour paramétrer les conditions d'ouverture de la MsgBox.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 21 juin 2006 à 13:10
Bonjour,
MsgBox DateAdd("m", 1, Date) renvoie le "21/07/2006".
Il faut testé dans le select...from... le ou les champs qui correspondent à "21/07/2006".
Cela sous-entend, que la base doit être ouverte (via taches planifiées) tous les jours.
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 21 juin 2006 à 14:02
merci de vs intéresser à mon pauvre sort !
vous allez vite comprendre mon niveau car je ne comprend pas ce que vous m'expliquez
c'est quoi le select...from ... ? ca se situe où?
en fait j'ai créé une msgbox nommé "Alerte Changement", elle existe sous forme de macro dans ma base de données , quand je dble cliq dessus elle s'ouvre et ca marche mais jusque là c'est simple mais sans intérêt vous l'avait bien compris.
Donc quand je veux la modifier, s'ouvre une fenetre et à gauche j'ai une colonne "condition " et on me demande d'entrer une expression conditionnelle dans cette colonne et c 'est là que je bloque car comment lui indiquer que la MsgBox doit s'ouvrir un mois avant la date "jj/mm/aaaa" du champ"x "de la table "Y". il doit surement s'agir d'une formule du type If Date...??? Then MsgBox "Alerte Changement" mais c'est à ce niveau là que je patauge.
sinon j'ai aussi converti la macro MsgBox en VisualBasic donc peut etre existe il un moyen plus simple en passant par là !
autre info il est prévu que la base de donnée soit utilisée tous les jours donc cela ne devrait pas poser de probleme, la macro pourra s'ouvrir lors du démarrage.
domsig
Messages postés125Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention11 mai 2010 21 juin 2006 à 14:48
bonjour
il faut passer par les macros VB sinon ça va être galère...
1°) il faut créer une macro qui s'appelle auto_open (ou auto_ouvrir, je sais jamais) dans laquelle tu fais une requête qui cherche si dans un mois, il doit y avoir un changement, quelque chose du style :
dim rst as recordset
set rst=currentdb.openrecordset("select * from [nom de la table] where date_changement = """ & DateAdd("m", 1, Date) & """") (quelque chose comme ça)
if rst.recordcount>0 then
msgbox("changement prévu")
end if
voilà voilà
bon courage
Vous n’avez pas trouvé la réponse que vous recherchez ?
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 21 juin 2006 à 15:47
g essayé comme domsig m'a dit , je n'ai aucun message d'erreur mais rien n'apparait même en changeant la date du systeme pour tester
donc g essayé de créer une macro AutoExec et un module avec la fonction suivante mais ca marche pas non plus !
Function IncrementeOuverture()
Dim rst As RecordsetSet rst CurrentDb.OpenRecordset("select * from [evolution] where Date_Chgt_Palier """ & DateAdd("m", 1, Date) & """")
If rst.RecordCount > 0 Then
msgbox ("Alerte")
End If
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 21 juin 2006 à 16:54
Re,
Attention au format de la date (sql ou access).
Le contenu visuel d'un recordset n'est pas le même que le contenu réel de ce recordset.
Dans le select, il faut protéger par #.
ex:
'Conversion de la date saisie (jj/mm/aaaa) au format date SQL (mm/jj/aaaa)
SQL_saisie = "#" & Mid(Saisie , 4, 2) & "/" & Mid(Saisie , 1, 2) & "/" & Mid(Saisie , 7, 4) & "#"
MaTable = "JOB"
MaRequete = "SELECT JOBID,RON,AMJ FROM " & MaTable
MaRequete = MaRequete & " WHERE AMJ > " & SQL_saisie & " ORDER BY AMJ"
'MaRequete = SELECT TOP 10 permet de lire les 10 premiers recordsets
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 21 juin 2006 à 17:18
c'est trop compliqué pour moi, merci quand même !
mais là je suis largué c'est pas pour un débutant comme moi
il me marque lors dernière tentative "une erreur est survenue lors de la compilation de cette fonction . le module Vb comporte une erreur de syntaxe. vérifiez le code puis recompilez-le"
et l'erreur se situe dans la ligne ci dessus indiquée en rouge.
sinon il me reste plus qu' à ouvrir chaque début de mois, la table pour m'assurer d'un éventuel chgt de palier
domsig
Messages postés125Date d'inscriptionlundi 6 septembre 2004StatutMembreDernière intervention11 mai 2010 22 juin 2006 à 09:58
Re.
Je comprends pas bien pourquoi tu as fait une fonction plutôt qu'une procédure ? enfin c'est peut-être pas la raison.
Juste après ton dim rst as recordset, ajoute msgbox("blabla"), enregistre et relance ton appli. Est-ce que tu vois le message ?
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 22 juin 2006 à 14:39
g essayé de marquer msgbox ("alerte") mais ca me mets une erreur de compilation : soit attendu : fin d'instruction. soit erreur de syntaxe !
Function IncrementeOuverture()
Dim rst As Recordset MsgBox ("Alerte")Set rst CurrentDb.OpenRecordset("select * from [evolution] where Date_Chgt_Palier """ & DateAdd("m", 1, Date) & """")
If rst.RecordCount > 0 Then
msgbox ("Alerte")
End If
pour ce qui est de la fonction plutot que de la procédure, j'en sais rien non plus car je n'y connais rien tout simplement, j'apprends sur le tas en bidouillant. c surement ca le pb !!! et qd j'écris fonction, ca veut peut etre dire pour vous procédure...mais comme c'est marqué fonction IncrementeOuverture
explique moi comment je dois faire pour créer une macro "auto_ouvrir" ou auto_open et y mettre la requete que tu m'as écrite.
merci bcp
mais si c tro compliqué vous prenez pas la tete
erefdatacomputing
Messages postés165Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention24 avril 2018 22 juin 2006 à 15:04
Salut !!!
sous VB6 il existe une fonction qui s'appelle: DateDiff
et ça donne cela:
If DateDiff("d", Date, a) = -30 Then MsgBox ("Alerte")
'd' pour 'day' le nombre de jours d'écart entre les 2 dates (içi 30)
('m' pour 'mounth' , 'y' pour year et d'autres paramètres)
'a' est une string contenant la date à tester que tu as dans ta table ACCESS
'Date' est la date du jour actuelle.
sous VB ça marche, mais 2 inconvénients:
- les alertes ne se ferront que sur le jour précis (dès le lendemain, il n'y aura plus d'alerte).
- 30 jours est une moyenne, car il y a des mois à 31 jours, sans parler de février qui change les donnés du problème, donc il y a comme une imprécision.
PS ça fonctionne aussi avec un littéral de date,(le fameux"#" & Mid(Saisie , 4, 2) & "/" & Mid(Saisie , 1, 2) & "/" & Mid(Saisie , 7, 4) & "#" de JMO)mais attention aux paramètres régionaux mémorisés dans l'ordinateur
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 22 juin 2006 à 15:48
salut !
merci pour les infos, j'avais pas pensé à datediff pourtant je l'ai utilisé pour autre chose déjà
a priori g introduit cette ligne dans une procédure évenementielle de mon formulaire ou figure le champ "date chgt palier" sur activation. car c à l'ouverture de ce formulaire q je voudrais qq'apparaisse la MSgBox pour m'avertir d'un chgt.
mais rien ne se passe !
je sais pa si comme ca q je dois faire car à force d'essayer plusieurs trucs trouvés sur le net je me mélange les pinceaux !
en fait g remplacé "a" par le nom du champ de mon formulaire, je sais pa si c ca ? c koi un string? eh oui je sais j'suis nul c pas pour rien que j'suis dans la section débutant !!!
voici ce q j'ai écris :
Private Sub Form_Current()
If DateDiff("d", Date, Date_Chgt_Palier) = -30 Then msgbox ("Alerte")
End Sub
à mon avis c pas ca à cause du fameux string ("a" )
et certains m'ont parlé d'une expression comme
If Date().... between.... and.... Then msgbox.... ms g pas réussi non plus
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 22 juin 2006 à 17:59
Bonjour,
N'hésite à mettre des
Msgbox Date ou MsgBox "vérif1: " & Date
MsgBox Date_Chgt_Palier
ou
MsgBox Date &vbCrLf& Date_Chgt_Palier
et d'autres MsgBox avant (et après) des lignes dont tu doutes de l'efficacité.
Quand le script sera ok, il te suffira de les supprimer.
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 23 juin 2006 à 10:05
merci jean marc !mais je vais laisser tomber cete histoire de MsgBox , car même si j'peux comprendre vite (parfois) qd on m'explique longtemps et tout en détails, là j'suis largué
mais c surtout que si au final l'alerte ne s'affiche que le jour même, et plus le lendemain com expliqué plus haut, cela ne va pas etre exploitable !
merci quand même d'avoir essayé de m'expliquer.
erefdatacomputing
Messages postés165Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention24 avril 2018 23 juin 2006 à 11:26
Salut !!
Essaye ça avant de tourner complètement la page:
If DateDiff("d", Date, a) >= -30 Then MsgBox ("Alerte")
Comme cela, les alertes se ferront dès que l'écart entre la date actuelle et la date d'échéance sera <= à 30 jours , mais il reste toujours une certaine imprécision.(mois de 31 jours,...)
Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 23 juin 2006 à 12:37
j'ai essayé et maintenant la msgbox s'affiche à chaque ouverture du formulaire même si je change les dates et qu'aucun changement n'est prévu pour les mois à venir, donc le paramétrage n'est pas encore bon, mais sans doute q'on en approche
par contre peux t me confirmer qu'il faut bien changer le "a" de
If DateDiff("d", Date, a) >= -30 Then MsgBox ("Alerte")
par le nom du champ du formulaire où figure les dates , voici ce que j'ai écris et j'ai un gros doute
Private Sub Form_Current()
If DateDiff("d", Date, Date_Chgt_Palier) >= -30 Then msgbox ("Alerte Changement de Palier")
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 23 juin 2006 à 14:21
salut !!!
"date_chgt_palier" c'est un champ date, tout ce qu'il y a de plus normal ex : "01/07/2006" pour 1er juillet 2006 !
il est relié aux données source d'une table mais a priori ya aucun probleme avec ca
sinon pour mes tests j'ai change toute les dates pour plus qu'aucune ne soit à moins de 30 jours, par mesure de précaution j'ai modifié toutes les dates et les 1ere échéances seront pour le 1er septembre 2007 ("01/09/2007") donc normalement je ne devrais pas avoir d'alerte à l'ouverture du formulaire.
j'ai peut etre un probleme de format de date, une inversion entre les jours, mois et année?
Je comprends rien même si on m'explique longtemps et tout en détails !!!
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 23 juin 2006 à 15:39
salut !!
si je laisse tomber la msgbox, ne serait il pas possible de créer une requete qui puisse m'afficher la liste des personnes dont un changement de palier interviendrait le mois suivant.
je peux essayer de faire une requete sur ma table "evolution" en faisant un tri pour que n'apparaisse que le nom des personnes concerné par un tel chgt
mais je maitrise pas tre bien les requetes quel critere je dois mettre pa rapport à la date ?
si j'ouvre cette requete chaque mois, je pourrais avoir automatiquement la liste des personnes concernées non?
erefdatacomputing
Messages postés165Date d'inscriptionmardi 7 mars 2006StatutMembreDernière intervention24 avril 2018 23 juin 2006 à 16:18
le Pb ne vient pas du MsgBox, mais du fait que tu ne peux pas réussir le 'test' suivant:
"Si différence entre les 2 dates est < ou = à 30 jours, alors signale moi une alerte !!"
c'est ça et uniquement ça !!!!
essaye ça !!
If DateDiff("d", Date_Chgt_Palier , Date) < = 30 Then MsgBox ("Alerte Changement de Palier entre cette date ")
Si ça ne marche pas, alors, je pense comme toi qu'il doit y avoir un soucis du côté des formats de date.
Est ce tu fait du VB 'pur' (Projet, Form, etc..) ou est ce que tu es sous ACCESS avec du VBA ?
est ce que tu peux mettre des TexBox de controle qui afficheraient les valeurs extraitent de ta Base ? si c'est non fait le afficher dans ta MsgBox du style:
If DateDiff("d", Date_Chgt_Palier,Date ) <= 30 Then msgbox ("Alerte Changement de Palier entre cette date " & Date_Chgt_Palier & " et aujourd'hui " & Date)
comme ça tu verras les valeurs s'afficher !!
Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
arno51100
Messages postés17Date d'inscriptionvendredi 19 mai 2006StatutMembreDernière intervention30 juin 2006 23 juin 2006 à 16:53
je suis sous access en VBA,
en fait je procéde de la manière svte:
j'ouvre mon formulaire, passe en mode création et crée une procédure évenementielle "sur activation" de mon formulaire et lorsque j'écris ce que tu me dis :
If DateDiff("d", Date_Chgt_Palier,Date ) <= 30 Then msgbox ("Alerte Changement de Palier entre cette date " & Date_Chgt_Palier & " et aujourd'hui " & Date)
qd j'essaie d'ouvrir le formulaire, s'affiche une Msgbox avec le message svt :
"Alerte changement de palier entre le 01/11/2011 et aujourd'hui 23/06/2006"
je clique sur " ok" et mon formulaire s'ouvre.
donc la effectivement ca marche mais je suis pas plus avancé, car ca ne me dis pas ki et quand? mais ca a l'avantage de fonctionner donc c'est qu'on progresse non?! il faut réussir à réécrir la "formule" en triant entrela date d'aujourd'hui et le mois suivant et peut etre qu'on peut ensuite rajouter une formule pour qu'apparaisse dans une autre couleur en rouge par ex la date et le nom dont le changement est prochain ? j'en demande surment bcp mais sait on jamais?!!
merci
arno