OVH Cloud OVH Cloud

Req analyse croisée

13 réponses
Avatar
Véronique DEFRAIN
Bonjour à tous,

Une requête analyse croisée (basée sur une req sélection) comme suit :

Recettes Classe1 Classe 2 Classe 3 etc
Crudités dateTP dateTP dateTP
Blanquette dateTP dateTP dateTP
etc

Le problème est le suivant :
Pour certaines recettes il y a plusieurs dateTP par classe, or n'apparaît
que la première ou la dernière selon la fonction choisie dans l'assistant.

Comment faire pour que toutes les dateTP concernant une même recette
et une même classe apparaissent les une sous les autres.

Merci de bien vouloir me venir en aide.
A bientôt

10 réponses

1 2
Avatar
Gilbert
Bonjour,

Une requête analyse croisée utilise le regroupement, il faut donc que tu
ajoute un champ qui te permet de différencier tes enregistrements (la clef
primaire ou un autre champ, tout dépend de la structure de ta table)

Gilbert


"Véronique DEFRAIN" a écrit dans
le message de news:
Bonjour à tous,

Une requête analyse croisée (basée sur une req sélection) comme suit :

Recettes Classe1 Classe 2 Classe 3 etc
Crudités dateTP dateTP dateTP
Blanquette dateTP dateTP dateTP
etc

Le problème est le suivant :
Pour certaines recettes il y a plusieurs dateTP par classe, or n'apparaît
que la première ou la dernière selon la fonction choisie dans l'assistant.

Comment faire pour que toutes les dateTP concernant une même recette
et une même classe apparaissent les une sous les autres.

Merci de bien vouloir me venir en aide.
A bientôt




Avatar
Eric
Bonjour,

En utilisant la fonction de Jessy {ConcatForQuery()}, que j'ai
outrageusement détournée et que tu trouveras ici :
http://access.jessy.free.fr/htm/Query/ConcatForQuery.htm

je te joins un exemple à cette adresse : http://cjoint.com/?dqsWzBHOZA
La base contient une table, la requête demandée et un module dans lequel
tu trouveras la fonction ConcatForQuery2(). L'originale y est aussi ;-)

Traitée avec la fonction (transformée) de Jessy, tu auras autant de
lignes que de recettes et à l'intersection d'une classe et d'une recette
toutes les dates voulues. Cela t'impose d'augmenter la hauteur des
lignes pour voir les dates.
Dans la requête Analyse croisée, la fonction de regroupement sur la
dateTP utilisée est Premier mais Dernier ou Min ou Max donnerait le même
résultat puisque cette fonction retourne une seule valeur de type String.

Bonjour à tous,

Une requête analyse croisée (basée sur une req sélection) comme suit :

Recettes Classe1 Classe 2 Classe 3 etc
Crudités dateTP dateTP dateTP
Blanquette dateTP dateTP dateTP
etc

Le problème est le suivant :
Pour certaines recettes il y a plusieurs dateTP par classe, or n'apparaît
que la première ou la dernière selon la fonction choisie dans l'assistant.

Comment faire pour que toutes les dateTP concernant une même recette
et une même classe apparaissent les une sous les autres.

Merci de bien vouloir me venir en aide.
A bientôt




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Véronique DEFRAIN
Bonjour à tous,

Désolée de répondre aussi tardivement, mais week-end oblige.

Un grand merci à Gilbert et à Eric pour leur réponse.

Je vais essayer la solution que Eric a la gentillesse de me proposer.

Encore merci et à bientôt


Bonjour,

En utilisant la fonction de Jessy {ConcatForQuery()}, que j'ai
outrageusement détournée et que tu trouveras ici :
http://access.jessy.free.fr/htm/Query/ConcatForQuery.htm

je te joins un exemple à cette adresse : http://cjoint.com/?dqsWzBHOZA
La base contient une table, la requête demandée et un module dans lequel
tu trouveras la fonction ConcatForQuery2(). L'originale y est aussi ;-)

Traitée avec la fonction (transformée) de Jessy, tu auras autant de
lignes que de recettes et à l'intersection d'une classe et d'une recette
toutes les dates voulues. Cela t'impose d'augmenter la hauteur des
lignes pour voir les dates.
Dans la requête Analyse croisée, la fonction de regroupement sur la
dateTP utilisée est Premier mais Dernier ou Min ou Max donnerait le même
résultat puisque cette fonction retourne une seule valeur de type String.

Bonjour à tous,

Une requête analyse croisée (basée sur une req sélection) comme suit :

Recettes Classe1 Classe 2 Classe 3 etc
Crudités dateTP dateTP dateTP
Blanquette dateTP dateTP dateTP
etc

Le problème est le suivant :
Pour certaines recettes il y a plusieurs dateTP par classe, or n'apparaît
que la première ou la dernière selon la fonction choisie dans l'assistant.

Comment faire pour que toutes les dateTP concernant une même recette
et une même classe apparaissent les une sous les autres.

Merci de bien vouloir me venir en aide.
A bientôt




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Véronique DEFRAIN
Bonjour Eric,

J'ai copié les 2 fonctions et modifié la req analyse croisée, cependant
j'obtiens le message suivant :

