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 :

Probleme de filtre dans requete [AC-97]


Sujet :

Requêtes et SQL.

  1. #1
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut Probleme de filtre dans requete
    Bonjour,

    J'ai créer une requete (merci LedZeppII) pour calculer la consommation.

    La requete fonctionne bien j'ai bien ma distance parcouru, ma conso, mais si je veux rajouter un filtre (exemple conso>100), un message d'erreur arrive:
    Erreur de syntaxe (opérateur absent) dans l'expression""[codeident]= And[Date_Mvt]<#01/26/2011#"
    Voici ma requete:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT mouvement_2011.Date_Mvt, mouvement_2011.Code_Site, mouvement_2011.CodeEngin, mouvement_2011.Volume_Carb, mouvement_2011.Potentiel_Kmjour, DMax("Potentiel_Kmjour ","mouvement_2011","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#")) AS [Ancien Compteur], [Potentiel_Kmjour]-[Ancien Compteur] AS parcouru, ([Volume_Carb]*100)/[parcouru] AS Conso
    FROM mouvement_2011;
    Pourquoi l'erreur apparait lorsque je mets un filtre et que tout fonctionne bien sans le filtre?

    Que dois je faire pour filtrer les consommations?

    Merci

    Bonne journée

    Seb
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#")) AS [Ancien Compteur],

    Ton porblème vient du faite que [Codeident] est null ce qui génère une erreur de syntaxe.

    Il faudrait soit tester si c'est null dans ce cas là ne pas exécuter la requête ou substituer une valeur valide.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Ce qui se passe c'est que lors du premier plein il ne retrouve pas le véhicule, donc le [Codeident] est null. Quand je ne mets pas de filtre le champ ancien compteur est vide.
    Comment faire pour tester si c'est null afin de substituer une valeur (exemple le même kilométrage du moment?

    Merci

    seb
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    À priori tu peus simplement utiliser un if then else ou un iif()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if IsNull(TaValeur) then
         'Faire quelque chose quand Null
       else
         'Faire quelque chose quand pas null
    end if
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    iif(IsNull(TaValeur), ValeurQuandNull, ValeurQuandPasNull)
    Le iff() ets une fonction qui retourne une valeur. Il peut s'intégrer à une chaine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MaChaine="texte " & iif(Condition, V1, v2) & " autre texte."
    MaChaine va contenir "texte [IciLaValeurV1] autre texte" ou "texte [IciLaValeurV2] autre texte" selon la condition.

    A+
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Bonsoir Marot,

    Où dois je mettre le code? Car j'ai essayer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vraifaux( DMax("Potentiel_Kmjour ","mouvement_2011","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#")) est null; "0";DMax("Potentiel_Kmjour ","mouvement_2011","[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#")))
    Ça ne marche pas

    Merci

    Bonne soirée

    Seb
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT mouvement_2011.Date_Mvt, mouvement_2011.Code_Site, mouvement_2011.CodeEngin, mouvement_2011.Volume_Carb, mouvement_2011.Potentiel_Kmjour, DMax("Potentiel_Kmjour ","mouvement_2011",iif(IsNull([Codeident]); "Ici le critère pour estNull";"[Codeident]=" & [Codeident] & " And [Date_Mvt] < " & Format([Date_Mvt],"\#mm\/dd\/yyyy\#"))) AS [Ancien Compteur], [Potentiel_Kmjour]-[Ancien Compteur] AS parcouru, ([Volume_Carb]*100)/[parcouru] AS Conso
    FROM mouvement_2011;

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre averti
    Homme Profil pro
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Points : 416
    Points
    416
    Par défaut
    Merci marot_r

    Ca marche mais l'ordi tourne pendant 10 minutes avant d'afficher les résultats
    Sans le filtre le résultat est instantané.

    C'est le seul hic, c'est le temps, il va falloir que je trouve une solution pour réduire le temps...

    Merci encore

    Bonne journée

    Seb
    Débutant, j’essaie de m’améliorer en essayant d'aider sur le forum
    Merci d’être indulgent sur le code ou réponse proposé je reçois volontiers les critiques qui me feront progresser, mais aussi un (ça fait toujours plaisir de savoir que l on a pu dépanner une personne ).

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

Discussions similaires

  1. Probleme de date dans requete sql de supression
    Par scons dans le forum VBA Access
    Réponses: 3
    Dernier message: 11/08/2008, 09h01
  2. Probleme de date dans requete SQL vers base de donnée MS Access
    Par Uren dans le forum Persistance des données
    Réponses: 1
    Dernier message: 04/08/2008, 13h06
  3. probleme de syntaxe dans requete vba
    Par Invité dans le forum VBA Access
    Réponses: 4
    Dernier message: 01/07/2008, 18h31
  4. Probleme de format dans requete
    Par reuel dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 11/08/2007, 09h28
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

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