OVH Cloud OVH Cloud

SommeDom (DSum) avec comme source une variable

15 réponses
Avatar
fredonnon
Bonjour,

J'ouvre un formulaire avec une variable nomm=E9e stSource qui est une
requ=EAte SQL entre guillemets.

Je souhaite avoir la somme des enregistrements d'un champ
[MontantTotal] si le champ [Operateur]=3D'BT'. Dans le champ o=F9
s'affiche le r=E9sultat, j'ai mis

=3DSomDom("[MontantTotal]";"stSource";"[Op=E9rateur]=3D'BT'")

Maheureusement, cela me retourne #Erreur ?

Le probl=E8me vient s=FBrement du deuxi=E8me param=E8tre (stSource) qui
n'est pas le nom de la table du formulaire mais la requ=EAte SQL qui
donne les r=E9sultats escompt=E9s dans ce formulaire.

Y a t il un moyen de rem=E9dier au probl=E8me svp ? Merci pour vos
lumi=E8res.

Cordialement,

5 réponses

1 2
Avatar
3stone
Salut,

a écrit

Je connais peu la syntaxe,


une petite recherche dans l'aide, peut-être... ?



mais apparemment, je suis obligé de créer
une variable pour qu'il l'accepte et j'ai l'impression que je tourne en
rond, vu que tu m'as dit plus haut que je dvais absolument rentrer une
requête ou une table dans l'instruction SomDom.


'ouvrir ton form
stDocName = "F_DétailGSMparListeBranche"
DoCmd.OpenForm stDocName, , , , , acHidden

'attribuer la source (d'où quelle vienne...)
Forms.F_DétailGSMparListeBranche.RecordSource = stSource

'cree la requête tempo
CurrentDb.CreateQueryDef("Tempo", strSource)

' Lire ce que tu veux en utilisant la req "tempo"
machin =SomDom("[MontantTotal]";"Tempo";"[Opérateur]='BT'")


' supprimer la req "tempo"
DoCmd.DeleteObject acQuery, "tempo"


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
fredonnon
Bonjour 3stone,
Tu me dis :

"une petite recherche dans l'aide, peut-être... ? "

Je réponds que je ne suis pas du genre à rester les deux pieds dans
le même sabot et esssaye toujours de chercher une réponse dans l'aide
ou le forum avant de poster. Malheureusement pour moi, l'aide VBA est
réduite au strict minimum sur mon poste de travail, et CreateQuerydef
n'est pas dedans...

Comme je le disais, j'ai un message d'ereur qui m'empêche de créer la
requête temporaire, sans l'affecter à une variable. Donc, quand je
rentre la syntaxe que tu m'as donnée :

'cree la requête tempo
CurrentDb.CreateQueryDef("Temp­o", strSource)

le message "erreur de compilation. Attendu =" apparait

Pour ne pas avoir d'erreur, j'ai fait :

Set qdf = CurrentDb.CreateQueryDef("Tempo", strSource)
Forms.F_DétailGSMparListeBranche.RecordSource = qdf

Mais je tourne en rond car la source de mon formulaire devient une
variable, et donc je je ne peux pas avoir de résultat dans mon champ
de formulaire où je rentre comme source de contrôle :

=SomDom("[MontantTotal]";"Tempo";"[Opérateur]='BT'")

Bonne journée et bonne bronzette à ceux qui otn la chance de ne pas
être rivés sur leurs écrans !
Avatar
3stone
Bonjour 3stone,
Tu me dis :

"une petite recherche dans l'aide, peut-être... ? "

Je réponds que je ne suis pas du genre à rester les deux pieds dans
le même sabot et esssaye toujours de chercher une réponse dans l'aide
ou le forum avant de poster. Malheureusement pour moi, l'aide VBA est
réduite au strict minimum sur mon poste de travail, et CreateQuerydef
n'est pas dedans...


Il faut l'installer dans ce cas ;-)



Comme je le disais, j'ai un message d'ereur qui m'empêche de créer la
requête temporaire, sans l'affecter à une variable. Donc, quand je
rentre la syntaxe que tu m'as donnée :

'cree la requête tempo
CurrentDb.CreateQueryDef("Temp­o", strSource)

le message "erreur de compilation. Attendu =" apparait

Pour ne pas avoir d'erreur, j'ai fait :

Set qdf = CurrentDb.CreateQueryDef("Tempo", strSource)
Forms.F_DétailGSMparListeBranche.RecordSource = qdf



Je t'ai *déjà* corrigé cela...
Mais, si tu tiens à cette "méthode", je ne peut rien pour toi ;-)

As-tu activé la référence DAO et placé au dessus de ADO ?


--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
Avatar
fredonnon
J'ai demandé une installation de l'aide VBA mais je ne sais pas quand
je l'aurai !
Je ne souhaite pas forcément créer la variable qdf mais suivre ton
conseil mais alors, que veut dire le message d'erreur

erreur de compilation. Attendu =
dans VBA lorsque je tape

CurrentDb.CreateQueryDef("Temp­o", strSource)

et veux appuyer sur enter ?

références cochées dans VBA :
Visual Basic for Applications
Microsoft Access 9.0 Object Library
OLE Automation
Microsoft ActiveX Data Objects 2.1 Library

Ma base marche correctement mis à part ce message d'erreur dans VBA...

Merci pour ta réponse.

Bonne journée tout le monde
Avatar
3stone
re,


[...]
références cochées dans VBA :
Visual Basic for Applications
Microsoft Access 9.0 Object Library
OLE Automation
Microsoft ActiveX Data Objects 2.1 Library


**J'avais** dit :

"As-tu activé la référence DAO et placé au dessus de ADO ?"

donc, tu vas cocher "Microsoft DAO.xx Object Library"
et tu la remonte au dessus de (ce qui est ADO) :

"Microsoft ActiveX Data Objects 2.1 Library"




Ma base marche correctement mis à part ce message d'erreur dans VBA...

donc, elle ne fonctionne PAS correctement ;-)



--
A+
Pierre (3stone) Access MVP
Perso: http://users.skynet.be/accesshome/
Conseils MPFA: http://users.skynet.be/mpfa/
Email : http://www.cerbermail.com/?Xfg61Z3IQw
1 2