OVH Cloud OVH Cloud

[WD10] Avez-vous essayé ?

12 réponses
Avatar
STASZEWSKI André
Bonsoir

J'ai un comportement étrange et inquiétant avec une suppression multiple
dans une table fichier en utilisant TableSupprime()

Si vous utilisez cette commande pour supprimer un ensemble de ligne
sélectionnées dans une table fichier multi-sélection, vérifiez ceci :

Créez 5 nouveaux enregistrements avec un libellé simple :
A
B
C
D
E

Ensuite tout en maintenant la touche Ctrl enfoncée, cliquez successivement
dans la table sur les 3 lignes suivantes : E, A, C
Cela donne :
A 2
B
C 3
D
E 1

Cliquez enfin sur le bouton de supression donc le code traditionnel d'écrit
dans l'aide de WD est :

// Supprimer toutes les lignes sélectionnées dans la table

i est un entier

NbSelection est un entier = TableSelectOccurrence(TABLE)

POUR i = NbSelection A 1 PAS -1

TableSupprime(TABLE_CArrivée,TableSelect(TABLE,i))

FIN

Le résultat affiché dans la table devrait être :
B
D

Et bien chez moi le résultat est :
A
B

C'est très inquiétant car D a été supprimé sans mon consentement tandis que
A ne la pas été alors qu'il aurait dû !
Je précise que si on sélectionne les lignes dans l'ordre, par ex : A, C, E
le résultat sera bien B,D donc correct.

J'ai aussi essayé avec POUR TOUT ELEMENT SELECTIONNE DANS TABLE mais c'est
pareil...

Quelqu'un saurait comment contourner ce problème ?

--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph

10 réponses

1 2
Avatar
Réal Phil
Salut André,

J'ai fait le test en question.
Il ne faut pas oublier que ;
TableSelectOccurrence(MaTable)=nbre de sélections, soit 3 après la
sélection des trois lettres EAC et que
TableOccurrence(MaTable)=toutes les entrées dans la table, soit 5 au
début

Basé sur cette logique, j'ai testé le code suivant qui fonctionne
bien quel que soit l'ordre d'entrée des sélections.

I est entier
POUR I = 1 A TableOccurrence(MaTable)
TableSupprime(MaTable,TableSelect(MaTable,I))
FIN

Note: la Trace() suivante permet de constater que
TableOccurrence(MaTable) change dynamiquement sa valeur à mesure que
les lignes s'effacent - alors que dans d'autres langages cette valeur
serait resté la même parce que déclarée au début du POUR.
Pour le voir, placer "Trace(TableOccurrence(MaTable))" sur une ligne
juste dessous POUR I=1 A...

Tu me diras si ça fonctionne bien chez toi.

Réal Phil

Ensuite tout en maintenant la touche Ctrl enfoncée, cliquez successivem ent
dans la table sur les 3 lignes suivantes : E, A, C
Cela donne :
A 2
B
C 3
D
E 1

Cliquez enfin sur le bouton de supression donc le code traditionnel d'é crit
dans l'aide de WD est :

// Supprimer toutes les lignes sélectionnées dans la table

i est un entier

NbSelection est un entier = TableSelectOccurrence(TABLE)

POUR i = NbSelection A 1 PAS -1

TableSupprime(TABLE_CArrivée,TableSelect(TABLE,i))

FIN

Le résultat affiché dans la table devrait être :
B
D

Et bien chez moi le résultat est :
A
B

C'est très inquiétant car D a été supprimé sans mon consentemen t tandis que
A ne la pas été alors qu'il aurait dû !
Je précise que si on sélectionne les lignes dans l'ordre, par ex : A, C, E
le résultat sera bien B,D donc correct.

J'ai aussi essayé avec POUR TOUT ELEMENT SELECTIONNE DANS TABLE mais c' est
pareil...

Quelqu'un saurait comment contourner ce problème ?

--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 surwww.PlaneteDev.fr.st
Pour me contacter cliquez ici :http://cerbermail.com/?OT0Wnwyzph


Avatar
Réal Phil
Re-salut André,

Voici une deuxième solution de code beaucoup plus "propre" et qui
nécessite beaucoup moins de travail pour le logiciel parce qu'il se
rend directement aux sélections et les efface - de reculons - soit du
dernier vers le premier.
Comme on peut voir, on "profite" de TableSelectOccurrence(MaTable) qui
s'ajuste dynamiquement.

