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

Erreur de syntaxe Dsum

4 réponses
Avatar
dragi
Bonjour tout le monde,
Après avoir lu beaucoup de post sur Dsum ici et ailleurs, je ne trouve pas la solution à mon problème. Je possède une requête qui me donne par prestataire, par année et par mois un nombre d'études prévues. Je souhaiterai obtenir un cumul de ce nombre d'études par mois, pour une année donnée et une entreprise donnée.
J'arrive à obtenir le cumul par mois pour une année donnée sans problème, mais dès que j'insère le champ du prestataire comme critère, j'obtiens le mot #Erreur dans mon champ Cumul.
Quand j'approche ma souris de la case #Erreur, Access m'affiche un message d'erreur différent selon l'endroit où je suis dans ma feuille de données !!!
Pour le premier prestataire qui s'affiche j'obtiens :

"L'expression entrée en paramètre est à l'origine de l'erreur suivante : L'objet ne contient pas d'objet d'automatisation z"

Pour les autres prestataires j'obtiens :

"Erreur de syntaxe (opérateur absent) dans l'expression mois <= x And annee = y and presta = z"

Je pense que la 2e erreur est due au fait qu'il y a un espace dans la chaîne de caractères composant mon champ prestataire, mais je ne comprends pas ce que signifie "l'objet d'automatisation".
Voici ma requête qui porte sur la requete essai :
SELECT [essai].Prestataire, [essai].ANNEE, [essai].MOIS, DSum("[Nb E prévues]","essai","MOIS <=" & [essai].[MOIS] & "And ANNEE = " & [essai].[ANNEE] & "And Prestataire = " & [essai].Prestataire] & "") AS Cumul
FROM [essai]
GROUP BY [essai].Prestataire, [essai].ANNEE, [essai].MOIS;
Ne sachant pas très bien utiliser DSum, je voudrais savoir comment faire pour que la fonction fasse abstraction des espaces dans la chaine de caractères et que signifie l'erreur de "l'objet d'automatisation".
Merci d'avance
PS : Je suis sous Access 2000

4 réponses

Avatar
dragi
dragi a écrit le 23/04/2009 à 14h23 :
Bonjour tout le monde,
Après avoir lu beaucoup de post sur Dsum ici et ailleurs, je ne trouve
pas la solution à mon problème. Je possède une
requête qui me donne par prestataire, par année et par mois un
nombre d'études prévues. Je souhaiterai obtenir un cumul de ce
nombre d'études par mois, pour une année donnée et une
entreprise donnée.
J'arrive à obtenir le cumul par mois pour une année donnée
sans problème, mais dès que j'insère le champ du
prestataire comme critère, j'obtiens le mot #Erreur dans mon champ
Cumul.
Quand j'approche ma souris de la case #Erreur, Access m'affiche un message
d'erreur différent selon l'endroit où je suis dans ma feuille de
données !!!
Pour le premier prestataire qui s'affiche j'obtiens :

"L'expression entrée en paramètre est à l'origine de
l'erreur suivante : L'objet ne contient pas d'objet d'automatisation z"

Pour les autres prestataires j'obtiens :

"Erreur de syntaxe (opérateur absent) dans l'expression mois <=
x And annee = y and presta = z"

Je pense que la 2e erreur est due au fait qu'il y a un espace dans la
chaîne de caractères composant mon champ prestataire, mais je ne
comprends pas ce que signifie "l'objet d'automatisation".
Voici ma requête qui porte sur la requete essai :
SELECT [essai].Prestataire, [essai].ANNEE, [essai].MOIS, DSum("[Nb E
prévues]","essai","MOIS <=" &
[essai].[MOIS] & "And ANNEE = " & [essai].[ANNEE] &
"And Prestataire = " & [essai].Prestataire] & "")
AS Cumul
FROM [essai]
GROUP BY [essai].Prestataire, [essai].ANNEE, [essai].MOIS;
Ne sachant pas très bien utiliser DSum, je voudrais savoir comment faire
pour que la fonction fasse abstraction des espaces dans la chaine de
caractères et que signifie l'erreur de "l'objet
d'automatisation".
Merci d'avance
PS : Je suis sous Access 2000


En me relisant je me rends compte de mes erreurs...
J'ai essayé une autre requete (beaucoup plus simple)
SELECT DATE.MOIS, DSum("[Nb E prévues]","Pilotage1Presta essai","MOIS <=" & [DATE].[MOIS] & "And ANNEE 08" & "And Prestataire = 'BIR'" & "") AS Cumul
FROM [DATE], [Pilotage1Presta essai]
GROUP BY DATE.MOIS;

avec DATE une table avec un champ MOIS et un champ ANNEE.
Là ça marche.
Mon but en fait est de permettre le choix de ANNEE et de Prestataire à l'utilisateur.
Donc de remplacer 2008 et 'BIR' par le résultat d'un contrôle (liste déroulante).

