Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
une chtite recherche sur le Forum et Google ne m'ayant pas apporté de solution voici mon problème :
dans une DW l'utilisateur doit pouvoir sélectionner certaines lignes "à la windows" (avec les touches Ctrl et ou Shift) et ensuite les déplacer dans la même DW.
je sais le faire très facilement quand il s'agit d'une seule ligne mais quand on commence à pouvoir en prendre plusieurs ça fout la m....
je dois gérere tous les cas même les plus complexes du genre j'ai 10 lignes à l'écran, je sélectionne la 2, la 4, la 8 et la 9 et je dois toutes les déplacer après la ligne 5
mon problème viens du fait que dès que je déplace une ligne je modifie tout les numéros des autres lignes (si vous voyez ce que j'essaye péniblement de dire...)
y a pas une façon simple de coder ça ?
ça me fait penser à quand on doit effacer des lignes dans une liste, on le fait de bas en haut au lieu de haut en bas et on évite tout soucis, y aurai pas une astuce du genre ici ? ou un chtit bout de code tout fait ?
Hors ligne
Est ce que passer par une dw intermédiaire invisible pourrait te convenir?
Tu utilise le même dataobject.
Tu passe tes lignes par rowscopy à la dw invisible.
Tu réordonne tes lignes de la dw principales puis ré-importe tes lignes par rowscopy à la ligne 5 (pour reprendre ton exemple).
Faut juste faire gaffes au flags d'update si tu doit faire des update/insert par la suite.
Y'a peut être plus simple ou plus propre. Mais là, j'ai le cerveau qui commence à se vrillé.
Dernière modification par Van (29-07-2013 15:39:00)
Hors ligne
Bonjour,
Je doute qu'il y ait un code tout prêt qui fait cela.
Une astuce consisterait pas a avoir deux datawindows ?
Une émettrice l'autre qui reçoit plutôt que de tous faire dans la même.
C'est assez facile à vendre car l'utilisateur voit concrètement le résultat et le valide alors qu'avec une seule c'est moins claire s'il se trompe et avec ce type d'ergonomie cela arrive nécessairement.
Dernière modification par Dadone (29-07-2013 15:58:04)
Hors ligne
Salut et merci pour vos réponses
j'avais pensé à cette possibilité d'utiliser une 2ème DW mais c'était compliqué à mettre à place pour d'autres raisons ( et c'est l'utilisateur qui a spécifiquement demandé que ça se fasse dans UNE seule DW , même si je sais que j'aurai pu bricoler un truc caché)
Je pense que je vais m'en sortir avec du code mais au lieu d'essayer de faire tout d'un coup je vais faire ligne par ligne pour éviter de m'embrouiller dans mes n° de ligne.
genre : je parcours mes rows, si je tombe sur une row selected je la désélectionne puis je la déplace puis je recommence à parcourir mes rows du début et je continue tant qu'il y a des lignes selected.
un peu Quick&Dirty et pas optimisé mais pour mon besoin ça ira très bien je pense.
merci
Hors ligne
salut, j'arrive un peu tard sur le fil mais pourquoi ne pas collecter les rowid (getrowidfromrow) avant de déplacer puis pour chaque ligne on récupère le row a partir du rowid (getrowfromrowid) ?
Hors ligne
ces fonctions m'étaient sorties de la tête, merci pour l'info ;-)
Hors ligne