Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème de double affichage Table

4 réponses
Avatar
Ducados
Bonjour,
Je cherche et ne trouve point !
J'ai une fenêtre, avec dans sa partie supérieure, des champs de saisie qui
me permette d'introduire certains critères de filtrage.
Et en dessous une table.
A coté de mes champs de filtrage j'ai un bouton qui me permet de lancer la
recherche.
Le Problème est celui-ci :
A chaque fois que je lance la recherche, ma table se réaffiche 2x, on voit
nettement qu'elle s'affiche, s'éfface et se réaffiche aussi vite ?
C'est pas un gros problème, puisque le résultat est correct en final, mais
c'est quand même pas propre !
J'ai beau lancer l'appli en trace, point d'arrêt etc... je vois pas.
Le code de mon bouton recherche est le suivant, un peu élaguer dans la
construction du filtre pour ne pas alourdir le msg.

SI (SaisieLieux>"") OU (SaisieHomme>"") OU (SaisieDateDeb>"") OU
(SaisieDateFin>"") ALORS
// Rendre visible les champs SaisieHomme et SaisieFemme
SI SaisieHomme..Visible = Faux ALORS
SaisieHomme..Visible = Vrai
FIN
HDésactiveFiltre(Mariage)
Table..FichierParcouru="" // débranche les propriété de parcours
Table..RubriqueParcourue=Mdate // garde la rubrique de parcours
Table..Filtre="" // rien sur la rubrique
ls_Cle est une chaîne
ls_Filtre est une chaîne

SI SaisieLieux > "" ALORS
ls_Filtre = "MLIEUX ~] '" + SaisieLieux + "'"
FIN
SI SaisieHomme > "" ALORS
SaisieHomme = SaisieHomme + Caract(0)
SI SansEspace(ls_Filtre) > "" ALORS
ls_Filtre = ls_Filtre +" ET " + "MNOM ~] '" + SaisieHomme +
"'"
SINON
ls_Filtre = "MNOM ~] '" + SaisieHomme + "'"
FIN
FIN
SI (SaisieDateDeb > "") ET (xgLevel=1) ALORS
SI SaisieDateDeb > xgDatMax ALORS SaisieDateDeb=Gauche(xgDatMax,4)
FIN
SI (SaisieDateFin > "") ET (xgLevel=1) ALORS
SI SaisieDateFin > xgDatMax ALORS SaisieDateFin=Gauche(xgDatMax,4)
FIN
SI SaisieDateDeb > "" ET SaisieDateFin = "" ALORS
// DateDeb seulement
SaisieDateFin = SaisieDateDeb + Caract(255)
SaisieDateDeb = SaisieDateDeb + Caract(0)
SI SansEspace(ls_Filtre) > "" ALORS
ls_Filtre = ls_Filtre +" ET " + "MDATE >= '" + SaisieDateDeb + "'"
ls_Filtre = ls_Filtre +"ET " + "MDATE <= '" + SaisieDateFin + "'"
SINON
ls_Filtre = "MDATE >= '" + SaisieDateDeb + "'"
ls_Filtre = ls_Filtre +"ET " + "MDATE <= '" + SaisieDateFin + "'"
FIN
SINON
SI SaisieDateDeb > "" ET SaisieDateFin > "" ALORS
// Fourchette DateDeb à DateFin
SaisieDateDeb = SaisieDateDeb + Caract(0)
SaisieDateFin = SaisieDateFin + Caract(255)
SI SansEspace(ls_Filtre) > "" ALORS
//Ok
ls_Filtre = ls_Filtre +" ET " + "MDATE >= '" + SaisieDateDeb
+ "'"
ls_Filtre = ls_Filtre +"ET " + "MDATE <= '" + SaisieDateFin +
"'"
SINON
//Ok
ls_Filtre = "MDATE >= '" + SaisieDateDeb + "'"
ls_Filtre = ls_Filtre +"ET " + "MDATE <= '" + SaisieDateFin +
"'"
FIN
SINON
// DateFin seulement, au lieu de DateDeb seulement
SaisieDateDeb = SaisieDateFin + Caract(0)
SaisieDateFin = SaisieDateFin + Caract(255)
SI SansEspace(ls_Filtre) > "" ALORS
//Ok
ls_Filtre = ls_Filtre +" ET " + "MDATE >= '" + SaisieDateDeb +
"'"
ls_Filtre = ls_Filtre +"ET " + "MDATE <= '" + SaisieDateFin +
"'"
SINON
//Ok
ls_Filtre = "MDATE >= '" + SaisieDateDeb + "'"
ls_Filtre = ls_Filtre +"ET " + "MDATE <= '" + SaisieDateFin +
"'"
FIN
FIN
FIN

