Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/10/2011, 23h58   #1
Membre Expert
 
Avatar de curt
 
Homme Curt
Bureau d'Etudes
Inscription : mars 2006
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Curt
Localisation : France

Informations professionnelles :
Activité : Bureau d'Etudes
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2006
Messages : 982
Points : 1 171
Points : 1 171
Par défaut Requête et paramètre d'un sous-formulaire

Bonsoir à tous,

j'ai la requête ci-dessous qui ne fonctionne pas :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub SalleLongueur_AfterUpdate()
 
Dim oRst As DAO.Recordset
Dim db As DAO.Database
Dim sSql As String
 
    sSql = "SELECT Sum(Tbl_LiaisonSalle.SalleLongueur) AS SommeDeSalleLongueur FROM Tbl_LiaisonSalle GROUP BY Tbl_LiaisonSalle.Num_Liaison HAVING ((Tbl_LiaisonSalle.Num_Liaison)=[Forms]![Frm_Liaison]![ID_Liaison]);"
 
    Set oRst = CurrentDb.OpenRecordset(sSql, dbOpenDynaset, dbReadOnly)
 
    With oRst
        LongueurCalculee = .Fields("SommeDeSalleLongueur")
    End With
 
End Sub
A l'exécution, j'ai le message "trop peu de paramètre - 1 attendu"

Le problème doit venir de là :
Code :
=[Forms]![Frm_Liaison]![ID_Liaison]);"
La syntaxe pour aller sur le sous-formulaire doit être incorrecte, mais .... je sèche

En effet, sans la clause HAVING, ça fonctionne. Je n'ai plus le message d'erreur mais le résultat est erronné (mais c'est normal)...

Bon week-end à tous.

Curt
__________________
Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
---------------------------------------------------------------------
Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
Et si vous faisiez un bon geste en 2012 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !
curt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 05h43   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 620
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 620
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Je serais toi je sortirais l'appel au champ du formulaire de la requête pour le rajouter ensuite par concaténation.

Ce genre de syntaxe fonctionne avec le QBE, mais pas en VBA.

De plus pour la syntaxe du sous-formulaire : Les appels formulaires/états.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/10/2011, 13h37   #3
Expert Confirmé
 
Avatar de Richard_35
 
Homme
Inscription : juillet 2007
Messages : 2 178
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : juillet 2007
Messages : 2 178
Points : 2 807
Points : 2 807
Bonjour Curt et Philippe,

Juste une remarque : tu devrais transférer ta clause HAVING dans une clause WHERE. En effet, d'un point de vue conceptuel, il vaut mieux éliminer les Tbl_LiaisonSalle.Num_Liaison qui ne t'intéressent pas avant le groupage qu'après le groupage : en quelque sorte, tu fais travailler Access pour rien (somme puis élimination) ...

La clause HAVING ne doit servir qu'à tester des fonctions de groupage.

Mais bon, ce n'est pas le fond du problème que tu exposes.
__________________
Dis-nous et à bientôt,
Richard.
----------------------------------------------------------------------------------------------
En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
Richard_35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 19h39   #4
Membre Expert
 
Avatar de curt
 
Homme Curt
Bureau d'Etudes
Inscription : mars 2006
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Curt
Localisation : France

Informations professionnelles :
Activité : Bureau d'Etudes
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2006
Messages : 982
Points : 1 171
Points : 1 171
Bonsoir à tous et merci pour les pistes.

N'y a t'il pas un moyen plus direct de mettre une valeur (somme d'un champ issue d'une requête) directement dans une variable (ValeurVarTOTO) ?

(Désolé mais côté SQL je sèche !!)

Bonne soirée.

Curt
__________________
Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
---------------------------------------------------------------------
Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
Et si vous faisiez un bon geste en 2012 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !
curt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/10/2011, 20h11   #5
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

Pour une somme simple DSum devrait faire l'affaire.

Si Num_Liaison est un champ de type nombre entier :
Code :
UneVariable = DSum("SalleLongueur", "Tbl_LiaisonSalle", "Num_Liaison = " & [Forms]![Frm_Liaison]![ID_Liaison])
A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 14/10/2011, 22h03   #6
Membre Expert
 
Avatar de curt
 
Homme Curt
Bureau d'Etudes
Inscription : mars 2006
Messages : 982
Détails du profil
Informations personnelles :
Nom : Homme Curt
Localisation : France

Informations professionnelles :
Activité : Bureau d'Etudes
Secteur : Bâtiment Travaux Publics

Informations forums :
Inscription : mars 2006
Messages : 982
Points : 1 171
Points : 1 171
Bonsoir LedZeppII,

Citation:
Pour une somme simple DSum devrait faire l'affaire
et ben pour faire simple, c'est exactement ça !!!

Facile, simple et efficace.

Merci

Curt
__________________
Pas de demande par MP, sinon j'correctionne plus, j'dynamite, j'disperse, j'ventile !!!
---------------------------------------------------------------------
Vous avez un talent insoupçonné... Faites-en profitez les autres. Un p'tit CLIC pour une grande cause.
Et si vous faisiez un bon geste en 2012 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !
curt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h37.


 
 
 
 
Partenaires

Hébergement Web