Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/04/2011, 15h05   #1
Membre du Club
 
Homme Seb
Inscription : février 2008
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Seb
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 130
Points : 40
Points : 40
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:
Citation:
Erreur de syntaxe (opérateur absent) dans l'expression""[codeident]= And[Date_Mvt]<#01/26/2011#"
Voici ma requete:
Code :
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
sebing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 18h47   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
Code sql :
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2011, 19h24   #3
Membre du Club
 
Homme Seb
Inscription : février 2008
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Seb
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 130
Points : 40
Points : 40
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
sebing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 18h32   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
À priori tu peus simplement utiliser un if then else ou un iif()

Code :
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 :
1
2
 
iif(IsNull(TaValeur), ValeurQuandNull, ValeurQuandPasNull)
Le iff() ets une fonction qui retourne une valeur. Il peut s'intégrer à une chaine.

Code :
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 19h43   #5
Membre du Club
 
Homme Seb
Inscription : février 2008
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Seb
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 130
Points : 40
Points : 40
Bonsoir Marot,

Où dois je mettre le code? Car j'ai essayer:
Code :
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
sebing est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 22h21   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 462
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 462
Points : 7 539
Points : 7 539
Code sql :
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.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/04/2011, 10h01   #7
Membre du Club
 
Homme Seb
Inscription : février 2008
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Seb
Localisation : France

Informations forums :
Inscription : février 2008
Messages : 130
Points : 40
Points : 40
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
sebing est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h55.


 
 
 
 
Partenaires

Hébergement Web