SELECT DATE.MOIS, DSum("[Nb E prévues]","Pilotage1Presta essai","MOIS <=" & [DATE].[MOIS] & "And ANNEE =" & [Formulaires]![Tableau de Bord par Entreprise]![Liste0] & "And Prestataire =" & [Formulaires]![Tableau de Bord par Entreprise]![Modifiable4] & "") AS Cumul
FROM [DATE], [Pilotage1Presta essai]
GROUP BY DATE.MOIS;

Mais bien sur, en faisant ce changement ça marche plus, ile me reparle d'objet d'automatisation...
Quelqu'un a une idée ? Merci :)
Avatar
3stone
Salut,

C'est une super mauvaise idée d'utiliser comme nom de champ
tout ces noms de fonctions qui sont noms réservés...

http://support.microsoft.com/kb/286335/fr?spid%09&sida8

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)




dragi wrote:
dragi a écrit le 23/04/2009 à 14h23 :
Bonjour tout le monde,
Après avoir lu beaucoup de post sur Dsum ici et ailleurs, je ne
trouve pas la solution à mon problème. Je possède une
requête qui me donne par prestataire, par année et par mois un
nombre d'études prévues. Je souhaiterai obtenir un cumul de ce
nombre d'études par mois, pour une année donnée et une
entreprise donnée.
J'arrive à obtenir le cumul par mois pour une année donnée
sans problème, mais dès que j'insère le champ du
prestataire comme critère, j'obtiens le mot #Erreur dans mon champ
Cumul.
Quand j'approche ma souris de la case #Erreur, Access m'affiche un
message d'erreur différent selon l'endroit où je suis dans ma
feuille de
données !!!
Pour le premier prestataire qui s'affiche j'obtiens :

"L'expression entrée en paramètre est à l'origine de
l'erreur suivante : L'objet ne contient pas d'objet d'automatisation
z"

Pour les autres prestataires j'obtiens :

"Erreur de syntaxe (opérateur absent) dans l'expression mois < >> x And annee = y and presta = z"

Je pense que la 2e erreur est due au fait qu'il y a un espace dans la
chaîne de caractères composant mon champ prestataire, mais je ne
comprends pas ce que signifie "l'objet d'automatisation".
Voici ma requête qui porte sur la requete essai :
SELECT [essai].Prestataire, [essai].ANNEE, [essai].MOIS, DSum("[Nb E
prévues]","essai","MOIS <=" &
[essai].[MOIS] & "And ANNEE = " & [essai].[ANNEE] &
"And Prestataire = " & [essai].Prestataire] & "")
AS Cumul
FROM [essai]
GROUP BY [essai].Prestataire, [essai].ANNEE, [essai].MOIS;
Ne sachant pas très bien utiliser DSum, je voudrais savoir comment
faire pour que la fonction fasse abstraction des espaces dans la
chaine de caractères et que signifie l'erreur de "l'objet
d'automatisation".
Merci d'avance
PS : Je suis sous Access 2000


En me relisant je me rends compte de mes erreurs...
J'ai essayé une autre requete (beaucoup plus simple)
SELECT DATE.MOIS, DSum("[Nb E prévues]","Pilotage1Presta essai","MOIS
<=" & [DATE].[MOIS] & "And ANNEE 08" & "And Prestataire = 'BIR'" &
"") AS Cumul FROM [DATE], [Pilotage1Presta essai]
GROUP BY DATE.MOIS;

avec DATE une table avec un champ MOIS et un champ ANNEE.
Là ça marche.
Mon but en fait est de permettre le choix de ANNEE et de Prestataire à
l'utilisateur.
Donc de remplacer 2008 et 'BIR' par le résultat d'un contrôle (liste
déroulante).

SELECT DATE.MOIS, DSum("[Nb E prévues]","Pilotage1Presta essai","MOIS
<=" & [DATE].[MOIS] & "And ANNEE =" & [Formulaires]![Tableau de Bord
par Entreprise]![Liste0] & "And Prestataire =" &
[Formulaires]![Tableau de Bord par Entreprise]![Modifiable4] & "") AS
Cumul
FROM [DATE], [Pilotage1Presta essai]
GROUP BY DATE.MOIS;

Mais bien sur, en faisant ce changement ça marche plus, ile me
reparle d'objet d'automatisation...
Quelqu'un a une idée ? Merci :)


