Aidez moi sur les requetes VB

Résolu
penny05
Messages postés
105
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2007
- 19 sept. 2006 à 11:58
rvblog
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
- 19 sept. 2006 à 15:18
Bonjour à tous,

Je souhaite effectuer un calcul après exécution d'une requete par code VB sous la forme suivante.
Private Sub filtreflotte_AfterUpdate()
' calcul de valeurs
Dim somh As Currency
Dim dep As Currency
Mise en place de la requete
Dim Mabd As Database
Dim requete1 As QueryDef
Dim sql As String
'on effectue la base de la requête
sql = "SELECT * FROM essai WHERE essai.flotte= '" & Me.filtreflotte & "'"
'lancement de la requête
Set Mabd = currentdb
Set requete1 = Mabd.CreateQueryDef("pondere", sql)
DoCmd.OpenQuery ("pondere")
'mettre la somme de champs dans les objets suivants
somh = DSum(pondere.hours, pondere)
dep = DSum(pondere.NonProg, pondere)
End Sub

Cela me renvoie l'erreur "object requis"  lorsque je veux executer la fonction Dsum.
Que dois je faire, cela est il dû a une erreur de syntaxe????

Merci d'avance.

Penny

16 réponses

rvblog
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
6
19 sept. 2006 à 14:00
Salut 726848 penny05, salut =89254 jrivet, salut 190022 geobasic,

penny05 a du flair,

je n'ai rien testé, juste lu.
Ma 1ère impression, c'est que l'erreur "object requis" ne survient pas quand tu cherches à utiliser la DSUM, mais plutôt quand tu cherches à manipuler la variable pondere (que tu n'as d'ailleurs pas déclarée, et qui devrait être du type QueryDef, je pense).

Il est possible qu'elle soit à la valeur Nothing (mets un point d'arrêt et un espion, tu y verras plus clair)(en fait, j'en suis presque sûr, mais je n'ai pas testé). Tu devras peut-être donc rajouter une affectation de référence du genre :

Set pondere = MaBD.QueryDefs("pondere")

Il est aussi possible que VB n'arrive pas à résoudre la référence, auquel cas il faudrait écrire quelque chose du genre : MaBD.pondere (mais je ne suis pas sûr que l'objet QueryDef soit une propriété de l'objet DataBase, accessible directement, sans passer par la collection [instance intrinsèque, comme Text1, dans Text1.Text qui est en fait Me.Text1.Text, ou même Me.Controls.Items("Text1").Text, blabla, blabla...]), comme quand on manipule Excel.Application et Excel.Workbooks, il nous faut écrire xlApp.Workbooks("Machin").Sheets("Feuil1") et pas Feuil1 comme nous le montrerait l'enregistreur de macros.

voilà, pour l'instant,
à+

PS: pardon pour le speach, j'avais un peu plus de 2s.
PS2 : j'ai adapté ma devise, parce que maitenant, si t'es en page 4, c'est que t'es mort :)

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
3
geobasic
Messages postés
69
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
3 octobre 2006

19 sept. 2006 à 14:17
Ok vu. Excuse moi je cherchais en vain la fonction Dsum dans VB, effectivement on ne la trouve que dans VBA Access. En fait la syntaxe  correcte devrait être  somh = Dsum("pondere!hours","pondere")  car les arguements demandés sont des chaînes !
3
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
19 sept. 2006 à 12:09
Salut,

Il nous manque quelque informations:
1- Qu est ce que DSum  (Une fonction je suppose) = > Si oui que prend t'elle en parametres
2- Lorsque tu fait l'appel a DSum Tu marques pondere.Hours de quel type est ta variable pondere.

Il faudrait nous donné DSUm.

Peu etre peu tu essayer
somh = DSum(requete1.hours, requete1)