ePos est un entier
TANTQUE TableSelectOccurrence(MaTable)>0 // nbre de selections
ePos=TableSelect(MaTable,TableSelectOccurrence(MaTable))
// Trace(ePos,TableSelectOccurrence(MaTable))
TableSupprime(MaTable,ePos)
FIN

J'ai effectué plusieurs tests et les sélections s'effacent bien quel
que soit l'ordre de sélection.

Réal Phil
Avatar
news
il doit falloir mettre TableSelectOccurrence(TABLE) a la place de
nbselection
car TableSelectOccurrence(TABLE) est modifié a chaque fois

sinon rajouter une ligne dans la boucle
nbselection--

A confirmer

"STASZEWSKI André" a écrit dans le message de news:
45a55e8f$0$27380$
Bonsoir

J'ai un comportement étrange et inquiétant avec une suppression multiple
dans une table fichier en utilisant TableSupprime()

Si vous utilisez cette commande pour supprimer un ensemble de ligne
sélectionnées dans une table fichier multi-sélection, vérifiez ceci :

Créez 5 nouveaux enregistrements avec un libellé simple :
A
B
C
D
E

Ensuite tout en maintenant la touche Ctrl enfoncée, cliquez successivement
dans la table sur les 3 lignes suivantes : E, A, C
Cela donne :
A 2
B
C 3
D
E 1

Cliquez enfin sur le bouton de supression donc le code traditionnel
d'écrit
dans l'aide de WD est :

// Supprimer toutes les lignes sélectionnées dans la table

i est un entier

NbSelection est un entier = TableSelectOccurrence(TABLE)

POUR i = NbSelection A 1 PAS -1

TableSupprime(TABLE_CArrivée,TableSelect(TABLE,i))

FIN

Le résultat affiché dans la table devrait être :
B
D

Et bien chez moi le résultat est :
A
B

C'est très inquiétant car D a été supprimé sans mon consentement tandis
que
A ne la pas été alors qu'il aurait dû !
Je précise que si on sélectionne les lignes dans l'ordre, par ex : A, C, E
le résultat sera bien B,D donc correct.

J'ai aussi essayé avec POUR TOUT ELEMENT SELECTIONNE DANS TABLE mais c'est
pareil...

Quelqu'un saurait comment contourner ce problème ?

--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph




Avatar
STASZEWSKI André
Bonsoir
Même pb que avant mais j'apporte un précision supplémentaire : Voir le fil
plus bas

--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph

"news" a écrit dans le message de news:
94d5e$45a5cf5b$599cf009$

il doit falloir mettre TableSelectOccurrence(TABLE) a la place de
nbselection
car TableSelectOccurrence(TABLE) est modifié a chaque fois

sinon rajouter une ligne dans la boucle
nbselection--

A confirmer

"STASZEWSKI André" a écrit dans le message de news:
45a55e8f$0$27380$
> Bonsoir
>
> J'ai un comportement étrange et inquiétant avec une suppression multiple
> dans une table fichier en utilisant TableSupprime()
>
> Si vous utilisez cette commande pour supprimer un ensemble de ligne
> sélectionnées dans une table fichier multi-sélection, vérifiez ceci :
>
> Créez 5 nouveaux enregistrements avec un libellé simple :
> A
> B
> C
> D
> E
>
> Ensuite tout en maintenant la touche Ctrl enfoncée, cliquez


successivement
> dans la table sur les 3 lignes suivantes : E, A, C
> Cela donne :
> A 2
> B
> C 3
> D
> E 1
>
> Cliquez enfin sur le bouton de supression donc le code traditionnel
> d'écrit
> dans l'aide de WD est :
>
> // Supprimer toutes les lignes sélectionnées dans la table
>
> i est un entier
>
> NbSelection est un entier = TableSelectOccurrence(TABLE)
>
> POUR i = NbSelection A 1 PAS -1
>
> TableSupprime(TABLE_CArrivée,TableSelect(TABLE,i))
>
> FIN
>
> Le résultat affiché dans la table devrait être :
> B
> D
>
> Et bien chez moi le résultat est :
> A
> B
>
> C'est très inquiétant car D a été supprimé sans mon consentement tandis
> que
> A ne la pas été alors qu'il aurait dû !
> Je précise que si on sélectionne les lignes dans l'ordre, par ex : A, C,


E
> le résultat sera bien B,D donc correct.
>
> J'ai aussi essayé avec POUR TOUT ELEMENT SELECTIONNE DANS TABLE mais