SI (SaisieHomme = "") ALORS
Erreur("Vous devez sélectionner"," au moins un Patronyme"," ou
une partie de celui-ci !")
RepriseSaisie(SaisieHomme)
FIN

SI Droite(SaisieDateFin,1)=Caract(255) ALORS
SaisieDateFin = Gauche(SaisieDateFin,Taille(SaisieDateFin)-1)
FIN

Bou_Rech..Etat = Inactif
Bou_Rech..Visible = Faux

Bou_Raz..Etat = Actif
Bou_Raz..Visible = Vrai

SaisieLieux..Etat = AffichageSeulement
SaisieHomme..Etat = AffichageSeulement
SaisieDateDeb..Etat = AffichageSeulement
SaisieDateFin..Etat = AffichageSeulement

ls_Cle=HFiltre(Mariage,ls_Filtre) // filtre simplement le fichier
(on peut aussi filtrer selon une condition...)
Table..RubriqueParcourue = "CLETESTDOUBLON" // Change la clé de
parcours [optionnel]
Table..FichierParcouru="mariage" // rebranche les
propriété de parcours
TableTrie("Table", "mdate")
SINON
// pas de saisie on repasse en parcours normal (selon RUBRIQUE)
TitreSuivant("Erreur de sélection")
Erreur("Vous devez sélectionner"," au moins un Patronyme"," ou
une partie de celui-ci !")
RepriseSaisie(SaisieLieux)
FIN

// reaffiche la table
TableAffiche(Table,taDébut)
// donne le curseur à la table
EcranPremier(Table)

4 réponses

Avatar
Marcel.berman
On 29-Nov-2004, "Ducados" wrote:

Le Problème est celui-ci :
A chaque fois que je lance la recherche, ma table se réaffiche 2x, on voit
nettement qu'elle s'affiche, s'éfface et se réaffiche aussi vite ?
C'est pas un gros problème, puisque le résultat est correct en final, mais
c'est quand même pas propre !



Salut !

Il y a quelque chose que je ne comprends pas trop ...
Tu actives un filtre, le résultat est stocké dans Is_Clé qui devrait
normalement être la nouvelle clé de parcours (voir Aide sur HFiltre) et tu
utilises CLETESTDOUBLON, ce qui n'est pas trop normal, mais bon ....
Enfin, après avoir changé ta clef de parcours, ce qui affiche ta table selon
cette clef, tu changes alors le fichier parcouru de la table, ce qui
réinitialise la table.
Ce qui me gène le plus, c'est que sur une table "fichier", tu fais un
tabletrie alors que tu viens d'appliquer un clef de parcours qui n'est pas
celle du filtre !
Pourquoi ne pas directement choisir la clef qui va bien ?

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
Avatar
mat
Ducados wrote:


Bonjour,
Je cherche et ne trouve point !
J'ai une fenêtre, avec dans sa partie supérieure, des champs de saisie qui
me permette d'introduire certains critères de filtrage.
Et en dessous une table.
A coté de mes champs de filtrage j'ai un bouton qui me permet de lancer la
recherche.
Le Problème est celui-ci :
A chaque fois que je lance la recherche, ma table se réaffiche 2x, on voit
nettement qu'elle s'affiche, s'éfface et se réaffiche aussi vite ?
C'est pas un gros problème, puisque le résultat est correct en final, mais
c'est quand même pas propre !



C'est que la ligne
Table..FichierParcouru="mariage" affiche la table, et TableAffiche le
fait une 2e fois. Un autre piège à ce propos c'est que
table..FichierParcouru positionne le curseur sur le premier
enregistrement et exécute le code de "selection d'une ligne".
Avatar
Ducados
Eh oui, on a encore beaucoup a apprendre.
C'est en forgeant qu'on devient forgeron !
Je dirai plus tot que c'est grace à l'aide de plusieurs d'entre vous, qui
prennent de leurs temps, pour nous aider et nous conseiller, que nous
pourrons (nous les débutants) un jour nous améliorer.
Bref, merci à Marcel et à Mat, qui m'ont donné la solution; J'ai supprimé
les 3 lg suivantes et tout fonctionne impec.
TableTrie("Table", "mdate")
TableAffiche(Table,taDébut)
EcranPremier(Table)

Salutation Daniel
Avatar
Roumegou Eric
Le 29/11/2004, Ducados a supposé :
Eh oui, on a encore beaucoup a apprendre.
C'est en forgeant qu'on devient forgeron !



Mais non maintenant on dit
c'est en allant sur WDforge que l'on devient forgeron
;o)

Je dirai plus tot que c'est grace à l'aide de plusieurs d'entre vous, qui
prennent de leurs temps, pour nous aider et nous conseiller, que nous
pourrons (nous les débutants) un jour nous améliorer.
Bref, merci à Marcel et à Mat, qui m'ont donné la solution; J'ai supprimé
les 3 lg suivantes et tout fonctionne impec.
TableTrie("Table", "mdate")
TableAffiche(Table,taDébut)
EcranPremier(Table)

Salutation Daniel



--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)