La méthode
GetGroupState de
TClientDataSet renvoie une information sur la position de l'enregistrement en cours par rapport au groupe en cours ( Premier, Milieu, Dernier, Premier et Dernier, voir pour cela
DefIndexs ou
AddIndex et
GroupingLevel ) Soit !
Quelqu'un at-il tenté d'utiliser cela pour grouper des enregistrements comme le ferait la clause Group by d'une requête ?
J'ai essayé sans succès les solutions suivantes :
A - Définir un champ calculé (
Premier : Boolean par exemple ) et le mettre à
true si
GetGroupState me dit que je suis sur le premier en registrement du groupe .
Ca marche mais au moment de filtrer l'ensemble sur
Premier tous les enregistrements sont filtrés ! ( L'ensemble semble vide ). Le résultat est le même quand
Premier est défini comme
champs calculé interne.
B - Cloner l'ensemble de donnée et renseigner le champs calculé (
Premier : Boolean) du nouvel ensemble ( nouveau curseur en fait ) avec le résultat de la méthode
GetGroupState du premier ensemble ( premier curseur ), après avoir fait un
locate sur le premier ensemble pour synchroniser les enregistrements.
Ca marche jusque là mais le deuxième curseur ne filtre pas ( sans message d'erreur d'ailleurs).
C- Proceder comme pour
B mais copier le
Data du premier ensemble au lieu de le cloner. Là ca marche. Mais cette solution ne convient pas dans mon cas.
En effet, l'ensemble de donnée sous-jacent ( structure imposée ) n'a pas de clé primaire et pas de champs permettant d'en composer une non plus. De ce fait je suis dans l'impossibilité de localiser dans le premier ensemble l'enregistrement à synchronizer avant de renseigner
Premier du second ensemble. ( à moins d'utiliser
RecNo ? Tiens !)
Une requête permetterait bien entendu de faire ça mais je laisse cette solution en dernier recours.
Partager