Chaque 30 du mois

Résolu
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 14 juin 2008 à 01:34
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015 - 14 juin 2008 à 14:07
Salut !

J'ai un gros soucis, j'ai un peu fouillé mais je n'ai pas aboutis a grand chose.
En fait, j'ai deux form (Form1 et Form2 et un Timer1)

Le Timer1 est inséré dans le Form1 et je voudrais que chaque 30 du mois (du système), la Form2 s'affiche une seule fois.

Avez vous un topic qui m'aidera ou pouvez vous m'aider à réaliser ce code ?

Merci d'avance

----------
OS        : Windows XP SP2
Platforme : VB 6.0 + SP6

Ok VB6.0 c'est pas net !

9 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 juin 2008 à 03:32
ok, alors voici une aide un peu plus détaillée :
(j'ai pas testé)

'lancement:
Private Sub Form_Load()
'form_1 regarde sa date du jour.

'   ===========================
'  
PSEUDO-CODE POUR COMPRENDRE
'  
=========================
'   SI D <>
30éCRIT FAUX
'    SINON
'      form_1 lit registre (getsettings /
Savesettings)
'      SI Val =
OUI(lue)
'       RIEN
'      SINON
'        écrit
OUI
'        LANCE form_2
'      FIN
'    FIN

'  
==========================================
'  
TRADUCTION PSEUDO-CODE SANS LES "SINON RIEN"
'  
==========================================
'  
SI JOUR_DATE est '30'
'      SI VAL_REG est
'FAUX'
'        VAL_REG reçoit
'OUI'
'        LANCE form_2
'      FIN
'   SINON
'       VAL_REG reçoit 'NON'
'  
FIN

'   ============
'   CODE EXEMPLE
'  
==========
    Timer1.Enabled = False
    
    If Day(Now) = 30 Then 'jour J. si n'a pas déjà été lancée aujourd'hui, on
affiche
        If Not CBool(GetSetting(App.Title, "ShownThe30th", "Value", False)) Then
            SaveSetting App.Title, "ShownThe30th", "Value", CStr(True)
            Timer1.Interval = 60000
            Timer1.Enabled = True
        End If
    Else 'autre jour, on doit écrire FAUX pour que le 30 on ait quelque
chose à ouvrir
        SaveSetting App.Title, "ShownThe30th", "Value", CStr(False)
    End If
End Sub

Private Sub Timer1_Timer()
    Static iCpt As Integer
    iCpt = iCpt + 1
    If iCpt = 5 Then
        Timer1.Enabled = False
        Form2.Show
    End If
End Sub

ps : comme indiqué, si le 30 est un jour non-ouvré ou ..... un jour de congé de tout le monde, ta form2 ne sera pas vue pendant tout un mois ;)
à toi alors d'adapter
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 juin 2008 à 01:45
salut,

euh, que vient faire le timer là dedans?
si c'est le 30 elle doit s'ouvrir plusieurs fois?
l'application tourne 24/24 ?

si l'application est lancée quotidiennement, voici le principe :

lancement :
form_1 regarde sa date du jour.
SI D<>30
   RIEN
SINON
  form_1 lit registre (getsettings / Savesettings)
  SI VAL = OUI (lue)
   RIEN
  SINON
    écrit OUI
    LANCE form_2
  FIN
FIN

