Comment faire une somme sur vba access

penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 - 28 mars 2006 à 10:21
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 - 28 mars 2006 à 14:05
SAlut tout le monde!
Je suis débutant access vba et je voudrais savoir comment faire une somme des éléments d'une table dans vba voila mon code mais il me signale des erreurs sur ma requete sql:
Private Sub statsperRCN_Click()
Dim SQL As String
SQL = "SELECT * FROM [classementideal] WHERE (((classementideal.annéemois)>=200509));"
SQL = SQL & ";"


Étiquette1 = DSum("[Sommedefiability hours]", "[Classementideal]", SQL)
DoCmd.OpenForm "formulaire1", acNormal



End Sub

Please help!!!!

4 réponses

penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
28 mars 2006 à 14:05
merci mais j'ai réussi a trouver il a fallu que je définisse sql as currency ou double pour que ca marche !!
surement trop de nmbre à sommer je pense??
1
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
28 mars 2006 à 11:00
Ta requête SQL pose pb, déjà, plusieurs points :

SQL = SQL & ";"
Pourquoi rajouter un ";" à la fin ? Il ne sert à rien.

SQL = "SELECT * FROM [classementideal] WHERE (((classementideal.annéemois)>=200509));"
Idem, le ";" à la fin ? Je suppose que c'est parce que tu as crées la requête à partir de l'assistant d'Access, et comme dans les objets, il colle toujours un ";" à la fin ... amis il n'est pas utile (d'un autre côté, je ne suis pas sûr que cela pose pb, mais bon, si ça ne sert à rien ^^)

Ensuite, dans ta table "classementideal", le champ "annéemois" est de quel format ? Numérique ? Date/Heure ? Texte ?

Numérique, normalement ton format est bon.
Texte, il faut que 200509 soit entre double cotte pour obtenir une requête du type
SQL = "SELECT * FROM [classementideal] WHERE (classementideal.annéemois >= "200509")"
Date/heure, il faut que 200509 soit entre "#", mais je ne pense pas que ce soit cela, ton champ ne comportant pas les jours.

Molenn
0
penny05 Messages postés 105 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 18 janvier 2007 2
28 mars 2006 à 11:18
Merci de ta réponse.
Mais mon champ annéemois est en numérique quand je lance la somme sans la requete ca marche mais il ya un problème dans l'expression de la requete que je ne comprends abolument pas je te montre le code qui est corrigé aprés les explications:

Private Sub statsperRCN_Click()
Dim SQL As String
Dim rs As Object
Set rs = Me.Recordset.Clone
SQL = "SELECT * FROM [classementideal] WHERE (((classementideal.annéemois)>=200509))"
sommeh = DSum("[SommeDeFiability hours]", "classementideal", SQL)
DoCmd.OpenForm "formulaire1", acNormal


End Sub

Que dois je faire ??? Merci d'avance
0
cs_jperre Messages postés 268 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 19 janvier 2017 2
28 mars 2006 à 13:48
Tout celà est bien compliqué, j'aurais écrit :
Dim rs As Recordset
Set rs=CurrentDB.OpenRecordset("SELECT Sum([Fiability hours]) FROM classementideal WHERE annéemois>=200509;",dbOpenSnapshot)
If Not rs.EOF Then
rs.MoveFirst
Docmd.OpenForm "formulaire1", acNormal'La source du formulaire1 doit être la chaîne SQL du recordset
Else
Beep
MsgBox "Pas de données dans la table classementideal!...", vbCritical,"Pas de données"
End If
rs.Close
Bon courage!...
0
Rejoignez-nous