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 :

Filtre sur une requête SQL [AC-2007]


Sujet :

Requêtes et SQL.

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Par défaut Filtre sur une requête SQL
    Bonjour,

    J'ai une requête SQL avec plusieurs critères.

    Dans mon formulaire, j'ai un groupe avec plusieurs sélection.
    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 grpRetard_AfterUpdate()
    Select Case Me.grpRetard
    Case 1
        Me.txtRetard = "Retard"
    Case 2
        Me.txtRetard = "Pas retard"
    Case 3
        Me.txtRetard = "is not null" 'Retard et Pas retard
    Case 4
        Me.txtRetard = "is null" 'Pas encore défini
    End Select
    Me.Requery
    Me.Refresh
    End Sub
    Pour le case 1 et 2, cela fonctionne correctement.

    Par contre, pour les cases 3 et 4 je n’ai aucun résultat.
    J'ai essayé plusieurs solutions, et je trouve pas...
    Comment faire, par exemple pour la Case 3, afficher les enregistrements dont le champ = Retard et Pas retard


    Merci d'avance de votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Par défaut
    Bonjour,

    Je ne pense pas que cela puisse fonctionner sous cette forme. Le plus simple serait de réaffecter la requête entière avec "is not null" et "is null" qui dans votre code sont pris pour du texte et donc non pris en compte.

    Qu'elle est la requête utilisée ?

    Bcdt

  3. #3
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Par défaut
    Bonjour fbtsra,

    dans votre code sont pris pour du texte et donc non pris en compte.
    C'est ce que j'ai compris.

    Ci-dessous la requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PARAMETERS [Forms]![frmStatsSemaine]![SemaineD] Value, [Forms]![frmStatsSemaine]![AnneeD] Value;
    SELECT rqyQtéCap.[Dte Fin Prévue], rqyQtéCap.DteCarnetCdeXLS, rqyQtéCap.Qté, rqyQtéCap.[Statut des OF], NumSemaine([DteCarnetCdeXLS]) AS Semaine, rqyQtéCap.idCAP, rqyQtéCap.CAP, rqyQtéCap.idIPU, rqyQtéCap.idClient, rqyQtéCap.Client, rqyQtéCap.idArticle, rqyQtéCap.[Code Article], rqyQtéCap.Désignation, rqyQtéCap.[Dte Ddée EXW], rqyQtéCap.[Dte expédition modifiée], rqyQtéCap.Retard, rqyQtéCap.[Magasin expedition], rqyQtéCap.[Point expedition], rqyQtéCap.OV, rqyQtéCap.OF
    FROM rqyQtéCap
    WHERE (((rqyQtéCap.DteCarnetCdeXLS) Between InvDatePart(1,[Forms]![frmStatsSemaine]![SemaineD],[Forms]![frmStatsSemaine]![AnneeD]) And (InvDatePart(1,[Forms]![frmStatsSemaine]![SemaineD],[Forms]![frmStatsSemaine]![AnneeD])+13)) AND ((rqyQtéCap.[Statut des OF]) Like "*" & [Formulaires]![frmStatsSemaine]![txtStatut] & "*") AND ((rqyQtéCap.idCAP) Like "*" & [Formulaires]![frmStatsSemaine]![cmbCAP] & "*") AND ((rqyQtéCap.idIPU) Like "*" & [Formulaires]![frmStatsSemaine]![cmbIPU] & "*") AND ((rqyQtéCap.idClient) Like "*" & [Formulaires]![frmStatsSemaine]![cmbClient] & "*") AND ((rqyQtéCap.idArticle) Like "*" & [Formulaires]![frmStatsSemaine]![cmbCodeArticle] & "*") AND ((rqyQtéCap.Retard) Like "*" & [Formulaires]![frmStatsSemaine]![txtRetard] & "*"))
    ORDER BY rqyQtéCap.[Dte Fin Prévue];
    J'ai essayé en codant cette requête en VBA, mais je bloque après.
    Car celle-ci est appelé par une autre requête(TDC).
    Là, je ne sait pas comment faire????

    C'est pourquoi, j'effectue de cette manière et que je rencontre des difficultés à changer mes critères.

    Merci de votre aide

  4. #4
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Par défaut
    Qu'elle est cette autre requête et où sont placées les deux requêtes ? Votre code ligne 13 appelle les deux ?

    Bcdt

  5. #5
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Par défaut
    On oublie ça:
    J'ai essayé en codant cette requête en VBA, mais je bloque après.
    Car celle-ci est appelé par une autre requête(TDC).
    Là, je ne sait pas comment faire????
    J'ai pas trop bien compris sur la 13ème ligne?
    Je n'ai que 6 lignes.
    A quel endroit du code se trouve le pb

    Voici comment je procéde:
    J’ai une 1er requête SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT tblChargeLongue.[Dte Fin Prévue], tblChargeLongue.DteCarnetCdeXLS, tblChargeLongue.Qté, tblCAP.idCAP, tblCAP.CAP, tblCAP.idIPU, tblChargeLongue.[Statut des OF], AnneeSemaine([tblChargeLongue]![DteCarnetCdeXLS]) AS S, tblChargeLongue.idClient, tblClient.Client, tblLigne.Ligne, tblChargeLongue.idArticle, tblArticle.[Code Article], tblArticle.Désignation, tblChargeLongue.[Dte Ddée EXW], tblChargeLongue.[Dte expédition modifiée], tblChargeLongue.[Magasin expedition], tblChargeLongue.[Point expedition], tblChargeLongue.Retard, tblChargeLongue.OV, tblChargeLongue.OF
    FROM (((tblCAP INNER JOIN tblChargeLongue ON tblCAP.idCAP = tblChargeLongue.idCap) INNER JOIN tblArticle ON tblChargeLongue.idArticle = tblArticle.idArticle) INNER JOIN tblClient ON tblChargeLongue.idClient = tblClient.IdClient) INNER JOIN tblLigne ON tblChargeLongue.idLigne = tblLigne.IdLigne
    ORDER BY tblChargeLongue.[Dte Fin Prévue], tblChargeLongue.DteCarnetCdeXLS, AnneeSemaine([tblChargeLongue]![DteCarnetCdeXLS]);
    La 2ème requête SQL qui pose problème, appelle la 1er.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PARAMETERS [Forms]![frmStatsSemaine]![SemaineD] Value, [Forms]![frmStatsSemaine]![AnneeD] Value;
    SELECT rqyQtéCap.[Dte Fin Prévue], rqyQtéCap.DteCarnetCdeXLS, rqyQtéCap.Qté, rqyQtéCap.[Statut des OF], NumSemaine([DteCarnetCdeXLS]) AS Semaine, rqyQtéCap.idCAP, rqyQtéCap.CAP, rqyQtéCap.idIPU, rqyQtéCap.idClient, rqyQtéCap.Client, rqyQtéCap.idArticle, rqyQtéCap.[Code Article], rqyQtéCap.Désignation, rqyQtéCap.[Dte Ddée EXW], rqyQtéCap.[Dte expédition modifiée], rqyQtéCap.Retard, rqyQtéCap.[Magasin expedition], rqyQtéCap.[Point expedition], rqyQtéCap.OV, rqyQtéCap.OF
    FROM rqyQtéCap
    WHERE (((rqyQtéCap.DteCarnetCdeXLS) Between InvDatePart(1,[Forms]![frmStatsSemaine]![SemaineD],[Forms]![frmStatsSemaine]![AnneeD]) And (InvDatePart(1,[Forms]![frmStatsSemaine]![SemaineD],[Forms]![frmStatsSemaine]![AnneeD])+13)) AND ((rqyQtéCap.[Statut des OF]) Like "*" & [Formulaires]![frmStatsSemaine]![txtStatut] & "*") AND ((rqyQtéCap.idCAP) Like "*" & [Formulaires]![frmStatsSemaine]![cmbCAP] & "*") AND ((rqyQtéCap.idIPU) Like "*" & [Formulaires]![frmStatsSemaine]![cmbIPU] & "*") AND ((rqyQtéCap.idClient) Like "*" & [Formulaires]![frmStatsSemaine]![cmbClient] & "*") AND ((rqyQtéCap.idArticle) Like "*" & [Formulaires]![frmStatsSemaine]![cmbCodeArticle] & "*") AND ((rqyQtéCap.Retard) Like "*" & [Formulaires]![frmStatsSemaine]![txtRetard] & "*"))
    ORDER BY rqyQtéCap.[Dte Fin Prévue];
    Puis la 3ème requête appelle la 2ème. C’est une requête analyse croisée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    TRANSFORM nz(Sum(rqyQtéCapTotal.Qté),0) AS SommeDeQté
    SELECT rqyQtéCapTotal.[Dte Fin Prévue]
    FROM rqyQtéCapTotal
    GROUP BY rqyQtéCapTotal.[Dte Fin Prévue]
    ORDER BY DateDiff("d",InvDatePart(1,[Forms]![frmStatsSemaine]![SemaineD],[Forms]![frmStatsSemaine]![AnneeD]),[DteCarnetCdeXLS])+1
    PIVOT DateDiff("d",InvDatePart(1,[Forms]![frmStatsSemaine]![SemaineD],[Forms]![frmStatsSemaine]![AnneeD]),[DteCarnetCdeXLS])+1 In (1,2,3,4,5,6,7,8,9,10,11,12,13,14);
    Cela fonctionne très bien, sauf quand je veux sélectionner ''Retard et Pas retard''.
    et là je vois pas comment faire

    cdt

  6. #6
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Juin 2011
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2011
    Messages : 162
    Par défaut
    J'évoquais la ligne 13 de votre code grpRetard_AfterUpdate() (votre premier message).

    La solution me semblerait de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub grpRetard_AfterUpdate()
    Select Case Me.grpRetard
    Case 1
        'Définir la requête n°2 avec paramètre Retard
    Case 2
        'Définir la requête n°2 avec paramètre Pas Retard
    Case 3
        'Définir la requête n°2 avec paramètre is not null 
    Case 4
        'Définir la requête n°2 avec paramètre is null 
    End Select
    Me.Requery
    Me.Refresh
    End Sub
    Reste à voir si cela est compatible avec le fonctionnement de votre base ...


    PS : je suis surpris que la requête global fonctionne avec "retard" et "pas retard" car en utilisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Like "*" & [Formulaires]![frmStatsSemaine]![txtRetard] & "*"))
    la requête ne fait pas la différence entre "retard" et "pas retard" si vous avez "retard" sélectionné dans votre groupe grpRetard.

    Bcdt

  7. #7
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Par défaut
    Concernant:
    J'évoquais la ligne 13 de votre code grpRetard_AfterUpdate() (votre premier message).
    Le me.Requery appelle la 3ème requête après un changement de citrères.

    Concernant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Select Case Me.grpRetard
    Case 1
        'Définir la requête n°2 avec paramètre Retard
    Comment je fait, car je ne vois pas?

    Concernat:
    la requête ne fait pas la différence entre "retard" et "pas retard" si vous avez "retard" sélectionné dans votre groupe grpRetard.
    Il faut que je regarde, cas vous me mettez un doute.
    De cette façon si le champ ''txtStatut'' = Pas retard, la requête filtre bien sur ce critère.Non?

  8. #8
    Membre éclairé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2009
    Messages : 313
    Par défaut
    Je viens de regarder, et vous avez raison sur ''Retard'' et ''Pas retard''.

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

Discussions similaires

  1. aide sur une requête sql
    Par sanach dans le forum Développement
    Réponses: 9
    Dernier message: 17/10/2007, 20h42
  2. Problème de SUM sur une requête SQL
    Par Lapicure dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 12/06/2007, 11h51
  3. filtre dans une requête sql ?
    Par jessy212 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/09/2006, 16h29
  4. Barre de progression sur une requète SQL
    Par Wilco dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/04/2005, 14h20
  5. Pb sur une requête SQL (de champ vide)
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 11h12

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