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 :

Recherche multi-critères, adapter sql


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut Recherche multi-critères, adapter sql
    Bonjour,

    j'utilise dans mon bdd une formulaire multi-critères, comme trouver ici sur le site.
    ça fonctionne très, très bien, mais, quand je entre une critère de recherche, il m'affiche tout les résultats dans la base entière. Par contre, j'aimerai voir uniquement les articles que j'ai effectivement EN STOCK.

    Dans mon bdd, j'ai une table Marchandises et une table Détail Stock. La table Marchandises contient toutes les références marchandises unique et la table Détail Stock toutes les opérations IN / OUT.

    J'ai changé donc la recherche sql comme ceci :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Private Sub RefreshQuery()
    Dim sql As String
    Dim SQLWhere As String
     
    sql = "SELECT DetailStock!N°IdProduit, Marchandises![Numéro d'article], Marchandises!Désignation, Sum((nz([Mouvements]))-nz([Sortie])-nz([Perte])) AS Stock FROM Marchandises INNER JOIN DetailStock ON Marchandises!N°IdProduit = DetailStock!N°IdProduit Where Marchandises![N°IdProduit] <> 0 GROUP BY DetailStock!N°IdProduit, Marchandises![Numéro d'article], Marchandises!DésignationMarchandises"
     
    If Not Me.chkFamille Then
        sql = sql & "And Marchandises![IdFamille] like '" & Me.txtRechFamille & "'"
        End If
    If Not Me.chkArticle Then
        sql = sql & "And Marchandises![Numéro d'article] = '" & Me.cmbRechArticle & "' "
    End If
    If Not Me.chkFournisseur Then
        sql = sql & "And Marchandises![N°Fournisseur] like '*" & Me.txtRechFournisseur & "*' "
    End If
    If Not Me.chkDesignation Then
        sql = sql & "And Marchandises![Désignation] like '*" & Me.txtRechDesignation & "*' "
    End If
    If Not Me.chkCodebarre Then
        sql = sql & "And Marchandises![Code barre] = '" & Me.cmbRechCodebarre & "' "
    End If
     
    SQLWhere = Trim(Right(sql, Len(sql) - InStr(sql, "Where ") - Len("Where ") + 1))
     
    sql = sql & ";"
     
    Me.lblStats.Caption = DCount("*", "Marchandises", SQLWhere) & " / " & DCount("*", "Marchandises")
    Me.lstResults.RowSource = sql
    Me.lstResults.Requery
     
    End Sub

    Malheureusement, ça m'affiche aucun résultat. Est-ce que quelqu’un peut m'aider avec ce problème, car c'est un peu complexe pour moi.

    Merci d'avance pour vos remarques.

    Hans

  2. #2
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut
    Ton truc est un peu long pour l'analyser en détail, mais déjà, juste "à vue d'oeil", je vois qu'entre :

    Marchandises!DésignationMarchandises" et
    sql = sql & "And Marchandises![IdFamille] like ..."
    faudrait sans doute écrire
    sql = sql & " And Marchandises![IdFamille] like ..."

    il n'y a pas d'espace ... donc ton "Marchandises!DésignationMarchandises" va être collé à "And Marchandises![IdFamille] like ..." ce qui ne devrait pas être du meilleur effet...

    Je te suggère, pour avancer dans ta recherche d'erreur, de mettre un "stop" suivi d'un "debug.print sql" juste avant de charger ton rowsource et de regarder dans le fenêtre d'exécution à quoi ressemble ce que tu mets dans le rowsource.. cela devrait te permettre de voir si ton code SQL généré est ok ou à quel endroit il ne l'est pas.

    cela donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    sql = sql & ";"
    'Arrêt du programme
    STOP
    'Examen du contenu de la variable sql dans la fenêtre d'exécution
    Debug.print sql
    Me.lblStats.Caption = DCount("*", "Marchandises", SQLWhere) & " / " & DCount("*", "Marchandises")
    Me.lstResults.RowSource = sql

    Michel

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    J'ai une message "Erreur de syntaxe (opérateur absent) dans l'expression ........

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2008
    Messages : 286
    Points : 383
    Points
    383
    Par défaut
    Ben oui,
    mais le mieux serait de faire un copier/coller de ce que tu obtiens (dans la fenêtre d'exécution) quand tu regardes la valeur du champs "sql" ... après avoir passé la commande "debug.print sql" comme dit plus haut et de nous communiquer ce copier/coller.
    Michel

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 312
    Points : 155
    Points
    155
    Par défaut
    La requête ne marche pas comme ça. Je dois d'abord trouver la bonne formule. Merci pour le moment

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

Discussions similaires

  1. [AC-2007] Aide sur Tuto Recherche Multi-Critères adapté
    Par Accessifiante dans le forum IHM
    Réponses: 11
    Dernier message: 25/05/2013, 13h52
  2. [AC-2010] Recherche Multi-critére via Macro,Sql et/ou Vba
    Par jaraf dans le forum Access
    Réponses: 11
    Dernier message: 22/05/2013, 10h31
  3. [MySQL] Requete SQL pour faire une recherche multi critères
    Par nassing dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 19/05/2011, 17h01
  4. Recherches multi critères multi tables SQL
    Par Marc_L dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 16/07/2010, 11h54
  5. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 19h33

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