@+,   Ju£i?n
0
penny05
Messages postés
105
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2007
2
19 sept. 2006 à 12:34
alors la fonction Dsum effectue la somme des champs d'une table ou formulaire etc..
elle se présente sous la forme suivante: Dsum ( champ , table, le critère si on veut)
donc une fois que je crée la requete
Set requete1 = Mabd.CreateQueryDef("pondere", sql)
qui s'appelle donc pondere,
je fais
somh = DSum(pondere.hours, pondere) qui effectue la somme des heures du champ heures de la table pondere qui sera créée par la requete.
et donc somh = DSum(requete1.hours, requete1) me donne une erreur de compilation "membre ou méthode introuvable"

Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
geobasic
Messages postés
69
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
3 octobre 2006

19 sept. 2006 à 12:38
La bonne syntaxe c'est somh = DSum(requete1!hours, requete1)
0
penny05
Messages postés
105
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2007
2
19 sept. 2006 à 12:45
Cela ne marche pas pour autant
j'ai l'erreur incompatibilité de type.
si je l'a nomme pondere cette requete par
Set requete1 = Mabd.CreateQueryDef("pondere", sql)
ca ne devrait pas nécessiter de mettre
somh = DSum(requete1!hours, requete1)
0
geobasic
Messages postés
69
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
3 octobre 2006

19 sept. 2006 à 12:51
Il faudrait que tu nous donne la définition exacte de la fonction Dsum
0
penny05
Messages postés
105
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2007
2
19 sept. 2006 à 12:54
La fonction SomDom (DSum) calcule la somme d'un ensemble de valeurs relatives à un jeu d'enregistrements spécifié (un [javascript:HelpPopup('actip9.hlp','defDomain'); domaine]). Utilisez la fonction SomDom (DSum) dans Visual Basic, une [javascript:HelpPopup('actip9.hlp','defScript'); macro], une expression de requête ou un [javascript:HelpPopup('actip9.hlp','defCalculatedControl'); contrôle calculé.]


Par exemple, la fonction SomDom (DSum) peut être utilisée dans une expression de champ calculé d'une requête pour calculer les ventes totales réalisées par un employé déterminé sur une certaine donnée. Vous pouvez utiliser la fonction SomDom (DSum) dans un contrôle calculé pour afficher le cumul des ventes d'un produit particulier.



Syntaxe



DSum(
expr, domaine[, critère])
0
geobasic
Messages postés
69
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
3 octobre 2006

19 sept. 2006 à 13:12
Cette fonction est une fonction maison ou une fonction externe ? A savoir sous quel type sont définis les paramètres "expr" et "domaine" dans la fonction ?
0
penny05
Messages postés
105
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2007
2
19 sept. 2006 à 13:17
comme expliqué sur l'aide:
expr, Expression qui identifie le champ numérique dont vous voulez additionner les valeurs. Il peut s'agir d'une [javascript:HelpPopup('actip9.hlp','defNull'); Null.]
0
penny05
Messages postés
105
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2007
2
19 sept. 2006 à 13:18
personnelementc'est plutot l'erreur object requis qui me dérange


Qu'est ce que cela veut il dire réellement
0
geobasic
Messages postés
69
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
3 octobre 2006

19 sept. 2006 à 13:31
Tu ne répond pas à ma première question: d'où vient la fonction Dsum ?
0
penny05
Messages postés
105
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2007
2
19 sept. 2006 à 13:39
Je comprends pas ce que tu veux dire par d'ou vient la fonction Dsum...


c'est une fonction VB disponible sur les applications access


Peut tu etre plus clair
0
rvblog
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
6
19 sept. 2006 à 14:27
Il a raison, je focalise sur la référence à Nothing, mais ce n'est pas la peine d'avoir cette référence, car c'est une chaine que tu dois passer.


Bien vu geobasic





rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0
penny05
Messages postés
105
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
18 janvier 2007
2
19 sept. 2006 à 14:36
Encore merci de votre contribution!!!
Rvblog, the expert i tell u thanks again n again....
0
rvblog
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
6
19 sept. 2006 à 15:18
see you later, alligator

rvblog<sup>n
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!</sup>
0