IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes et SQL. Discussion :

Requête et paramètre d'un sous-formulaire [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Points : 2 543
    Points
    2 543
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    =[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 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  2. #2
    Invité
    Invité(e)
    Par défaut
    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

  3. #3
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    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 !

  4. #4
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Points : 2 543
    Points
    2 543
    Par défaut
    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 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    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 : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Pour une somme simple DSum devrait faire l'affaire.

    Si Num_Liaison est un champ de type nombre entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UneVariable = DSum("SalleLongueur", "Tbl_LiaisonSalle", "Num_Liaison = " & [Forms]![Frm_Liaison]![ID_Liaison])
    A+

  6. #6
    Membre émérite Avatar de curt
    Homme Profil pro
    Ingénieur Etudes
    Inscrit en
    Mars 2006
    Messages
    1 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Etudes
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 570
    Points : 2 543
    Points
    2 543
    Par défaut
    Bonsoir LedZeppII,

    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 2024 ? Soyez utile, ça vous changera ! Moi, ça m’a changé !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/11/2014, 20h30
  2. [AC-2003] Modification de paramètres d'un sous-formulaire en VBA
    Par sigcl05 dans le forum IHM
    Réponses: 6
    Dernier message: 30/07/2010, 15h31
  3. [AC-2007] Problème de requête liée à liste déroulante dans sous-formulaire
    Par jean33000 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/04/2010, 14h22
  4. Récupération paramètre dans un sous-formulaire
    Par lobskur dans le forum Access
    Réponses: 3
    Dernier message: 25/01/2007, 08h42
  5. Réponses: 5
    Dernier message: 18/11/2005, 23h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo