|
sélection et mise à jour d'une plage de ligne d'un tableau pour une condition donnée. |
Started by Olivier, Jan., 17 2017 6:02 PM - 5 replies |
| |
| | | |
|
| |
Posted on January, 17 2017 - 6:02 PM |
bonsoir à tous ,
j'ai un soucis avec windev et j’ai besoin d'aide. mon problème est le suivant: j'ai créé un tableau qui importe les données fichiers excel sur 8 colonnes que voici ( image en PJ)
pour cela,pour la ligne comportant le montant au débit 139.458 je voudrais pourvoir ajouter automatiquement 30jrs a la date déchéance de sa ligne et aux dates des lignes en dessous qui constituent les divers lignes total du crédit dont la somme (somme crédit ) est égale au montant débit .
merci d'avance de votre aide. |
| |
| |
| | | |
|
| | |
| |
Posted on January, 18 2017 - 11:17 AM |
le bout de code ci-dessous et l'image sont la pour illustre sus-cité
POUR TOUTE LIGNE DE TABLE_CondReglement TABLE_CondReglement.COL_DATEECHCONVER=ChaîneVersDate(TABLE_CondReglement.COL_DATE_ECHEANCE) TABLE_CondReglement.COL_DATEMAJ=DateVersEntier(TABLE_CondReglement.COL_DATEECHCONVER)
FIN
TableActiveFiltre(TABLE_CondReglement.COL_COMPTE,filtreContient,"411120008") POUR TOUT LIGNE DE TABLE_CondReglement TABLE_CondReglement.COL_DATE_ECHEANCE=DateVersChaîne(EntierVersDate(DateVersEntier(TABLE_CondReglement.COL_DATEECHCONVER)+30)) FIN TableDésactiveFiltre(TABLE_CondReglement) |
| |
| |
| | | |
|
| | |
| |
Registered member 2,566 messages Popularité : +222 (260 votes) |
|
Posted on January, 18 2017 - 12:41 PM |
Bonjour,
Etant donné que tu ne cites pas le problème que tu as, je modifierais le code comme ci-après. Cela suppose que les colonnes sont dans le bon format dès le départ:
dDateEcheance est une Date
TableActiveFiltre(TABLE_CondReglement.COL_COMPTE,filtreContient,"411120008") POUR TOUT LIGNE DE TABLE_CondReglement dDateEcheance = COL_DATE_ECHEANCE dDateEcheance..Jour += 30 COL_DATE_ECHEANCE = dDateEcheance FIN TableDésactiveFiltre(TABLE_CondReglement)
-- Cordialement,
Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | |
| |
Posted on January, 19 2017 - 5:40 PM |
Bonjour PSB,
merci de l'aide avec ton bout de code que j'ai optimisé en créant une variable qui enregistre le numéro de la pièce puis applique le filtre et met à jour la date et désactive le filtre. code cidessous:
POUR g=1 _A_ TABLE_CondReglement..Occurrence SI TABLE_CondReglement.COL_COMPTE[g]="411720114" ALORS SAI_Mem=TABLE_CondReglement.COL_PIECES[g] FIN TableActiveFiltre(TABLE_CondReglement.COL_PIECES,filtreEgal,SAI_Mem..ValeurAffichée) POUR TOUT LIGNE DE TABLE_CondReglement TABLE_CondReglement.COL_DATE_ECHEANCE=DateVersChaîne(EntierVersDate(DateVersEntier(TABLE_CondReglement.COL_DATEECHCONVER)+30)) FIN TableDésactiveFiltre(TABLE_CondReglement) FIN
mon problème actuellement est que, j'ai près d'une 40 tainne de filtre de ce genre a appliquer ce qui fait que mon programme met 5 min a traiter le fichier importé. Comment pourrais accélérer le traitement? Merci une fois de plus de l'aide . |
| |
| |
| | | |
|
| | |
| |
Registered member 2,566 messages Popularité : +222 (260 votes) |
|
Posted on January, 20 2017 - 11:40 AM |
pour moi ton code est complètement incohérent, tu parcours une table, en plein milieu du traitement tu filtres la table, tu desactives le filtre, si ça se trouve, le tri aura changé, donc tu vas loupé des comptes...
Essaye peut -être ça, ça me parait plus juste:
nIndice est un entier tabATraiter est un tableau de chaînes
POUR TOUTE LIGNE DE TABLE_CondReglement SI COL_COMPTE="411720114" ALORS SI TableauCherche(tabATraiter,tcLinéaire,COL_PIECES) = -1 ALORS TableauAjoute(tabATraiter,COL_PIECES) FIN FIN
POUR TOUT sPieces DE tabATraiter nIndice = 0 nIndice = TableCherche(TABLE_CondReglement.COL_PIECES,sPieces) TANTQUE nIndice <> -1 TABLE_CondReglement.COL_DATE_ECHEANCE[nIndice]=DateVersChaîne(EntierVersDate(DateVersEntier(TABLE_CondReglement.COL_DATEECHCONVER[nIndice])+30)) nIndice = TableCherche(TABLE_CondReglement.COL_PIECES,sPieces,RechercheDéfaut,nIndice) FIN FIN
-- Cordialement,
Philippe SAINT-BERTIN Géode Informatique |
| |
| |
| | | |
|
| | |
| |
Posted on January, 23 2017 - 4:24 PM |
Même diagnostic que Philippe SB.
Si ta table fait 100 lignes,et qu'il y a 15 lignes avec le code ducompte voulu, la commande 'TABLEACTIVEFILTRE' doit s'exécuter combien de fois 15 fois, ou 100 fois ?
Pour ce genre de debug, tu peux passer par l'outil 'Analyseur de performance' ( au lieu de cliquer sue le bouton Go vert )
A la fin du test , tu auras tout un tas de statistiques sur ce qu'à fait le programme. C'est très utile pour l'amélioration de performance. ( En fait , dans ton cas, le problème n'est pas un problème de performance, mais plutôt un problème d'exactitude des résultats). |
| |
| |
| | | |
|
| | | | |
| | |
|