Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Au secours !! Pb avec la propriété Recordset des Etats !!!

4 réponses
Avatar
News Groups
Bonjour à tous,

C'est un appel désespéré que je lance car j'ai beau tourner le problème dans
tous les sens je n'arrive pas une solution !! :-(( !!



Je déclare et affecte un jeu d'enregistrement à une variable "MonRst" de
type RecordSet :



Dim MonRst As RecordSet
...

Set MonRst = OpenRecordset...

...

Ensuite, à l'ouverture de mon état je base la source de celui ci sur le
recordset précédemment créé :

-- Private Sub Report_Open(Cancel As Integer)
-- Set Me.Recordset = MonRst

-- End Sub



Tous va bien, cela fonctionne,

SAUF !!: si je défini un groupe (avec entête de groupe) dans mon état : à ce
moment, plus aucune donnée n'est affichée !!!!...:-(



Quelqu'un peut-il m'aider, je suis tout dispo pour avoir la moindre piste !!

Merci par avance,

Thierry.

4 réponses

Avatar
Pierre CFI [mvp]
bonjour
tes bribes de code me laissent songeur, tu peux en mettre plus, et le but d'un recordset par rapport à une instruction sql dans la
source ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"News Groups" a écrit dans le message de news:413c8132$0$24260$
Bonjour à tous,

C'est un appel désespéré que je lance car j'ai beau tourner le problème dans
tous les sens je n'arrive pas une solution !! :-(( !!



Je déclare et affecte un jeu d'enregistrement à une variable "MonRst" de
type RecordSet :



Dim MonRst As RecordSet
...

Set MonRst = OpenRecordset...

...

Ensuite, à l'ouverture de mon état je base la source de celui ci sur le
recordset précédemment créé :

-- Private Sub Report_Open(Cancel As Integer)
-- Set Me.Recordset = MonRst

-- End Sub



Tous va bien, cela fonctionne,

SAUF !!: si je défini un groupe (avec entête de groupe) dans mon état : à ce
moment, plus aucune donnée n'est affichée !!!!...:-(



Quelqu'un peut-il m'aider, je suis tout dispo pour avoir la moindre piste !!

Merci par avance,

Thierry.









Avatar
News Groups
Tout d'abord, merci de t'intéresser à mon cas !!



Désolé, J'ai effectivement été très évasif dans un premier temps car l'
explication est un peu longue ! :

En fait je me place dans le cadre d'un projet ADP sous Access 2002, couplé
donc à SQL Server.

L'approche du problème est de ne pas utiliser une requête mais un recordset
comme source du sous état pour ne pas faire trop d'appels au niveau serveur
si possible (limiter le trafic réseau).

Le détail du problème s'appuie sur l'exemple suivant :

a.. Je souhaite éditer un état consistant en une liste des communications
téléphoniques passées par chaque employé, avec pour chacun d'eux un rappel
au début d'un tableau légende des codes locaux, ex : 04-91 - Marseille
Source de l'état principal : « SELECT
ZoneRegion,NomEmployé,Communication FROM COMM_TEL
WHERE ZoneRegion
= .»
· Le tableau légende est un sous état basé sur une requête du type :

« SELECT ZoneRegion ,CodeVille, NomVille FROM CODE_TEL »

· Les éditions se font par zones téléphoniques (ZoneRegion 01/02/03/04/05) et regroupée par employés, donc je définis un groupe à l'
aide du champ « Employé », et j'insère mon sous état dans l'en tête de ce
groupe en définissant comme champs de liaison Père/Fils : « ZoneRegion».

· Le Détail comportant la liste des communications.



A partir de là tout fonctionne : en première page de chaque groupe «
employé » apparaît mon tableau légende de la « ZoneRegion » sélectionné

Mais on constate donc que pour une édition donnée le sous état appelle la
requête source autant de fois qu'il y a d'employés sachant que le résultat
retourné ne varie pas car il ne dépend que du critère de départ «
ZoneRegion ».



Voilà pourquoi je veux pouvoir charger une seule fois (à l'ouverture de l'
état par exemple) dans un recordset le résultat de cette requête et utiliser
ce recordset comme source du sous état, ainsi pour chaque employé le sous
état fera appel aux données du recordset et non à celle du serveur.

Cela revient à pouvoir utiliser le Recordset comme une « table tampon » mise
en mémoire coté client.

Donc en résumé :

Source de l'état principal :

« SELECT ZoneRegion,NomEmployé,Communication FROM COMM_TEL WHERE ZoneRegion
= paramètre de sélection»

Source du sous état :

« SELECT ZoneRegion ,CodeVille, NomVille FROM CODE_TEL »

Tri de l'état principal :

Groupe [Employé]

Code :

' Déclaration globale du recordset

Public MonRst As New ADODB.Recordset

' Déclaration globale d'un indicateur dont la fonction est expliquée plus
tard

Public ChargerRecordset As Boolean

'sur ouverture de l'état principal

Private Sub Report_Open(Cancel As Integer)

Set MonRst = Open... 'ouverture du recorset

