|
FOROS PROFESIONALES WINDEV, WEBDEV y WINDEV Mobile |
| | | | | |
Déterminer le prix d'un article en vigeur à une date donnée |
Iniciado por jb.dumontier, 27,oct. 2004 21:31 - 6 respuestas |
| |
| | | |
|
| |
Publicado el 27,octubre 2004 - 21:31 |
Bonjour
Voici un petit problème plus compliqué qu'il n'y parait (au moins pour moi!)
J'ai un fichier TARIF dans lequel je met
- le code fournisseur - la référence article - la date d'entrée en vigeur du tarif - le prix HT
Comment connaître le prix d'un article d'un fournisseur en vigeur à une date donnée?
(Si l'article n'est plus en vente il suffit de donner un prix négatif ). Le fichier peut comporter des prix futurs (prix au 01/01/2005 par exemple)
Ce problème se pose dans de nombreux autres cas.
- Déterminer le grade d'un salarié à un moment donné (on a fichier qui contient toutes les nominations). - Déterminer si un appartement est libre ou non...
Y aurait'il un exemple qui traite de cela?
Merci pour toutes vos suggestions |
| |
| |
| | | |
|
| | |
| |
Publicado el 27,octubre 2004 - 22:51 |
Bonjour Je pense qu il te faut 2 fichiers si j ai bien compris ! 1 - Article : code article, code fournisseur ... 2 - Tarif : code article, date entree, prix ht En esperant avoir eclairci ton probleme Stephane
"Jean Baptiste Dumontier" <jb.dumontier@winnix.com> a écrit dans le message de news: 417fd1d9@news.pcsoft.fr...
Bonjour
Voici un petit problème plus compliqué qu'il n'y parait (au moins pour moi!)
J'ai un fichier TARIF dans lequel je met
- le code fournisseur - la référence article - la date d'entrée en vigeur du tarif - le prix HT
Comment connaître le prix d'un article d'un fournisseur en vigeur à une
date donnée?
(Si l'article n'est plus en vente il suffit de donner un prix négatif ). Le fichier peut comporter des prix futurs (prix au 01/01/2005 par exemple)
Ce problème se pose dans de nombreux autres cas.
- Déterminer le grade d'un salarié à un moment donné (on a fichier qui
contient toutes les nominations).
- Déterminer si un appartement est libre ou non...
Y aurait'il un exemple qui traite de cela?
Merci pour toutes vos suggestions
|
| |
| |
| | | |
|
| | |
| |
Publicado el 27,octubre 2004 - 23:52 |
Bonjour,
Pour ton problème, il faut travailler sur l'index avec une clée composée du type IDTARIF+DATE, stockage dans un fichier historique secondaire si possible.
Ensuite, tu effetueras une recherche avec HLitRechercheDernier sur ta clé composée avec HConstruitValClé.
Voilà pour la technique.
Bon dev. |
| |
| |
| | | |
|
| | |
| |
Publicado el 28,octubre 2004 - 03:36 |
Moi je créerais une clé composée avec la ref de l'article + la date de validité du tarif si l'article n'est pas unique pour un fournisseur il faut rajouter le code fournisseur à la fin, par contre si le fournisseur est toujours connu au moment de la recherche, places le en début de clé.
Dans la recherche tu écris HLitrecherche("Tarif","Clécomposée",RefArt+DateTarif) 1/ si 1 art = 1 fournisseur tu seras positionné sur le bon tarif si la date est identique , sinon faire un HLitPrécédent() pour être sur le tarif en vigueur.
2/ si 1 art = x fournisseurs , c'est un peu plus compliqué même principe si la date est trouvée exactement, sinon on recule, mais les fournisseurs ne changeant pas de tarif en même temps, il sera peut être plus rapide de charger tous les tarifs d'un article dans une table cachée et de la trier sur fournisseur et date et de supprimer du tableau les lignes qui ne correspondent pas à ta recherche.
J'espère que j'avais bien compris ton problème ? Et que je t'ai apporté une piste. Yves
"Jean Baptiste Dumontier" <jb.dumontier@winnix.com> a écrit dans le message de news: 417fd1d9@news.pcsoft.fr...
Bonjour
Voici un petit problème plus compliqué qu'il n'y parait (au moins pour moi!)
J'ai un fichier TARIF dans lequel je met
- le code fournisseur - la référence article - la date d'entrée en vigeur du tarif - le prix HT
Comment connaître le prix d'un article d'un fournisseur en vigeur à une
date donnée?
(Si l'article n'est plus en vente il suffit de donner un prix négatif ). Le fichier peut comporter des prix futurs (prix au 01/01/2005 par exemple)
Ce problème se pose dans de nombreux autres cas.
- Déterminer le grade d'un salarié à un moment donné (on a fichier qui
contient toutes les nominations).
- Déterminer si un appartement est libre ou non...
Y aurait'il un exemple qui traite de cela?
Merci pour toutes vos suggestions
|
| |
| |
| | | |
|
| | |
| |
Publicado el 28,octubre 2004 - 08:02 |
On 27-Oct-2004, "Wil" <research.mail@tiscali.fr> wrote:
Bonjour,
Pour ton problème, il faut travailler sur l'index avec une clée composée du type IDTARIF+DATE, stockage dans un fichier historique secondaire si possible.
Ensuite, tu effetueras une recherche avec HLitRechercheDernier sur ta clé composée avec HConstruitValClé.
Voilà pour la technique.
Bon dev.
La solution proposée n'a pas été testée, et je n'ai pas le temps de le faire maintenant, mais je pense qu'elle doit fonctionner.
Je crois quant à moi, que la clef peut être la date uniquement en spécifiant le sens descendant... Une recherche générique sur la date te positionneras sur le premier prix pour la date égale ou plus petite à la date recherchée et tu auras automatiquement le prix valable pour cette date exemple : .... 20040401 10.00 20040301 09.75 20040201 09.50 20040101 10.00 ....
pour trouver le prix au 10/03/2004, par exemple, il suffit de faire : hlitrecherchepremier(prix,date,"20040310",hgénérique) qui te renverra vrai pour hTrouve et faux pour hendehors et tu seras sur sur "20040301 09.75" ce qui est la valeur recherchée ... Ne pas oublier la constante hGénérique, sans quoi, hendehors sera a vrai et tu ne seras pas sur le bon enregistrement ...
Je ne suis plus sûr du comportement de hlitrecherchepremier() avec des index descendants ... il est possible que l'enregistrement actif soit l'enregistrement précédent celui qui est recherché ... a vérifier donc ...
Bien à toi !
-- Marcel Berman c/o Managing Business SPRL Allée du Petit Paris, 11 B - 1410 - Waterloo Tel : +32 2 351.60.64 Fax : +32 2 351.45.78 Gsm : +32 475.799.477 |
| |
| |
| | | |
|
| | |
| |
Publicado el 28,octubre 2004 - 11:22 |
Bonjour
Pendant que je dormais vous réflechissiez!
Merci pour toutes vos suggestions que je vais tester :
Dans mon cas il y a plusieurs fournisseurs possibles qui peuvent proposer le même article avec la même rérérence ou avec une référence différente. Cela pourrait être le cas d'un comparateur de prix que l'on alimenterait avec des catalogues fournisseurs.
Il me faudrait peut être une clé composée de
CodeFournisseur+Référence+Date
puis utiliser les ordres HLitRechercheDernier et HLit précédent (car il vaut mieux descendre les dates). Il faut aussi tester si l'on est pas en rupture du code fournisseur ou article et tester les valeurs de HTrouve et HEnDehors.
J'ai pensé aussi utiliser HFiltre mais je ne maitrise pas très bien!
Merci encore |
| |
| |
| | | |
|
| | |
| |
Publicado el 28,octubre 2004 - 12:18 |
Si tu as plusieurs fournisseurs par article, ne le met pas en premier dans ta clé composée, ce serait inexploitable.
Sinon à la place de Hfiltre essayes de créer une requête avec l'éditeur, c'est simple et très puissant, et ensuite le résultat s'utilise comme un fichier.
Yves
"Jean Baptiste Dumontier" <jb.dumontier@winnix.com> a écrit dans le message de news: 418094bb@news.pcsoft.fr...
Bonjour
Pendant que je dormais vous réflechissiez!
Merci pour toutes vos suggestions que je vais tester :
Dans mon cas il y a plusieurs fournisseurs possibles qui peuvent proposer
le même article avec la même rérérence ou avec une référence différente. Cela pourrait être le cas d'un comparateur de prix que l'on alimenterait avec des catalogues fournisseurs.
Il me faudrait peut être une clé composée de
CodeFournisseur+Référence+Date
puis utiliser les ordres HLitRechercheDernier et HLit précédent (car il
vaut mieux descendre les dates). Il faut aussi tester si l'on est pas en rupture du code fournisseur ou article et tester les valeurs de HTrouve et HEnDehors.
J'ai pensé aussi utiliser HFiltre mais je ne maitrise pas très bien!
Merci encore
|
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|