Salut à tous
Dans un état, je voulais mettre un calendrier paramétrable comme suit:
Je n'ai pas trouve de code alors je l'ai fait Voila le résultat pour décembre 2004
Je crée une table calend qui s'écrase à chaque fois.Un seul enregistrement
Dans l'état il faut placer 42 champs correspondant aux 42 champs de la table calend
Voila voila
Bonne prog à tous
Cordialement
Eric
Source / Exemple :
- !* code à mettre dans la méthole beforeopentable du dataenvironment de l'état
PUBLIC MOISEDITION,quelannee,rea,an
if vartype(m.moisedition)#"C"
local rep
do form chmois with "M" TO m.moisedition
- !* le form chmois renvoi le numéro du mois choisi en alpha "11" pour novembre
m.moisedition=val( m.moisedition)
an=year(date())
if moisedition=1
m.rep=messagebox("Voulez vous traiter le mois de janvier de cette année"+alltrim(str(year(date()))),36)
if m.rep=6
an=year(date())
else
an=year(date())+1
endif
endif
private jourch
STORE SET('FDOW') TO gnPjds && Enregistre la valeur courante
SET FDOW TO 2 && Définit dimanche comme le premier jour de la semaine, ce qui est la valeur par défaut
select 0
CREATE TABLE .\temp\calend FREE;
(calend1 c(2),;
calend2 c(2),;
calend3 c(2),;
calend4 c(2),;
calend5 c(2),;
calend6 c(2),;
calend7 c(2),;
calend8 c(2),;
calend9 c(2),;
calend10 c(2),;
calend11 c(2),;
calend12 c(2),;
calend13 c(2),;
calend14 c(2),;
calend15 c(2),;
calend16 c(2),;
calend17 c(2),;
calend18 c(2),;
calend19 c(2),;
calend20 c(2),;
calend21 c(2),;
calend22 c(2),;
calend23 c(2),;
calend24 c(2),;
calend25 c(2),;
calend26 c(2),;
calend27 c(2),;
calend28 c(2),;
calend29 c(2),;
calend30 c(2),;
calend31 c(2),;
calend32 c(2),;
calend33 c(2),;
calend34 c(2),;
calend35 c(2),;
calend36 c(2),;
calend37 c(2),;
calend38 c(2),;
calend39 c(2),;
calend40 c(2),;
calend41 c(2),;
calend42 c(2))
append blank
m.dateencours=ctod("01/"+alltrim(str(m.moisedition))+"/"+alltrim(str(m.an)))
m.finmois=ctod("01/"+alltrim(str(iif(m.moisedition=12,0,m.moisedition)+1))+"/"+alltrim(str(iif(m.moisedition=12,an+1,an ))))
m.jourch=dow(m.dateencours,2)
for m.i=1 to m.finmois-m.dateencours
if i=43
exit
endif
cmd="replace calend"+alltrim(str((m.jourch-1)+m.i))+ " with "+'"'+alltrim(str(m.i))+'"'
&cmd
next m.I
SET FDOW TO &gnPjds && Restaure le jour d'origine
M.moisedition=alltrim(str(m.moisedition))
m.rea=alltrim(str(iif(val(m.moisedition)>1,val(m.moisedition)-1,12)))
select 0
endif
- !* code à mettre dans la propriété destroy de l'environnement de donnée de l'état
release m.moisedition,m.quelannee,m.rea
select calend
use
Conclusion :
Voir les trois captures d'écran dans le zip joint