ChargerRecordset = True 'indique que le chargement du recordset est à faire

End Sub

'sur ouverture du sous état

Private Sub Report_Open(Cancel As Integer)

If ChargerRecordset Then

Set Me.Recordset = MonRst 'chargement du recorset comme source du sous
état

ChargerRecordset = False 'indique qu'à la prochaine ouverture du sous
état le chargement n'est plus à faire

End If

End Sub



Note : l'indicateur "ChargerRecordset » est nécessaire car le chargement du
recordset comme source du sous état se fait lors de la première ouverture du
sous état (premier Employé) et ne doit pas se refaire pour les suivants
(sinon un message d'erreur apparaît pour indiquer qu'il est impossible de
définir cela quand l'état est ouvert.)



Voilà pour tout le contexte, tout fonctionne correctement, MAIS.le problème
(afin !!) survient lorsque j'insère un en tête de groupe dans mon sous état
: à ce moment le sous état ne s'affiche plus à l'édition ???!!!



Voilà je sais que mes explications sont très longues (et peut - être pas
assez claires !), mais nécessaires pour bien comprendre l'ensemble.

La solution ne doit pas être évidente, je ne m'en sort pas !!, c'est
pourquoi je vous demande de l'aide notamment aux MVP de ce forum..



Merci encore d'apporter de l'eau à mon moulin ;-) .. !!

Thierry.





"Pierre CFI [mvp]" a écrit dans le message de
news: e#
bonjour
tes bribes de code me laissent songeur, tu peux en mettre plus, et le but
d'un recordset par rapport à une instruction sql dans la

source ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"News Groups" a écrit dans le message de
news:413c8132$0$24260$

Bonjour à tous,

C'est un appel désespéré que je lance car j'ai beau tourner le problème
dans


tous les sens je n'arrive pas une solution !! :-(( !!



Je déclare et affecte un jeu d'enregistrement à une variable "MonRst" de
type RecordSet :



Dim MonRst As RecordSet
...

Set MonRst = OpenRecordset...

...

Ensuite, à l'ouverture de mon état je base la source de celui ci sur le
recordset précédemment créé :

-- Private Sub Report_Open(Cancel As Integer)
-- Set Me.Recordset = MonRst

-- End Sub



Tous va bien, cela fonctionne,

SAUF !!: si je défini un groupe (avec entête de groupe) dans mon état :
à ce


moment, plus aucune donnée n'est affichée !!!!...:-(



Quelqu'un peut-il m'aider, je suis tout dispo pour avoir la moindre
piste !!



Merci par avance,

Thierry.













Avatar
News Groups
Je me permet de relancer le post pour demander de l'aide,

Merci encore,
Thierry


"Pierre CFI [mvp]" a écrit dans le message de
news: e#
bonjour
tes bribes de code me laissent songeur, tu peux en mettre plus, et le but
d'un recordset par rapport à une instruction sql dans la

source ?

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"News Groups" a écrit dans le message de
news:413c8132$0$24260$

Bonjour à tous,

C'est un appel désespéré que je lance car j'ai beau tourner le problème
dans


tous les sens je n'arrive pas une solution !! :-(( !!



Je déclare et affecte un jeu d'enregistrement à une variable "MonRst" de
type RecordSet :



Dim MonRst As RecordSet
...

Set MonRst = OpenRecordset...

...

Ensuite, à l'ouverture de mon état je base la source de celui ci sur le
recordset précédemment créé :

-- Private Sub Report_Open(Cancel As Integer)
-- Set Me.Recordset = MonRst

-- End Sub



Tous va bien, cela fonctionne,

SAUF !!: si je défini un groupe (avec entête de groupe) dans mon état :
à ce


moment, plus aucune donnée n'est affichée !!!!...:-(



Quelqu'un peut-il m'aider, je suis tout dispo pour avoir la moindre
piste !!



Merci par avance,

Thierry.













Avatar
News Groups
Je me permet de relancer le post pour demander de l'aide,
suite à la réponse de Pierre CFI , j'ai apporté un peu plus de détails à mon
problème,
en espérant que cela soit compréhensible....

Merci encore,
Thierry

"News Groups" a écrit dans le message de news:
413c8132$0$24260$
Bonjour à tous,

C'est un appel désespéré que je lance car j'ai beau tourner le problème
dans

tous les sens je n'arrive pas une solution !! :-(( !!



Je déclare et affecte un jeu d'enregistrement à une variable "MonRst" de
type RecordSet :



Dim MonRst As RecordSet
...

Set MonRst = OpenRecordset...

...

Ensuite, à l'ouverture de mon état je base la source de celui ci sur le
recordset précédemment créé :

-- Private Sub Report_Open(Cancel As Integer)
-- Set Me.Recordset = MonRst

-- End Sub



Tous va bien, cela fonctionne,

SAUF !!: si je défini un groupe (avec entête de groupe) dans mon état : à
ce

moment, plus aucune donnée n'est affichée !!!!...:-(



Quelqu'un peut-il m'aider, je suis tout dispo pour avoir la moindre piste
!!


Merci par avance,

Thierry.