|
Calcul dans un fichier |
|
Stagiaire WDF
Inscrit: 28/01/2006 12:29
Post(s): 15
|
Bonsoir à tous...
Je suis également débutant...
Mon souhait: Dans un fichier (table): 1 rubrique date 1 rubrique format numérique Je voudrais qu'à chaque lancement de mon prg, que la rubrique numérique affiche en nombre de jours la différence entre la date du jour et la date entrée dans le champs date lors de sa saisie...
Quel code et ou l'entrer ?
Merci de votre patience envers une personne étant tré loin du niveau de ce forum...
Contribution le : 25/03/2006 22:01
|
|
|
Re: Calcul dans un fichier |
|
DSI WDF
Inscrit: 12/09/2004 11:07
De aude
Post(s): 279
|
Bonsoir et bienvenue, Il faut utiliser la fonction "DateDifférence()"(voir Aide WD). Vous lancer votre code soit dans l'initialisation de la fenetre ou en déclaration globale du projet. Vous récupérer la derniere date de la table avec la fonction "HLitDernier()". En espérant avoir aidé! Bon courage.
Contribution le : 26/03/2006 17:06
|
_________________
...
|
|
Re: Calcul dans un fichier |
|
Anonyme
|
Merci pour la réponse, mais je patauge encore,
Je connai un peu la fonction "Datedifference()", mais je ne trouve pas le bon code pour faire fair le calcul dans la base.
J'avais préalablement utilisé cette fonction entre deux champs d'une fenêtre, mais le calcul ne se faisait (le champs devant afficher le résultat en nombre de jours) qu'à chaque fois que je sortais du champ de saisie de la date. Ce qui n'était pas satisfaisant,je cherche donc a automatiser la mise a jour des résultats sans y arriver.
Je désire juste qu'une rubrique affiche en nombre de jours la différence entre la date du jour oul'on utlise le prog et la date entrée préalablement dans une rubrique et que ce calcul se fasse au lancement du programme.
J'espère avoir été plus clair, mais c'est difficile d'écrire ce que l'on recherhce
Contribution le : 27/03/2006 18:49
|
|
|
Re: Calcul dans un fichier |
|
Stagiaire WDF
Inscrit: 13/04/2005 13:54
Post(s): 32
|
Bonjour, Vous pouvez rechercher une solution avec l'utilisation d'un trigger après lecture. Ce trigger pouvant alimenter une variable globale. Voir l'aide sur les triggers.
Bon développement.
Contribution le : 28/03/2006 08:26
|
|
|
Re: Calcul dans un fichier |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour, Ici mon champs de saisie de date se nomme 'txtDateSaisie' Le code sera saisie à la sortie du champs en question
//Ici on récupère le nom des champs manipuler
sDateSaisie est une chaîne = txtDateSaisie..Nom
sDateDiff est une chaîne = lblNbJours..Nom
//On récupèere la date du jour sous forme d'entier
nDateJour est un entier = DateVersEntier(DateSys())
//On vérifie si la date saisie est une date valide
SI PAS DateValide({sDateSaisie,indChamp}) ALORS RETOUR
//On récupère la date saisie sous forme d'entier
nDateSaisie est un entier = DateVersEntier({sDateSaisie,indChamp}..Valeur)
//On calcul le nombre de jour entre les deux dates
{sDateDiff,indChamp} = NumériqueVersChaîne(nDateJour - nDateSaisie)
Note :{sDateDiff,indChamp}Cette syntaxe permet de faire de l'indirection sur les champs sDateDiff contient le nom champs manipulé indChamp cette constante permet d'optimiser en indiquent qu'il s'agit d'un champs. les {} permettent de faire de l'indirection.
Contribution le : 28/03/2006 11:09
|
|
|
Re: Calcul dans un fichier |
|
Anonyme
|
Merci Dc Charly
Celà marche dans une fenêtre, mais ça revient un peu au départ de mon problème, comment faire pour que ce calcul se fasse sur la table entière à l'ouverture du programme ?
J'ai testé dans la fenêtre, cela marche effectivement mais chaque fois que l'on quitte le champs date, ce qui n'est pas rentable, je ne peux pas tous les jours ouvrir chaque fenêtre de saisie, aller dans chaque champs date et les valider chacun a son tour,
Merci encore pour vous pencher sur ma demande qui vous parait basic mais qui est pour moi insoluble
Contribution le : 28/03/2006 20:30
|
|
|
Re: Calcul dans un fichier |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour, Si il s'agit de l'affichage dans une fenêtre de type fiche il va y avoir deux cas : CréationDans ce cas le code fourni ira très bien et aucune modif nécéssaire sauf si ce n'est que de mettre le code dans une procedure que l'on pourra appeler proAfficheDateDiff()Par conséquent le code à la sortie du champ deviendra: ModificationDans ce cas il faut faire le calcul une fois les champs renseignés et y insérer ce type de code:
Si ModeFen <> "Création" alors
proAfficheDateDiff()
Fin
Ainsi le code sera effectué à l'ouverture de la fenêtre Si maintenant tu veux effectuer ce calcul à partir d'une table il te faudra mettre ce code dans le bloc : 'Affichage d'une ligne'
Contribution le : 29/03/2006 11:45
|
|
|
Re: Calcul dans un fichier |
|
Stagiaire WDF
Inscrit: 28/01/2006 12:29
Post(s): 15
|
Merci pour ton code DcCharly,
Je l'ai placé dans l'affichage d'une ligne de Table, car je souhaite que les calculs se rafraichissent régulièrement en ouverture
Mais ça me retourne une erreur au test qui signale un mauvais format de date.. je ne vois pas à quel niveau cette erreur se trouve
Contribution le : 30/03/2006 18:13
|
|
|
Re: Calcul dans un fichier |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour, Les champs qui contiennent les dates doivent être de type date et non en type Chaine, de plus la valeur retournée doit être au format AAAAMMJJ. Si toute fois les dates sont au format chaîne alors il faut modifier le procédure proAfficheDateDiff()
PROCEDURE proAfficheDateDiff()
sChampResultat est une chaine = lblNbJours..nom
sDateSaisie est une chaîne = txtDateSaisie..Nom
sDateDiff est une chaîne = lblNbJours..Nom
nDateJour est un entier = DateVersEntier(DateSys())
SI PAS DateValide(ChaîneVersDate({sDateSaisie,indChamp})) ALORS RETOUR
nDateSaisie est un entier = DateVersEntier(ChaîneVersDate({sDateSaisie,indChamp}))
sDateDiff = NumériqueVersChaîne(nDateJour - nDateSaisie)
{sChampResultat,indChamp} = sDateDiff
Contribution le : 31/03/2006 14:28
|
|
|
Re: Calcul dans un fichier |
|
Stagiaire WDF
Inscrit: 28/01/2006 12:29
Post(s): 15
|
Super génial Dc Charly,
Testé ça marche impeccable, on peut dire que quand ton code est malade il te faut voir un Dc...
Ca m'enlève une bonne épine du pied, ma table commençant a sérieusement se remplir, ce calcul devenait indispensable...
Encore merci pour votre dévouement à tous...
Contribution le : 01/04/2006 09:14
|
|
|
Re: Calcul dans un fichier |
|
Stagiaire WDF
Inscrit: 28/01/2006 12:29
Post(s): 15
|
Juste un petit bémol
J'ai placé cette procédure dans le bloc "affichage d'un ligne de Table, cela marche trés bien dans la table, les champs se mettent à jour immédiatement, mais par contre quand j'ouvre la fenêtre fiche relative a une ligne de la table, le champ en question (datediff) n'est pas à jour. L'état qui doit afficher les entrées dont la "datediff" dépasse une certaine valeur, ne lesprends pas en compte,
En fait on dirait que la table ne se met pas à jour alors que la fenêtre table affiche la bonne valeur ...
J'espère avoir été compréhensible...
Contribution le : 01/04/2006 09:33
|
|
|
Re: Calcul dans un fichier |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour,
Selon le calcul fourni celui ci n'est en aucune facon enregistré physiquement dans le fichier.
il faut donc appliquer le meme mode de calcul au niveau de la fiche en tenat compte du mode de fonctionnement de la fiche création ou modification.
Contribution le : 01/04/2006 16:35
|
|
|
Re: Calcul dans un fichier |
|
Stagiaire WDF
Inscrit: 28/01/2006 12:29
Post(s): 15
|
Re..
J'ai tenté depuis ce matin diverses solutions mais rien ne marche. La table se trouve dans une fenêtre avec parcour, une fiche s'ouvre pour nouveau ou modifier, j'ai placé le code également dans la fiche, cela fonctionne, la fiche affichant la bonne valeur de sdatediff. Mais le problème est que le fichier ne se met a jour que de la valeur traitée par la fiche. Alors que je voudrai que toute les valeurs se mettent à jour dans le fichier.
J'ai tenté avec ecranversfichier dans la fenêtre de la table, cela ne marche pas.
Je me noie peut etre dans un verre d'eau, mais je tourne en rond depuis ce matin...
Contribution le : 01/04/2006 17:03
|
|
|
Re: Calcul dans un fichier |
|
Stagiaire WDF
Inscrit: 28/01/2006 12:29
Post(s): 15
|
En fait n'y aurait il pas une solution plus simple de faire effectuer ce calcul au lancement du programme, ce calcul se faisant directement dans le fichier sur le disque dur pour toutes les entrées? A ce moment là la table, l'état etc afficheraient les bonnes valeurs à leur ouverture ...
Contribution le : 01/04/2006 18:12
|
|
|
Re: Calcul dans un fichier |
|
Animateur WDF
Inscrit: 02/03/2003 04:07
De Noisy le grand(93)
Post(s): 2745
|
Bonjour, A moins que vous aillez un besoin explicite de cette valeur dans le fichier, vous pouvez créer une procédure en 'One shoot' pour mettre à jour cette valeur dans le fichier.
POUR TOUT <Fichier>
//Ici la fonction
HModifie(<Fichier>)
FIN
Cette procédure n'à lieu d'être exécutée qu'une seule fois puisque les nouvelles valeurs seront misent à jour via la fiche.
Contribution le : 03/04/2006 02:00
|
|
|
Re: Calcul dans un fichier |
|
Anonyme
|
Désolé mais ça ne marche pas...
Les données dans le fichier ne se mettent pas à jour, j'ai besoin de ces données à jour dans le fichier car un état s'y réfère pour sortir les données dépassant une certaine valeur.
Je ne suis pas encore en état de tout comprendre, je débute et ne peux m'y consacrer autant que je voudrais.
Contribution le : 03/04/2006 18:26
|
|
|
Re: Calcul dans un fichier |
|
ChefDeProjet WDF
Inscrit: 02/05/2006 21:28
Post(s): 160
|
si j'ai bien compris ton principal problème est de sortir un état qui n'imprime que les enregistrements dont la différence entre la date du jour et celle dans ta rubrique fichier est supérieur à une valeur donnée
Alors pourquoi ne pas mettre la condition dans le filtre de ton état tout simplement.
si datedifference()>x alors renvoyer vrai sinon renvoyer faux
Contribution le : 02/05/2006 22:38
|
|
Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.
|
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
|