Bonjour
Ce problème me chagrinait un peu alors je me suis livré à des petits tests
J'ai créé une fenêtre qui comporte 2 champs Table
TABLE_T_Données (3 colonnes) qui contient les enregistrement d'un fichier de données FIC (7 Enregistrements de 3 champs chacuns Donnée1 Donnée2 Donnée3)
TABLE_LigneSelect rempli par programmation contenant une une seule colonne
Les données contenues dans le FIC sont les suivantes
D1 A 1
D2 A 2
D3 A 1
D4 A 2
D5 A 1
D6 B 2
D7 A 1
Un bouton BtnRécup permet de récupérer les données des lignes sélectionnées de TABLE_T_Données et de les insérer dans TABLE_LigneSelect
Le code associé à ce bouton est le suivant
TableSupprimeTout(TABLE_LigneSelect)
POUR TOUTE LIGNE SELECTIONNEE nn DE TABLE_T_Données
TableAjouteLigne(TABLE_LigneSelect,TABLE_T_Données.COL_Donnée_1[nn])
FIN
Les 7 lignes sont visibles à l'écran
Si je sélectionne plusieurs lignes et que je clique sur le bouton BtnRécup alors les bonnes lignes sont "transcrites" dans TABLE_LigneSelect
Un bouton "BtnFiltre" est associé au code suivant
TableActiveFiltre(TABLE_T_Données.COL_Donnée_3,filtreEgal,"1")
TableActiveFiltre(TABLE_T_Données.COL_Donnée_2,filtreEgal,"A")
Dans la table TABLE_T_Données ne sont alors visible que 4 lignes
Si je sélectionne plusieurs lignes et que je clique sur le bouton BtnRécup alors les bonnes lignes sont "transcrites" dans TABLE_LigneSelect
Le clou du spectacle arrive, attachez vos ceintures :
Je réduit la hauteur de TABLE_T_Données de façon à ne voir que 2 lignes au maximum et je répète les opérations ci dessus
Je sélectionne D1, D5 et D7
Btn_Récup = OK j'ai bien D1, D5 et D7 dans TABLE_LigneSelect
Btn_Filtre = OK j'ai D1, D3, D5 et D7 dans TABLE_T_Données
Je sélectionnée D1, D5 et D7
Btn_Récup
Dans TABLE_LigneSelect j'ai D1,D3, D7
ligne contenant D3 est considérée comme ligne sélectionnée alors qu'elle n'a jamais été sélectionnée
ligne contenant D5 est considérée comme ligne non sélectionnée alors qu'elle était sélectionnée
Je vous laisse imaginer le m.... quand il y a 500 lignes sélectionnées et que l'on fait un traitement de mise à jour sur les enregistrements correspondant aux lignes sélectionnées : un carnage !!
Elle est pas belle la boulette ???