Sinsitrus
Messages postés849Date d'inscriptionsamedi 11 juin 2005StatutMembreDernière intervention21 août 2015
-
14 juin 2008 à 01:34
Sinsitrus
Messages postés849Date d'inscriptionsamedi 11 juin 2005StatutMembreDernière intervention21 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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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.
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 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
Sinsitrus
Messages postés849Date d'inscriptionsamedi 11 juin 2005StatutMembreDernière intervention21 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 :)
Sinsitrus
Messages postés849Date d'inscriptionsamedi 11 juin 2005StatutMembreDernière intervention21 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