|
Monter/Descendre Ligne dans une table mémoire. |
Iniciado por Antoine GIDROL, abr., 21 2005 11:11 AM - 6 respostas |
| |
| | | |
|
| |
Publicado em abril, 21 2005 - 11:11 AM |
Bonjour,
Je cherche à remonter/descendre une ligne dans une table mémoire. Auriez vous un moyen rapide à mettre en place ?
Par exemple : j'ai une table avec :
ligne1 ligne2 ligne3
Je voudrais remonter ma ligne 3 en position 2 et je voudrais avoir au resultat donc :
ligne1 ligne3 ligne2
Pour le moment, je ne trouve comme solution, que d'inserer une nouvelle ligne2 apres la ligne3 puis de supprimer ma ligne2
existe t il une autre solution, plus simple ?
D'avance merci
Antoine |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 21 2005 - 12:02 PM |
je ne pense pas
Antoine GIDROL wrote:
Bonjour,
Je cherche à remonter/descendre une ligne dans une table mémoire. Auriez vous un moyen rapide à mettre en place ?
Par exemple : j'ai une table avec :
ligne1 ligne2 ligne3
Je voudrais remonter ma ligne 3 en position 2 et je voudrais avoir au resultat donc :
ligne1 ligne3 ligne2
Pour le moment, je ne trouve comme solution, que d'inserer une nouvelle ligne2 apres la ligne3 puis de supprimer ma ligne2
existe t il une autre solution, plus simple ?
D'avance merci
Antoine
|
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 21 2005 - 12:16 PM |
Antoine GIDROL a émis l'idée suivante :
Bonjour,
Je cherche à remonter/descendre une ligne dans une table mémoire. Auriez vous un moyen rapide à mettre en place ?
Par exemple : j'ai une table avec :
ligne1 ligne2 ligne3
Je voudrais remonter ma ligne 3 en position 2 et je voudrais avoir au resultat donc :
ligne1 ligne3 ligne2
Pour le moment, je ne trouve comme solution, que d'inserer une nouvelle ligne2 apres la ligne3 puis de supprimer ma ligne2
existe t il une autre solution, plus simple ?
D'avance merci
Antoine
ajoute une colonne cachée Num, contenant un numéro de ligne et trie la table sur cette colonne. il te suffit de changer le numéro, et de rafraichir la table pour changer l'ordre des lignes
Bertrand |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 21 2005 - 12:46 PM |
pour éviter l'ajout puis la suppression : quelque chose comme cela (je tape comme je parle et je n'ai jamais testé n'ayant pas Windev à portée de main)
nbre_colonne est un entier = tableoccurence(tatable,tocolonne) ligne_memoire est un tableau de nbre_colonne //pour stocker la ligne inférieure (là peut-etre problème si ta table contient nombre et chaine -> utilise le type variant!) de plus pour la syntaxe de mémoire je ne sais plus // i est un entier //numéro de colonne j est un entier //numéro de ligne à donner par exemple j = 2 dans ton exemple // pour i = 1 a nbre_colonne ligne_memoire[i] = table[j][i] //on stocke dans la variable tableau la ligne "j" table[j][i] = table[j + 1][i] // on alimente les cellules une à une de la ligne "j" table[j + 1][i] = ligne_memoire[i] //on réalimente la ligne "j+1" avec la variable tableau fin
A essayer, le principe doit être bon mais c'est sans garantie .... à voir si + rapide ou non que ta méthode.
Bon dev ...
Michel. |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 21 2005 - 1:01 PM |
Je viens de lire la réponse avec le numéro de ligne caché. Et oui le coup du numéro de ligne caché ! Encore + fort et sans doute + performant que ma solution. Comme quoi, développer en ermite n'est pas la solution.
Au fait : évidemnement, il faut toujour raffraîchir la table après MAJ.
Michel. |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 21 2005 - 5:15 PM |
Bonjour,
et merci de vos reponses.
Le numero de ligne caché est bien plus simple, je vais utiliser cette solution
Merci encore
Antoine
"Michel LION" <mlion@tele2.fr> a écrit dans le message de news:4267604c$1@news.pcsoft.fr...
Je viens de lire la réponse avec le numéro de ligne caché. Et oui le coup du numéro de ligne caché ! Encore + fort et sans doute +
performant que ma solution. Comme quoi, développer en ermite n'est pas la solution.
Au fait : évidemnement, il faut toujour raffraîchir la table après MAJ.
Michel.
|
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 21 2005 - 6:11 PM |
Antoine GIDROL a écrit :
Bonjour,
Je cherche à remonter/descendre une ligne dans une table mémoire. Auriez vous un moyen rapide à mettre en place ?
Par exemple : j'ai une table avec :
ligne1 ligne2 ligne3
Je voudrais remonter ma ligne 3 en position 2 et je voudrais avoir au resultat donc :
ligne1 ligne3 ligne2
Pour le moment, je ne trouve comme solution, que d'inserer une nouvelle ligne2 apres la ligne3 puis de supprimer ma ligne2
existe t il une autre solution, plus simple ?
D'avance merci
Antoine
Bonjour Antoine voici les deux méthodes de notre classe sur le sujet : :m_cNomTable est le nom de la table aliméntée pas paramètre au constructeur.
// Méthode qui va monter la ligne sélectionnée de la table PROCEDURE Monte() //Pour modifier la position d'une ligne, dans la liste, il ne faut en sélectionner qu'une. SI TableSelectOccurrence(:m_cNomTable)>1 ALORS Erreur(MessTraduit(5000)) RETOUR FIN i,PosCour sont des entier // on ne monte que les lignes > 1 SI TableSelect(:m_cNomTable)>1 ALORS // récupère l'indice en cours PosCour = TableSelect(:m_cNomTable) // ajoute une ligne tampon pour assuer le déplacement TableInsère(:m_cNomTable) // Déplace les valeurs POUR i=1 A TableOccurrence(:m_cNomTable,toColonne) {:m_cNomTable,indChamp}[PosCour][i] = {:m_cNomTable,indChamp}[Poscour -1][i] {:m_cNomTable,indChamp}[PosCour -1][i] = {:m_cNomTable,indChamp}[PosCour + 1][i] FIN // supprime la ligne inutile TableSupprime(:m_cNomTable,PosCour +1) // repositionne la sélection TableSelectMoins(:m_cNomTable,poscour) TableSelectPlus(:m_cNomTable,PosCour - 1) FIN
// Méthode qui va déscendre la ligne sélectionnée de la table PROCEDURE Descend() //Pour modifier la position d'une ligne, dans la liste, il ne faut en sélectionner qu'une. SI TableSelectOccurrence(:m_cNomTable)<>1 ALORS Erreur(MessTraduit(5000)) RETOUR FIN i,PosCour sont des entier // on ne descend que les lignes < dernière SI TableSelect(:m_cNomTable)< TableOccurrence(:m_cNomTable) ALORS // ajoute une ligne tampon pour assuer le déplacement TableInsert(:m_cNomTable,"",TableSelect(:m_cNomTable)+1) // récupère l'indice en cours PosCour = TableSelect(:m_cNomTable) // Déplace les valeurs POUR i=1 A TableOccurrence(:m_cNomTable,toColonne) {:m_cNomTable,indChamp}[PosCour +1][i] = {:m_cNomTable,indChamp}[PosCour][i] {:m_cNomTable,indChamp}[PosCour][i] = {:m_cNomTable,indChamp}[PosCour + 2][i] FIN // supprime la ligne inutile TableSupprime(:m_cNomTable,PosCour + 2) // repositionne la sélection TableSelectMoins(:m_cNomTable,PosCour) TableSelectPlus(:m_cNomTable,PosCour + 1) FIN
++ R&B WDForge.org |
| |
| |
| | | |
|
| | | | |
| | |
|