Bonjour
j'édite deux tables T1 et T2 liées par le champ MasterFields/Mastersource afin d'exprimer l'équivalent d'une jointure. T2.mastersource=T1.DS1.
Les tables sont définies par des TClientDataSet (DS1 et DS2) au format XML, créés à la volée. (les dataset sont créés dynamiquement mais les tables sont chargées depuis des fichiers XML)
La table principale T1 est affichée via un DbGrid (DBGrid1) et la table dépendante T2 via un DBGrid2.
Je souhaite activer l'option dgMultiSelect sur le DbGrid2. Ceci entraîne la création de bookmark sur le DS2. Si je sélectionne plusieurs lignes, (plusieurs bookmark) sur DS2 et que je clique sur dbgrid1, cela change la ligne active de T1 et déclenche la mise à jour des ligne de la table T2 (par le biais des propriétés MasterSource/MasterField).
C'est ici que les problèmes commencent car les bookmarks sur DS2 restent alloués (dbgrid2.selectedrows.count > 0) et si j'accède au bookmark, ça plante avec l'erreur enreg non trouvé. Or dans l'évenement ds2.ondatasetchange, j'accède à ces bookmark (besoins de l'appli).
Si je tente d'insérer une déselection des lignes de DS2 dans le clic du dbgrid1, l'évenement est quand même traité après l'évenement ds2.ondatasetchange.
Je sais, c'est un peu compliqué et quelque peu spécifique, mais si quelqu'un a rencontré le même problème...
L'idéal serait que je mette en ligne le code, mais pour l'instant il est noyé dans une grosse appli et ça demande un peu de boulot pour extraire juste la partie litigieuse. Si cela intéresse quelqu'un je ferai cet effort.![]()
Partager