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

IHM Discussion :

Afficher le resultat d'une requete complexe dans un controle


Sujet :

IHM

  1. #1
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut Afficher le resultat d'une requete complexe dans un controle
    Bonjour,

    Je bloque sur un affchage de résultat de requete dans un controle de formulaire.
    Voila, j'ai cette requete qui me retourne un nombre unique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT QuantIn-QuantOut AS Quantité_restante
    FROM [SELECT STOCK.[Numéro de lot], STOCK.[Référence prod], SUM(STOCK.[Quantité]) as QuantIn FROM LOT INNER JOIN STOCK ON LOT.[Numéro de lot] = STOCK.[Numéro de lot] WHERE STOCK.[Entrée_Sortie]<>'Sortie' GROUP BY STOCK.[Numéro de lot], STOCK.[Référence prod]]. AS T1 LEFT JOIN [SELECT STOCK.[Numéro de lot], STOCK.[Référence prod], SUM(STOCK.[Quantité]) as QuantOut FROM LOT INNER JOIN STOCK ON LOT.[Numéro de lot] = STOCK.[Numéro de lot] WHERE STOCK.[Entrée_Sortie]='Sortie' GROUP BY STOCK.[Numéro de lot], STOCK.[Référence prod] 
    ]. AS T2 ON (T1.[Numéro de lot]=[T2].[Numéro de lot]) AND (T1.[Référence prod] = T2.[Référence prod])
    WHERE T1.[Numéro de lot] = Formulaire!Numéro_de_lot
    AND T1.[Référence prod] = Formulaire!Réf;
    Elle prend comme clause WHERE un numéro de lot et une référence choisi dans le formulaire.

    J'essaie d'avoir un controle Quantité dans mon formulaire qui afficherait la valeur calculée dans cette requete.

    Comment faire ?

    J'ai essayé avec un recordSet mais la requete ne passe pas.
    Si je sélectionne la requete directement dans la source du controle, j'ai #NAME au lieu du résultat quantité de la requete !
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu ne peux mettre une requête SQL directement comme source d'un contrôle comme une zone de texte.

    Il y a deux solutions.

    1. La récupération de la donnée, à partir de DAO et d'un Recordset, c'est ce que tu as essayé de faire, mais qui à priori ne fonctionne pas.
    2. L'utilisation de la fonction de domaine DLookup, dans ton cas à partir d'une requête crée dans Access et non en SQL.

    Je ne sais pas combien tu as de données à traiter, mais la première pourrait être une bonne solution, car tu as deux requêtes imbriquées.
    Cependant, il serait bon que tu nous mettes ce que tu as fait. Je pense savoir ce qui se passe si tu as utilisé le code SQL tel quel, car dans la clause WHERE il faut sortir de la chaine les appels aux contrôles du formulaire.

    Remets nous ton code à l'aide de recordset.

    Starec

  3. #3
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Merci pour ta réponse.
    J'ai testé les deux solutions mais ca ne donne rien.

    Voila la requete du RecordSet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT QuantIn-QuantOut AS Quantité_restante
    FROM (SELECT STOCK.[Numéro de lot], STOCK.[Référence prod], SUM(STOCK.[Quantité]) as QuantIn FROM LOT INNER JOIN STOCK ON LOT.[Numéro de lot] = STOCK.[Numéro de lot]
    WHERE STOCK.[Entrée_Sortie]<>'Sortie' GROUP BY STOCK.[Numéro de lot], STOCK.[Référence prod]) AS T1 LEFT JOIN (SELECT STOCK.[Numéro de lot], STOCK.[Référence prod], SUM(STOCK.[Quantité])
    as QuantOut FROM LOT INNER JOIN STOCK ON LOT.[Numéro de lot] = STOCK.[Numéro de lot] WHERE STOCK.[Entrée_Sortie]='Sortie' GROUP BY STOCK.[Numéro de lot], STOCK.[Référence prod])
     AS T2 ON (T1.[Numéro de lot]=[T2].[Numéro de lot]) AND (T1.[Référence prod] = T2.[Référence prod])
    WHERE T1.[Numéro de lot] ='" & Me.Numéro_de_lot & "' 
    AND T1.[Référence prod] ='" & Me.Référence_prod & "'"
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Il faudrait l'ensemble du code, et des réponses :

    Tes champs [Numéro de lot] et [Référence prod] sont bien de types textes ?
    As-tu fait un Debug.print de ton SQL pour voir ce que cela donnait avec des paramètres ?
    Quel est le message d'erreur ? Es-tu sûr que c'est sur la requête ?

    Starec

  5. #5
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Ok, pardon, je croyais que tu voulais juste la requete !

    Je poste le code demain matin car je ne suis plus au boulot.
    A demain...
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  6. #6
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Salut,

    Voila mon code du RecordSet :
    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
    16
    17
    18
    19
    20
    Dim sSQL As String
    Dim DB As DAO.Database
    Dim rs As DAO.Recordset
     
    Set DB = CurrentDb
     
    sSQL = "SELECT QuantIn-QuantOut FROM (SELECT STOCK.[Numéro de lot],
    STOCK.[Référence prod], SUM(STOCK.[Quantité]) as QuantIn FROM LOT 
    INNER JOIN STOCK ON LOT.[Numéro de lot] = STOCK.[Numéro de lot] WHERE
    STOCK.[Entrée_Sortie]<>'Sortie' GROUP BY STOCK.[Numéro de lot],
    STOCK.[Référence prod]) AS T1 LEFT JOIN (SELECT STOCK.[Numéro de lot], STOCK.[Référence prod], SUM(STOCK.[Quantité]) as QuantOut FROM LOT
    INNER JOIN STOCK ON LOT.[Numéro de lot] = STOCK.[Numéro de lot] WHERE
    STOCK.[Entrée_Sortie]='Sortie' GROUP BY STOCK.[Numéro de lot],
    STOCK.[Référence prod]) AS T2 ON (T1.[Référence prod] = T2.[Référence
    prod]) AND (T1.[Numéro de lot] = [T2].[Numéro de lot]) WHERE T1.[Numéro
    de lot] = '" & Me.Numéro_de_lot & "' AND T1.[Référence prod] = '" & Me.Réf & "'"
     
    Set rs = DB.OpenRecordset(sSQL)
    rs.MoveFirst
    Me.Quantité_dispo.Value = rs.Fields(0)
    Et l'erreur est l'erreur 3078 :
    Le moteur de la base de données Microsoft Jet ne peut pas trouver la table ou la requete source.
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 115
    Points : 88
    Points
    88
    Par défaut
    Deja si ton Numéro_de_Lot est de type numérique, il faut enlever les ' et pareil pour ta Réf, sauf si c'est bien du texte:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE T1.[Numéro
    de lot] = " & Me.Numéro_de_lot & " AND T1.[Référence prod] = " & Me.Réf & ""

  8. #8
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Non, c'est bien du texte.
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

  9. #9
    Rédacteur
    Avatar de lavazavio
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 673
    Points : 2 412
    Points
    2 412
    Par défaut
    Bon, ben j'ai résolu mon probleme.

    J'ai juste supprimé du code et le tour est joué !

    Merci pour votre aide !
    Rédacteur et Modérateur rubriques Linux et Virtualisation
    Mes Articles
    N'oubliez pas de consulter les FAQ Linux et les cours et tutoriels Linux
    N'oubliez pas de consulter les FAQ virtualisation et les cours et tutoriels Virtualisation
    Man pages en français

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/06/2007, 17h04
  2. Afficher le resultat d'une requete dans un datagrid
    Par bucabuca dans le forum VB.NET
    Réponses: 4
    Dernier message: 15/06/2007, 21h48
  3. Réponses: 6
    Dernier message: 02/05/2007, 12h47
  4. Réponses: 2
    Dernier message: 25/04/2007, 14h56
  5. Réponses: 1
    Dernier message: 23/03/2007, 16h58

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