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 :

Requete DISTINCT multicolonnes


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Requete DISTINCT multicolonnes
    Salut Groupe,

    Quelquun peut me dire se qui cloche....
    La requete #1 OK voir image incluse

    Je dois faire une requete sur cette requete pour me donner le résultat sur une seule ligne des Desc_French (Instructions de lavages)/Grandeurs.....ce qui devrait etre ceci.....
    la requete #2:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT Req_Labels_Produits_Francais.Product_Code, Req_Labels_Produits_Francais.Style_FR, Req_Labels_Produits_Francais.Color_FR, Req_Labels_Produits_Francais.Size, Req_Labels_Produits_Francais.BarCode, Req_Labels_Produits_Francais.CompositionDesc_French, Req_Labels_Produits_Francais.MadeIn_FR, Req_Labels_Produits_Francais.Desc_French, RecupInstrLav([Size]) AS Instructions
    FROM Req_Labels_Produits_Francais;


    le module:
    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
    Public Function RecupInstrLav(Size) As String
    Dim res As DAO.Recordset
    Dim SQL As String
     
    SQL = "SELECT Desc_French FROM Req_Labels_Produits_Francais WHERE Size=" & Size
    Set res = CurrentDb.OpenRecordset(SQL)
     
    While Not res.EOF
    RecupInstrLav = RecupInstrLav & res.Fields(0).Value & " "
    res.MoveNext
    Wend
     
    RecupInstrLav = Left(RecupInstrLav, Len(RecupInstrLav) - 1)
     
    Set res = Nothing
    End Function
    Mais le tout me donne une erreur exécution : 3061
    too few parameters. Expected 1

    Je suis novice dans SQL et ACCESS alors soyez indulgent svp....et merci davance..
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    l'argument Size est-il numérique ?

    Sinon, il faudrait corriger la syntaxe en ajouter des quotes :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Desc_French FROM Req_Labels_Produits_Francais WHERE Size= '" & Size & "'"

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut Jeannot ,ça marche si je ne demande pas les STYLE/COLOR/SIZE dans ma requete.....mais lidéal est de demander a meme la requete....le style/color/size.....avant limpression des étiquettes
    Size est Texte
    (S) pour Small, (M) pour Medium etc...
    Images attachées Images attachées  

  4. #4
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Ce qui confirme le fait d'implanter les quotes dans ta syntaxe :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Desc_French FROM Req_Labels_Produits_Francais WHERE Size= '" & Size & "'"

    Pourquoi ne pas saisir les valeurs de critères via un formulaire ?

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2012
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Salut Jeannot,

    Je ne voulais pas de formulaire parce que je voulais sauver une étape. Crois tu qu'avec le formulaire je n'aurais plus de message d'erreurs? Le but est que quand je clique sur mon état, il me demande le Style,couleur,grandeur, ensuite il condense les instruction de lavage en un champs sur une ligne et ensuite me l' imprime sur 1 étiquette et non sur X étiquettes dépendamment du nombre d'instruction de lavage. 1 produit peut avoir 2,3 ou plus d'instruction de lavage. De la le fait que quand j'exécute la requete, jai plusieurs lignes de résultats, mais avec quun champ différents que je voudrais concatener en une ligne pour pouvoir limprimer.

    As tu une idée ou ca cloche ?.....Pourrais-je faire tout ceci en 1 requete au lieu de 2 ?
    Select Distinct....est vraiment nécessaire puisque jentre les infos pour 1 produit/couleur/grandeur spécifique???? ou bien je nai besoin que d'un module de concatenation des lignes ???

    Si la requete est bien faite, le résultat de celle ci devrait donner qu'un produit/couleur/grandeur/upc/classe/etc.....mais avec 1 seul champ différent, celui de la Description des Instructiopns de lavage.
    Nom : bbb.jpg
Affichages : 59
Taille : 49,1 Ko

    donnerais ceci:
    Nom : aaa.jpg
Affichages : 58
Taille : 58,4 Ko

    Requete 2 en SQL pour concatenation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT DISTINCT Req_Labels_Produits_Francais.Product_Code, Req_Labels_Produits_Francais.Style_FR, 
    Req_Labels_Produits_Francais.Color_FR, 
    Req_Labels_Produits_Francais.Size, 
    Req_Labels_Produits_Francais.BarCode, 
    Req_Labels_Produits_Francais.CompositionDesc_French, Req_Labels_Produits_Francais.MadeIn_FR, 
    RecupInstrLav([BarCode]) AS InstrucLavage
    FROM Req_Labels_Produits_Francais;
    Devrais donner ceci:
    Nom : ggg.jpg
Affichages : 53
Taille : 29,4 Ko

    mais message d'erreur:
    Nom : fff.jpg
Affichages : 69
Taille : 10,5 Ko

    Donnerais pour résultat a limpression:
    Nom : CCC.jpg
Affichages : 63
Taille : 78,2 Ko

    Module corrigé:
    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
    Public Function RecupInstrLav(BarCode) As String
    Dim res As DAO.Recordset
    Dim SQL As String
     
    SQL = "SELECT Desc_French FROM Req_Labels_Produits_Francais WHERE BarCode='" & BarCode & "'"
    Set res = CurrentDb.OpenRecordset(SQL)
     
    While Not res.EOF
    RecupInstrLav = RecupInstrLav & res.Fields(0).Value & " / "
    res.MoveNext
    Wend
     
    RecupInstrLav = Left(RecupInstrLav, Len(RecupInstrLav) - 3)
     
    Set res = Nothing
    End Function
    Qu'est ce qui cloche ?

    Merci d'avance de me donner du temps et de l'aide

  6. #6
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    Réponse un peu tardive

    En regardant tes images attachées, il semblerait que BarCode soit Numérique.

    il est vrai que je t'avais indiqué que puisque Size était alphabétique, il fallait utiliser des quotes. Avec un champ de type numérique, les quotes génèrent une erreur.

    Ainsi :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Desc_French FROM Req_Labels_Produits_Francais WHERE BarCode='" & BarCode & "'"

    devient

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT Desc_French FROM Req_Labels_Produits_Francais WHERE BarCode= " & BarCode

Discussions similaires

  1. Probleme requete distinct
    Par maibey dans le forum Développement
    Réponses: 1
    Dernier message: 25/02/2008, 16h02
  2. Probleme requete distinct
    Par maibey dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/02/2008, 16h02
  3. requete Distinct couple
    Par taffMan dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/02/2008, 16h23
  4. requete distinct sql
    Par melancomoique dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/09/2007, 16h43
  5. Requete impliquent 2 Connections ADO Distinctes
    Par Pgs dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/02/2006, 21h44

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