Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Indexer une saisie en vue d'un classement. Ven 9 Oct 2015 - 13:47 | |
| Bonjours à tous, Pour un projet futur, j'ai besoin de classer des saisies par ordre chronologique. Par exemple: insérer une opération bancaire par rapport à sa date de valeur dans un grid qui contient d'autres opérations (de la même date ou pas). J'ai chercher sur le forum, un moyen et j'ai découvert la procédure de Ygeronimi. Ici => https://panoramic.1fr1.net/t3223-petites-subs-avec-les-dates?highlight=dates.Je l'ai adaptée à mes besoins et ça donne le code ci-dessous. Lisez les commentaires au début du code et vous comprendrez la finalité. - Code:
-
' CLASSIFICATEUR par Jean Claude (utilisant le convertisseur de date de Ygeronimi). Octobre 2015
' NOM de la SUB: Classificateur( paramètre 1 , paramètre 2 , paramètre 3 , paramètre 4 ) ' DESCRIPTION: Donner un index à une saisie en fonction de la date et l'heure de la saisie ' au moment de la validation de cette saisie ' BUT: Pour une insertion par classement ou pour faire un tri rapide ' PARAMETRES: 1) Seized_date$ = date de la_saisie. EX: date$ ou "09/10/2015" ' 2) hour$ = heure de la saisie. EX: time$ ou "15:30:54" ' 3) temp_de_saisie% = temp nessécaire pour faire la saisie (en secondes) ' ce paramètre est fonction du temps estimé entre deux saisies ' pour éviter que deux saisies aient le même index ' c'est un diviseur des secondes, EX: 10 donne un index toute les 6 secondes ' le but est de réduire la grandeur du nombre qui servira d'index. ' 4) annee_dep% = l'année de départ pour comptabilisé l'index (format: aaaa) ' Remarque: si vous choisissez 1900 day% sera en correspondance avec Excel. ' CONTROLES: cette procédure est destinée au programmeur Panoramic (supposé averti), ' en conséquence il n'y pas de contrôle sur les paramètres. ' Ex: si vous saisissez une annee_dep% > à l'année Seized_date$ le résultat sera faux.
dim index% : Classificateur("09/10/2015",time$,10,1900):' retourne index% print "index de la saisie: "+str$(index%) END
rem ============================================================' CLASSIFICATEUR SUB Classificateur(Seized_date$,hour$,temp_de_saisie%,annee_dep%) ' convertisseur de date par Ygeronimi (modifié JC) dim_local j%,m%,a%,x%,sep%,liste$,jm%,njm%,a$,ja%,bis%,b%,day%,nbmin%,second% liste$="31_28_31_30_31_30_31_31_30_31_30_31_" if variable("N_jour_Annee%")=0 then dim N_jour_Annee% ' calcul du nombre de jour depuis le 01/01 de l' année de la date j%=val(left$(Seized_date$,2)) N_jour_Annee%=j% m%=val(mid$(Seized_date$,4,2)) for x%=1 to m%-1 sep%=instr(liste$,"_") a$=left$(liste$,2):jm%=val(a$):njm%=njm%+jm% if len(liste$)>0: Liste$=right$(liste$,len(liste$)-sep%):end_if next x% N_jour_Annee%=N_jour_Annee%+njm% a%=right$(Seized_date$,4) if mod(a%,4)=0 :b%=b%+1:end_if if mod(a%,100)>0:b%=b%+1:end_if if b%<2 if mod(a%,400)=0:b%=b%+1:end_if end_if if b%<2 :bis%=0:else:bis%=1:end_if if bis%=1 and m%=2 N_jour_Annee%=N_jour_Annee%+1 end_if ' calcul du nombre de jour entre le 01/01/annee_dep% et le 31/12 de l' année précédente de la date for x%=annee_dep% to a%-1 b%=0 if mod(x%,4)=0 :b%=b%+1:end_if if mod(x%,100)>0:b%=b%+1:end_if if b%<2 if mod(x%,400)=0:b%=b%+1:end_if end_if if b%<2 :bis%=0:else:bis%=1:end_if if bis%=1 ja%=ja%+366 else ja%=ja%+365 end_if next x% day%=N_jour_Annee%+ja% ' Conversion_heure par JC nbmin%=60*val(left$(hour$,2))+val(mid$(hour$,4,2)) second%=60*nbmin%+val(right$(hour$,2)) index%=day%+(second%/temp_de_saisie%) END_SUB
A+
Dernière édition par Jean Claude le Ven 9 Oct 2015 - 18:54, édité 2 fois | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 9 Oct 2015 - 14:19 | |
| Comme quoi je ne publie pas que des âneries... | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Indexer une saisie en vue d'un classement. Ven 9 Oct 2015 - 18:58 | |
| Mais qui a dit que tu publiais des âneries ? De mon coté, j'ai corrigé les miennes dans le code ci-dessus, mais ça ne change pas le code, c'était des fôtes fautes dans les commentaires. A+ | |
|
Contenu sponsorisé
| Sujet: Re: Indexer une saisie en vue d'un classement. | |
| |
|