"Impossible d'avoir une fonction d'agrégat dans l'expression <expression>.
(Erreur 3095)
Vous ne pouvez pas utiliser unefonction d'agrégat dans cette expression."

Je suis autodidacte et me sers des assistant, je ne suis capable de faire
que très très peu de code.

Je pense que je ne sais pas adapter votre exemple à ma base de données sous
Access 2003.
D'autre part ma req analyse croisée est basée sur une req sélection et non pas
une table et possède quelques champs de plus que dans l' exemple de mon
premier message. Est-ce une des raisons pour lesquelles cela ne fonctionne
pas ?

Je vous remercie de bien vouloir me guider davantage.
A bientôt





Bonjour à tous,

Désolée de répondre aussi tardivement, mais week-end oblige.

Un grand merci à Gilbert et à Eric pour leur réponse.

Je vais essayer la solution que Eric a la gentillesse de me proposer.

Encore merci et à bientôt


Bonjour,

En utilisant la fonction de Jessy {ConcatForQuery()}, que j'ai
outrageusement détournée et que tu trouveras ici :
http://access.jessy.free.fr/htm/Query/ConcatForQuery.htm

je te joins un exemple à cette adresse : http://cjoint.com/?dqsWzBHOZA
La base contient une table, la requête demandée et un module dans lequel
tu trouveras la fonction ConcatForQuery2(). L'originale y est aussi ;-)

Traitée avec la fonction (transformée) de Jessy, tu auras autant de
lignes que de recettes et à l'intersection d'une classe et d'une recette
toutes les dates voulues. Cela t'impose d'augmenter la hauteur des
lignes pour voir les dates.
Dans la requête Analyse croisée, la fonction de regroupement sur la
dateTP utilisée est Premier mais Dernier ou Min ou Max donnerait le même
résultat puisque cette fonction retourne une seule valeur de type String.

Bonjour à tous,

Une requête analyse croisée (basée sur une req sélection) comme suit :

Recettes Classe1 Classe 2 Classe 3 etc
Crudités dateTP dateTP dateTP
Blanquette dateTP dateTP dateTP
etc

Le problème est le suivant :
Pour certaines recettes il y a plusieurs dateTP par classe, or n'apparaît
que la première ou la dernière selon la fonction choisie dans l'assistant.

Comment faire pour que toutes les dateTP concernant une même recette
et une même classe apparaissent les une sous les autres.

Merci de bien vouloir me venir en aide.
A bientôt




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
Eric
Bonjour Véronique,

Dans une requête analyse croisée, il peut y avoir 1 ou plusieurs champs
en entête de ligne, un seul champ en entete de colonne et un seul champ
en valeur. Donc, si les autres champs (1 je suppose) sont mis en entête
de ligne, ça ne pose pas de problème, que la source soit une requête
sélection ou une table, par contre il faudra modifier, peut-être, la
fonction.
Pour le champ mis en Valeur, appliquez la fonction comme sur mon exemple
Premier(fnConcat...) et choisir Expression sur la ligne Opération.

Si vous avez des problèmes, mettez sur www.cjoint.com une bd zippée
contenant les tables avec quelques données significatives, sous réserve
que cela ne soit pas confidentiel, et la requête.
Postez le lien ici
Je regarderai ce que je peux faire.



Bonjour Eric,

J'ai copié les 2 fonctions et modifié la req analyse croisée, cependant
j'obtiens le message suivant :

"Impossible d'avoir une fonction d'agrégat dans l'expression <expression>.
(Erreur 3095)
Vous ne pouvez pas utiliser unefonction d'agrégat dans cette expression."

Je suis autodidacte et me sers des assistant, je ne suis capable de faire
que très très peu de code.

Je pense que je ne sais pas adapter votre exemple à ma base de données sous
Access 2003.
D'autre part ma req analyse croisée est basée sur une req sélection et non pas
une table et possède quelques champs de plus que dans l' exemple de mon
premier message. Est-ce une des raisons pour lesquelles cela ne fonctionne
pas ?

Je vous remercie de bien vouloir me guider davantage.
A bientôt






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Véronique DEFRAIN
Bonjour Eric,

Comme vous me l'avez si gentiment proposé, voici le lien menant à
la base de données Recettes zippée contenant les tables, requêtes, état,
module
concernés par la fonction ConcatForQuéry2 :

http://cjoint.com/?dvkod2Aqcl

Merci et à bientôt


Bonjour Véronique,

Dans une requête analyse croisée, il peut y avoir 1 ou plusieurs champs
en entête de ligne, un seul champ en entete de colonne et un seul champ
en valeur. Donc, si les autres champs (1 je suppose) sont mis en entête
de ligne, ça ne pose pas de problème, que la source soit une requête
sélection ou une table, par contre il faudra modifier, peut-être, la
fonction.
Pour le champ mis en Valeur, appliquez la fonction comme sur mon exemple
Premier(fnConcat...) et choisir Expression sur la ligne Opération.

Si vous avez des problèmes, mettez sur www.cjoint.com une bd zippée
contenant les tables avec quelques données significatives, sous réserve
que cela ne soit pas confidentiel, et la requête.
Postez le lien ici
Je regarderai ce que je peux faire.