Avatar
dragi
dragi a écrit le 23/04/2009 à 14h23 :
Bonjour tout le monde,
Après avoir lu beaucoup de post sur Dsum ici et ailleurs, je ne trouve
pas la solution à mon problème. Je possède une
requête qui me donne par prestataire, par année et par mois un
nombre d'études prévues. Je souhaiterai obtenir un cumul de ce
nombre d'études par mois, pour une année donnée et une
entreprise donnée.
J'arrive à obtenir le cumul par mois pour une année donnée
sans problème, mais dès que j'insère le champ du
prestataire comme critère, j'obtiens le mot #Erreur dans mon champ
Cumul.
Quand j'approche ma souris de la case #Erreur, Access m'affiche un message
d'erreur différent selon l'endroit où je suis dans ma feuille de
données !!!
Pour le premier prestataire qui s'affiche j'obtiens :

"L'expression entrée en paramètre est à l'origine de
l'erreur suivante : L'objet ne contient pas d'objet d'automatisation z"

Pour les autres prestataires j'obtiens :

"Erreur de syntaxe (opérateur absent) dans l'expression mois <=
x And annee = y and presta = z"

Je pense que la 2e erreur est due au fait qu'il y a un espace dans la
chaîne de caractères composant mon champ prestataire, mais je ne
comprends pas ce que signifie "l'objet d'automatisation".
Voici ma requête qui porte sur la requete essai :
SELECT [essai].Prestataire, [essai].ANNEE, [essai].MOIS, DSum("[Nb E
prévues]","essai","MOIS <=" &
[essai].[MOIS] & "And ANNEE = " & [essai].[ANNEE] &
"And Prestataire = " & [essai].Prestataire] & "")
AS Cumul
FROM [essai]
GROUP BY [essai].Prestataire, [essai].ANNEE, [essai].MOIS;
Ne sachant pas très bien utiliser DSum, je voudrais savoir comment faire
pour que la fonction fasse abstraction des espaces dans la chaine de
caractères et que signifie l'erreur de "l'objet
d'automatisation".
Merci d'avance
PS : Je suis sous Access 2000


Bonjour,
Je ne pense pas que le problème vienne du nom que je donne à mes mois ou à mes dates, tout mon programme fonctionne parfaitement comme ça, le seul problème vient de cette fonction DSum. Mon cumul par mois pour une année donné fonctionne impec, donc ça vient bien du champ Prestataire, qui n'est pas un mot réservé.
Une autre idée ?
Avatar
dragi
dragi a écrit le 23/04/2009 à 14h23 :
Bonjour tout le monde,
Après avoir lu beaucoup de post sur Dsum ici et ailleurs, je ne trouve
pas la solution à mon problème. Je possède une
requête qui me donne par prestataire, par année et par mois un
nombre d'études prévues. Je souhaiterai obtenir un cumul de ce
nombre d'études par mois, pour une année donnée et une
entreprise donnée.
J'arrive à obtenir le cumul par mois pour une année donnée
sans problème, mais dès que j'insère le champ du
prestataire comme critère, j'obtiens le mot #Erreur dans mon champ
Cumul.
Quand j'approche ma souris de la case #Erreur, Access m'affiche un message
d'erreur différent selon l'endroit où je suis dans ma feuille de
données !!!
Pour le premier prestataire qui s'affiche j'obtiens :

"L'expression entrée en paramètre est à l'origine de
l'erreur suivante : L'objet ne contient pas d'objet d'automatisation z"

Pour les autres prestataires j'obtiens :

"Erreur de syntaxe (opérateur absent) dans l'expression mois <=
x And annee = y and presta = z"

Je pense que la 2e erreur est due au fait qu'il y a un espace dans la
chaîne de caractères composant mon champ prestataire, mais je ne
comprends pas ce que signifie "l'objet d'automatisation".
Voici ma requête qui porte sur la requete essai :
SELECT [essai].Prestataire, [essai].ANNEE, [essai].MOIS, DSum("[Nb E
prévues]","essai","MOIS <=" &
[essai].[MOIS] & "And ANNEE = " & [essai].[ANNEE] &
"And Prestataire = " & [essai].Prestataire] & "")
AS Cumul
FROM [essai]
GROUP BY [essai].Prestataire, [essai].ANNEE, [essai].MOIS;
Ne sachant pas très bien utiliser DSum, je voudrais savoir comment faire
pour que la fonction fasse abstraction des espaces dans la chaine de
caractères et que signifie l'erreur de "l'objet
d'automatisation".
Merci d'avance
PS : Je suis sous Access 2000


J'ai trouvé la réponse ailleurs, il manquait des quotes...

SELECT [essai].Prestataire, [essai].ANNEE, [essai].MOIS, DSum("[Nb E
prévues]","essai","MOIS <=" &
[essai].[MOIS] & "And ANNEE = " & [essai].[ANNEE] &
"And Prestataire = '" & [essai].Prestataire] & "'")
AS Cumul
FROM [essai]
GROUP BY [essai].Prestataire, [essai].ANNEE, [essai].MOIS;
++