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 :

Déterminer un critère de requête vide


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut Déterminer un critère de requête vide
    Bonjour,

    Comme le nom du topic l'indique, je cherche la synthaxe pour renseigner un critère de requête comme vide. Pour être plus clair, je vous refile mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If MonChamps <> "" Then
                db.QueryDefs("MaReq").Parameters("Param") = Me![MonChamp].value
            Else
                db.QueryDefs("MaReq").Parameters("Param") = 'ici je sais pas koi mettre
            End If
    Merci d'avance pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.QueryDefs("MaReq").Parameters("Param") = ""
    Attention de ne pas confondre vide et Null.

    Starec

  3. #3
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    Bien essayé Starec , mais ça ne marche pas.
    J'avais déja essayé, mais dans ce cas il cherche les champs vides dans la table. Hors ici, je voudrais qu'il sorte les résultats quelques soit la valeur.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SnakeCharmer Voir le message
    Bien essayé Starec , mais ça ne marche pas.
    J'avais déja essayé, mais dans ce cas il cherche les champs vides dans la table. Hors ici, je voudrais qu'il sorte les résultats quelques soit la valeur.
    Ce qui n'était pas dans ta première question

    Essayes (mais sans garantie), car jamais testé de cette manière et je n'ai rien sous la main pour le faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.QueryDefs("MaReq").Parameters("Param") = "*"
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.QueryDefs("MaReq").Parameters("Param") LIKE "*"
    Starec

  5. #5
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    Oups dsl de m'étre mal exprimé.

    Mes nouveaux résultat :
    - avec = "*" (déja testé) même résultat que pour = "" ou encore = Null

    -avec LIKE "*" , erreur : utilisation incorrecte de la propriété

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bon

    On va essayé autre chose qui pourrait être logique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.QueryDefs("MaReq").Parameters("Param") = "LIKE *"

  7. #7
    Expert confirmé
    Avatar de vodiem
    Homme Profil pro
    Vivre
    Inscrit en
    Avril 2006
    Messages
    2 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Vivre
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 895
    Points : 4 325
    Points
    4 325
    Par défaut
    salut à tous,

    Starec je pense que tu auras du mal à trouver la bonne syntaxe si SnakeCharmer ne donne pas la requete.


  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par vodiem Voir le message
    salut à tous,

    Starec je pense que tu auras du mal à trouver la bonne syntaxe si SnakeCharmer ne donne pas la requete.

    Oui tu as raison, il faudrait l'ensemble.

  9. #9
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    C'est une requête que j'ai créé manuellement mais voici le code SQL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [Caractéristiques Pièces].[Numéro Article], [Caractéristiques Pièces].[Type Pièce], [Caractéristiques Pièces].Module, [Caractéristiques Pièces].[Nombre de dents], [Caractéristiques Pièces].[Type Denture], [Caractéristiques Pièces].[Diamètre Intérieur], [Caractéristiques Pièces].[Diamètre Extérieur], [Caractéristiques Pièces].Largeur, [Caractéristiques Pièces].Masse, [Caractéristiques Pièces].Matière
    FROM [Caractéristiques Pièces]
    WHERE ((([Caractéristiques Pièces].[Type Pièce])="Roue") AND (([Caractéristiques Pièces].Module) Between [Modul]-[tolmodul] And [Modul]+[tolmodul]) AND (([Caractéristiques Pièces].[Nombre de dents]) Between [Nbredents]-[toldent] And [Nbredents]+[toldent]) AND (([Caractéristiques Pièces].[Type Denture])=[TypeDenture]) AND (([Caractéristiques Pièces].[Diamètre Intérieur]) Between [diamint]*[toldiamint1] And [diamint]*[toldiamint2]) AND (([Caractéristiques Pièces].Largeur) Between [larg]-[tollarg] And [larg]+[tollarg]) AND (([Caractéristiques Pièces].Masse) Between [poids]*[tolmasse1] And [poids]*[tolmasse2]) AND (([Caractéristiques Pièces].Matière)=[matiere]));
    En fait le soucis se trouve sur le critère "matière". En fait je veux que si dans mon formulaire aucune matière n'est rentré, il ne prenne pas en compte le paramètre matière (c'est a dire que dans le résultat je pourrais avoir des enregistrements avec des matières différentes. Le champs "matière" erst de type texte.

    En espérant vous avoir + éclairé...

  10. #10
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    J'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    db.QueryDefs("Trouver Roue").Parameters ("matiere") Is Not Null
    Mais il me dit "incompatibilité de type" sur mon paramètre matiere

  11. #11
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 803
    Points : 34 074
    Points
    34 074
    Billets dans le blog
    14
    Par défaut
    Maintenant que tu as le texte de la requête, tu peux mettre un if pour tester si la matière est renseignée et changer le texte de la requête dans ton code en supprimant le dernier AND...

  12. #12
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    J'ai pas trop compris ce que tu voulais que je fasse. Tu veux que je teste si le champ n'est pas vide, dans le SQL ?? et si le champ est vide, je lui dis de faire quoi ?

    Je gère l'envoi des paramètres par VBA, de cette façon pour le paramètre matière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Matiere <> "" Then
                db.QueryDefs("Trouver Roue").Parameters("matiere") = Matiere
            Else
                db.QueryDefs("Trouver Roue").Parameters("matiere") = '???
            End If

  13. #13
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Je penses que c'est la requête elle même qu'il faut modifier comme ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ......AND iif([matiere]<>null;[Caractéristiques Pièces].Matière;0)=iif([matiere]<>null;[matiere];0)
    Comme ca dans ton code tu n'auras plus besoin de tester la valeur du paramétre. Tu l'envois tout simplement.

  14. #14
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    J'ai une erreur de synthaxe lorsque j'entre ton expression DMBoup, et il pointe sur le premier pointvirgule.

  15. #15
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Remplace le point virgule par une virgule.

  16. #16
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    toujours le même problème.
    Mais sinon, avec quelques chose dans ce genre là ça pourrait mieux marche peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...AND ([caractéristiques pièces].matière = iif([matière].value <> null;[matière];"*")

    Apparemment non. Tu es sur que l'on peut utiliser la méthode "iif" dans du SQL ?

  17. #17
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Citation Envoyé par SnakeCharmer Voir le message
    Tu es sur que l'on peut utiliser la méthode "iif" dans du SQL ?
    bien sur. Et je l'utilises aussi souvent. Je crois que le problème et à chercher au niveau des parenthèses.

  18. #18
    Membre régulier Avatar de SnakeCharmer
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    117
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2008
    Messages : 117
    Points : 112
    Points
    112
    Par défaut
    Et bien , la réponse est dans la fonction Nz()

    Breves explications : dans la requete, mettre comme critère Nz([MaVar];[MonChamp])
    ou MonChamp est le nom de la colonne de la requete (ou du champ de la table)
    Ainsi, si MaVar = Null, il prend toutes les valeurs contenues dans les champs de "MonChamp"

    Super pratique cette fonction, il existe un tuto là-dessus ??


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

Discussions similaires

  1. Critère de requête avec une zone de liste dans un formulaire
    Par Dehez dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2006, 13h49
  2. Résultat de requête vide
    Par Gusano dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/12/2005, 14h38
  3. Critère pour requête d'ajout
    Par Virgile59 dans le forum Access
    Réponses: 4
    Dernier message: 23/09/2005, 17h56
  4. Comment indiquer un critère chiane non vide
    Par le lynx dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/08/2005, 13h38
  5. requête vide...
    Par joy dans le forum Langage SQL
    Réponses: 6
    Dernier message: 12/08/2003, 18h20

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