c'est
> pareil...
>
> Quelqu'un saurait comment contourner ce problème ?
>
> --
> Cordialement,
> André STASZEWSKI
> (Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
> Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph
>
>




Avatar
STASZEWSKI André
Bonsoir

Réal, ta première solution est bonne si on s'en tiens à 5 lignes créées
Dans mon cas j'avais 8 lignes disposée ainsi :
X
Y
Z
A
B
C
D
E

Si tu refais l'expérience en sélectionnant dans l'ordre E,A,C avec ta 1ere
soluce il me reste X,Y,Z,A au lieu de X,Y,Z,B,D
Avec la 2eme soluce il ne reste plus rien toutes les lignes sont éffacées
Donc ça ne marche plus s'il y a des lignes avant !
Ca m'énerve ! je tourne en rond la-dessus depuis 3 jours et je n'ai pas de
solution !!
A l'AIDE !
--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph

"STASZEWSKI André" a écrit dans le message de news:
45a55e8f$0$27380$
Bonsoir

J'ai un comportement étrange et inquiétant avec une suppression multiple
dans une table fichier en utilisant TableSupprime()

Si vous utilisez cette commande pour supprimer un ensemble de ligne
sélectionnées dans une table fichier multi-sélection, vérifiez ceci :

Créez 5 nouveaux enregistrements avec un libellé simple :
A
B
C
D
E

Ensuite tout en maintenant la touche Ctrl enfoncée, cliquez successivement
dans la table sur les 3 lignes suivantes : E, A, C
Cela donne :
A 2
B
C 3
D
E 1

Cliquez enfin sur le bouton de supression donc le code traditionnel


d'écrit
dans l'aide de WD est :

// Supprimer toutes les lignes sélectionnées dans la table

i est un entier

NbSelection est un entier = TableSelectOccurrence(TABLE)

POUR i = NbSelection A 1 PAS -1

TableSupprime(TABLE_CArrivée,TableSelect(TABLE,i))

FIN

Le résultat affiché dans la table devrait être :
B
D

Et bien chez moi le résultat est :
A
B

C'est très inquiétant car D a été supprimé sans mon consentement tandis


que
A ne la pas été alors qu'il aurait dû !
Je précise que si on sélectionne les lignes dans l'ordre, par ex : A, C, E
le résultat sera bien B,D donc correct.

J'ai aussi essayé avec POUR TOUT ELEMENT SELECTIONNE DANS TABLE mais c'est
pareil...

Quelqu'un saurait comment contourner ce problème ?

--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph




Avatar
STASZEWSKI André
re,

avec ce code :

n est un entier

POUR TOUTE LIGNE SELECTIONNEE n DE TABLE

TableSupprime(TABLE,n)

FIN

Soit les lignes X,Y,Z,A,B,C,D,E
cliquez sur E,A,C et executer le code.
Il reste bien X,Y,Z,B,D
cliquez sur D,Z et executer le code.
Il reste X,Y,D au lieu de X,Y,B

j'enrage !
--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph

"STASZEWSKI André" a écrit dans le message de news:
45a6bc0a$0$27371$
Bonsoir

Réal, ta première solution est bonne si on s'en tiens à 5 lignes créées
Dans mon cas j'avais 8 lignes disposée ainsi :
X
Y
Z
A
B
C
D
E

Si tu refais l'expérience en sélectionnant dans l'ordre E,A,C avec ta 1ere
soluce il me reste X,Y,Z,A au lieu de X,Y,Z,B,D
Avec la 2eme soluce il ne reste plus rien toutes les lignes sont éffacées
Donc ça ne marche plus s'il y a des lignes avant !
Ca m'énerve ! je tourne en rond la-dessus depuis 3 jours et je n'ai pas de
solution !!
A l'AIDE !
--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph

"STASZEWSKI André" a écrit dans le message de news:
45a55e8f$0$27380$
> Bonsoir
>
> J'ai un comportement étrange et inquiétant avec une suppression multiple
> dans une table fichier en utilisant TableSupprime()
>
> Si vous utilisez cette commande pour supprimer un ensemble de ligne
> sélectionnées dans une table fichier multi-sélection, vérifiez ceci :
>
> Créez 5 nouveaux enregistrements avec un libellé simple :
> A
> B
> C
> D
> E
>
> Ensuite tout en maintenant la touche Ctrl enfoncée, cliquez


successivement
> dans la table sur les 3 lignes suivantes : E, A, C
> Cela donne :
> A 2
> B
> C 3
> D
> E 1
>
> Cliquez enfin sur le bouton de supression donc le code traditionnel
d'écrit
> dans l'aide de WD est :
>
> // Supprimer toutes les lignes sélectionnées dans la table
>
> i est un entier
>
> NbSelection est un entier = TableSelectOccurrence(TABLE)
>
> POUR i = NbSelection A 1 PAS -1
>
> TableSupprime(TABLE_CArrivée,TableSelect(TABLE,i))
>
> FIN
>
> Le résultat affiché dans la table devrait être :
> B
> D
>
> Et bien chez moi le résultat est :
> A
> B
>
> C'est très inquiétant car D a été supprimé sans mon consentement tandis
que
> A ne la pas été alors qu'il aurait dû !
> Je précise que si on sélectionne les lignes dans l'ordre, par ex : A, C,


E
> le résultat sera bien B,D donc correct.
>
> J'ai aussi essayé avec POUR TOUT ELEMENT SELECTIONNE DANS TABLE mais


c'est
> pareil...
>
> Quelqu'un saurait comment contourner ce problème ?
>
> --
> Cordialement,
> André STASZEWSKI
> (Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
> Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph
>
>




Avatar
Réal Phil
> Soit les lignes X,Y,Z,A,B,C,D,E
cliquez sur E,A,C et executer le code.
Il reste bien X,Y,Z,B,D
cliquez sur D,Z et executer le code.
Il reste X,Y,D au lieu de X,Y,B


========================= ====================
Salut André,

J'ai créé une deuxième table et ai suivi à la lettre les étapes
ci-dessus, puis j'ai exécuté ma soluce 2 ci-dessous

ePos est un entier
TANTQUE TableSelectOccurrence(MaTable2)>0 // nbre de selections
ePos=TableSelect(MaTable2,TableSelectOccurrence(MaTable2))
TableSupprime(MaTable2,ePos)
FIN

Et tout fonctionne parfaitement bien. Il reste bien au final X,Y,B

Peut-être est-ce un détail différent dans la description de la
fenêtre ou carrément un bug dans ta version de WD. Je suis encore en
version 8.

Tu as essayé de créer une nouvelle fenêtre? J'ai déjà eu des
problèmes de ce genre avec une fenêtre qui avait un comportement
illogique et en recréant la fenêtre tout est entré dans l'ordre.

Tu me le dis si tu as besoin de certains autres détails.

Bon courage.

Réal
Avatar
Réal Phil
> Tu as essayé de créer une nouvelle fenêtre? J'ai déjà eu des
problèmes de ce genre avec une fenêtre qui avait un comportement
illogique et en recréant la fenêtre tout est entré dans l'ordre.

Tu me le dis si tu as besoin de certains autres détails.

Bon courage.

Réal


========================= =============

... je voulais dire une nouvelle table et non une nouvelle fenêtre.

Réal
Avatar
STASZEWSKI André
Salut Réal

Je travail sur un projet composé de plans.
Dans chaque plan j'affiche une table fichier que j'alimente avec l'appel à
une fenêtre RAD classique (Fiche_Simple) pointant sur le fichier de
l'analyse.
Ce qui m'inquiète c'est que le phénomène se produit aussi dans les autres
tables de chaque plan !
J'essairai ce WE avec un projet nouveau, et le code ci-dessous...
ps: t'a regardé la BDR pour ton pb de fen ?

--
Cordialement,
André STASZEWSKI
(Gratuit) Photo Visu 3.1 sur www.PlaneteDev.fr.st
Pour me contacter cliquez ici : http://cerbermail.com/?OT0Wnwyzph


"Réal Phil" a écrit dans le message de news:

Tu as essayé de créer une nouvelle fenêtre? J'ai déjà eu des
problèmes de ce genre avec une fenêtre qui avait un comportement
illogique et en recréant la fenêtre tout est entré dans l'ordre.

Tu me le dis si tu as besoin de certains autres détails.

Bon courage.

Réal


=====================================
... je voulais dire une nouvelle table et non une nouvelle fenêtre.

Réal
Avatar
Réal Phil
> J'essairai ce WE avec un projet nouveau, et le code ci-dessous...
ps: t'a regardé la BDR pour ton pb de fen ?

--
Cordialement,
André STASZEWSKI


====================

J'ai bien vu comment ça fonctionne dans la BDR....
Ma réponse d'hier ne s'est jamais rendue ;-(
Voir la nouvelle réponse dans la zone en question.

Bye!

Réal Phil
1 2