Bonjour Eric,

J'ai copié les 2 fonctions et modifié la req analyse croisée, cependant
j'obtiens le message suivant :

"Impossible d'avoir une fonction d'agrégat dans l'expression <expression>.
(Erreur 3095)
Vous ne pouvez pas utiliser unefonction d'agrégat dans cette expression."

Je suis autodidacte et me sers des assistant, je ne suis capable de faire
que très très peu de code.

Je pense que je ne sais pas adapter votre exemple à ma base de données sous
Access 2003.
D'autre part ma req analyse croisée est basée sur une req sélection et non pas
une table et possède quelques champs de plus que dans l' exemple de mon
premier message. Est-ce une des raisons pour lesquelles cela ne fonctionne
pas ?

Je vous remercie de bien vouloir me guider davantage.
A bientôt






--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
Bonjour Véronique,

J'avais oublié de préciser que j'étais sous Access2000 et la base est au
format 2002 ou 2003. Serait-il possible de la reposter au format 2000 ?
La compacter avant devrait réduire sa taille. Merci

Bonjour Eric,

Comme vous me l'avez si gentiment proposé, voici le lien menant à
la base de données Recettes zippée contenant les tables, requêtes, état,
module
concernés par la fonction ConcatForQuéry2 :

http://cjoint.com/?dvkod2Aqcl

Merci et à bientôt



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Véronique DEFRAIN
Rebonjour Eric,

Ci-dessous lien poour la base Recettes format Access 2000

http://cjoint.com/?dvodMHHqZq

Encore merci et à bientôt



Bonjour Véronique,

J'avais oublié de préciser que j'étais sous Access2000 et la base est au
format 2002 ou 2003. Serait-il possible de la reposter au format 2000 ?
La compacter avant devrait réduire sa taille. Merci

Bonjour Eric,

Comme vous me l'avez si gentiment proposé, voici le lien menant à
la base de données Recettes zippée contenant les tables, requêtes, état,
module
concernés par la fonction ConcatForQuéry2 :

http://cjoint.com/?dvkod2Aqcl

Merci et à bientôt



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,

J'ai corrigé la fonction car tu avais des guillemets (") dans les
contenus du champ [Nom Recette] et des quotes (') dans celui de Classe.
(du style Tournedos "façon" Rossini et classe BEP 1 ')
Il y a 2 dates pour une même recette et même classe. Il s'agit de
l'enregistrement 45 de la Requête RQ1. C'est le seul. Y en a-t-il
d'autres dans cet extrait ?
A l'ouverture de la bd, la requête est affichée et positionnée sur cette
enregistrement. Voir les 2 dates pour la classe BEP 2 B et catégorie 7:
03/10/06 & 05/10/06.
La macro est nommée Autoexec, tu pourras la supprimer dans l'onglet
Macros de la fenêtre de la bd.

lien retour : http://cjoint.com/?dvpO2aAxtW


Rebonjour Eric,

Ci-dessous lien poour la base Recettes format Access 2000

http://cjoint.com/?dvodMHHqZq

Encore merci et à bientôt




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Véronique DEFRAIN
Bonsoir Eric,

Pour répondre à votre question, effectivement, dans cet extrait, seul
l'enregistrement 45 est concerné par la concaténation.

J'ai copié le nouveau module dans ma base ainsi que l'expression dans la req
analyse croisée, mais je me trouve devant l'erreur suivante :

"Erreur d'exécution 94
Utilisation incorrecte de Null"

Donc la req analyse croisée ne s'ouvre pas et par contre, c'est le module
qui s'ouvre en débogage et dans le bloc if la ligne de code suivante est
surlignée en jaune :

strResult = .Fields(strConcat)

Qu'en pensez-vous ? Je suis désolée d'abuser encore de votre temps, mais
j'aimerais tellement que ça marche. Access a un côté magique pour une simple
utilisatrice comme moi, mais devant des problèmes aussi complexes je suis
totalement désemparée, je n'ai pas bien sûr les compétences nécessaires.

Bonne soirée
A bientôt


re,

J'ai corrigé la fonction car tu avais des guillemets (") dans les
contenus du champ [Nom Recette] et des quotes (') dans celui de Classe.
(du style Tournedos "façon" Rossini et classe BEP 1 ')
Il y a 2 dates pour une même recette et même classe. Il s'agit de
l'enregistrement 45 de la Requête RQ1. C'est le seul. Y en a-t-il
d'autres dans cet extrait ?
A l'ouverture de la bd, la requête est affichée et positionnée sur cette
enregistrement. Voir les 2 dates pour la classe BEP 2 B et catégorie 7:
03/10/06 & 05/10/06.
La macro est nommée Autoexec, tu pourras la supprimer dans l'onglet
Macros de la fenêtre de la bd.

lien retour : http://cjoint.com/?dvpO2aAxtW


Rebonjour Eric,

Ci-dessous lien poour la base Recettes format Access 2000

http://cjoint.com/?dvodMHHqZq

Encore merci et à bientôt




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




1 2