nb : boucle à revoir (SI X ALORS rien, pas besoin de l'écrire)
nb : voir si il faut lancer le 31 si le 30 personne n'a lancé l'appli..., et ce genre de cas de figures...

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
14 juin 2008 à 01:59
Salut !

Merci pour ta réponse rapide, mais je me perd un peu, ceci n'est surement pas juste, mais peut tu m'aider d'avantage stp ?

Private Sub Form_Load()
    Dim
D As Date
    If D = 30 Then
    SauvegardeBD.Show 1
    Else
    'Rien
    End If
End Sub

Merci encore
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
14 juin 2008 à 02:09
je ne peux pas t'aider tant que tu n'auras pas répondu à mes premières questions ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
14 juin 2008 à 03:22
Salut !

Désolé du retard g eu un bug de reseau :p



euh, que vient faire le timer là dedans?



Il affichera la fenetre dans 5mn après 'l'ouverture du l'appli



si c'est le 30 elle doit s'ouvrir plusieurs fois?



Non une seule fois même si l'appli a été fermée et reouverte



l'application tourne 24/24 ?



Ouvert de 8:00 à 18:00 (heure d'ouverture de l'entreprise qui utilisera l'appli en reseau (plusieurs users)

lol, tu m'as eu sur ce point :D
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
14 juin 2008 à 08:47
Bonjour,
Et tintin en février ...


Vaudra peut-être mieux de "calculer" d'abord le dernier jour ouvré du mois et l'utiliser.


Ce serait encore plus adroit de lancer la chose (une sauvegarde, apparemment), à la toute première ouverture d'un nouveau mois si elle n'a pas déjà été lancée (utilisation d'un drapeau pour s'en assurer), mais permettre également de la lancer à la demande le dernier jour ouvré d'un mois (pour éviter de paralyser tout le monde pendant la durée d'une sauvegarde le 1er jour du mois suivant)

Ou encore : laisser l'appli (et le PC) ouverts si l'on est le dernier jour ouvré et lui donner pour instruction de lancer la sauvegarde à la toute première heure (00:01) du jour suivant.


 
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
14 juin 2008 à 09:38
Pour ce qui est des sauvegardes de bases de données, puisque cela semble etre le cas ici pourquoi ne pas laisser faire les outils qui savent faire cela. Il ne devrait pas avoir besoin d'un dev pour cela

Pour une base Access, une simple copie de fichier par une commande DOS en tache planifiée, programmée pour s'executée le dernier jours du mois à 23h par exemple

Pour ce qui est des bases serveur style SQLServer, Oracle, ... , le serveur possède normalement les outils pour pouvoir faire les sauvegardes automatiques. Là aussi à programmer la nuit, en dehors de toute activité sur les bases.

Bien sur la machine doit rester allumée, mais si c'est un serveur (appli en réseau, plusieurs users) normalement il est allumé h24 donc pas de soucis

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
14 juin 2008 à 14:03
Salut et merci à tous !

J'ai compris le code et merci pour cette explication détaillée...
J'ai donc mis un Timer1 dont l'interval du temps = 0 et j'ai recopié le code :

Private Sub Form_Load()
Timer1.Enabled = False
If Day(Now) = 30 Then
If Not CBool(GetSetting(App.Title, "ShownThe30th", "Value", False)) Then
SaveSetting App.Title, "ShownThe30th", "Value", CStr(True)
Timer1.Interval = 60000
Timer1.Enabled = True
End If
Else
SaveSetting App.Title, "ShownThe30th", "Value", CStr(False)
End If
End Sub

Private Sub Timer1_Timer()
Static iCpt As Integer
iCpt = iCpt + 1
If iCpt = 5 Then
Timer1.Enabled = False
SauvegardeBD.Show 1
End If
End Sub

J'ai laissé le temps, mais rien ne s'affiche, j'ai changé



Timer1.Interval = 60000




en




Timer1.Interval = 1000




pour racourcir mais pareil... Il y'a un truc qui tourne pas rond. J'ai aussi changé l'interval du Timer1 en 1000 et supprimé la ligne




Timer1.Interval = 60000




mais pareil soucis.

A part ça... Je sais plus :/

Merci Casy et jmfmarques pour vos infos, l'amélioration sera pttr en cours :)
0
Sinsitrus Messages postés 849 Date d'inscription samedi 11 juin 2005 Statut Membre Dernière intervention 21 août 2015
14 juin 2008 à 14:07
Ah oui ca marche !!!!!!
J'ai oublié qu'au lancement la valeur devient VRAIS si le jour est 30 !
J'ai donc retourné la date au 14 puis lancé l'appli puis renvoyé la date au 30 et relancé l'appli... c parfait et ca fonctionne ^^

Merci à tous pour votre aide et surtout a toi PCPT
0
Rejoignez-nous