Autoriser des critères vides dans une requête paramétrée

Ces articles pourraient également vous intéresser...

16 réponses

  1. Badia dit :

    Merci beaucoup à vous! simple et efficace

  2. bobe48000 dit :

    bonjour
    mais ou est le screencast ?????????????????????

  3. Hervé Inisan dit :

    romeo > Est-ce que je pourrais avoir plus d’infos ?

  4. romeo dit :

    Bonsoir,
    je suis en train d’établir une base de donnée et je voudrais savoir qu’elle formule je dois utiliser pour passer un champ vide dans mon formulaire sans avoir le message d’erreur suivant : que la valeur est null le champ n’est pas de type variant. Merci pour votre livre et votre site.

  5. Hervé Inisan dit :

    Chris > S’il s’agit d’exécuter une requête Action (INSERT, UPDATE, DELETE), il faut passer par DoCmd.RunSQL (voir sur cet article). S’il faut parcourir une table sur un SELECT, il faut plutôt utiliser des Recordsets. Je n’ai pas encore écrit d’article spécifique là-dessus, mais il y a plusieurs billets qui font appel aux Recordsets : la liste des billets. Ouala !

  6. chris dit :

    J’aimerai inclure une requete sql dans un code VBA. je sais que ce n’est pas un commentaire lié au sujet mais je ne sais pas ou poser la question. t’aurais pas une adresse email ? D’autre part bravo pour ton site il est super et surtout : t’es vraiment trop fort !

  7. Hervé Inisan dit :

    Linaewen > Si une boîte de dialogue s’affiche pour demander le critère, ça veut généralement dire que le nom du formulaire ou du champ est mal orthographié, ou encore que le formulaire n’est pas ouvert lors de l’exécution de la requête. Ca peut être une piste… :-)

  8. Linaewen dit :

    Bonjour,

    J’ai un petit problème concernant le paramétrage de ma requête.
    Je travaille actuellement avec Access 2000 et lorsque j’utilise ta technique dans ma requête, elle m’affiche une boîte de dialogue à saisir au lieu d’effectuer le filtre demandé.

    Dans le critère j’ai inscrit la ligne suivante:
    [Forms]![frmDébut]![cmbLot]

    Et dans SQL j’obtiens le résultat suivant:
    SELECT *
    FROM [Site par Lot]
    WHERE ((([Site par Lot].ID_LOT)=[Forms]![frmDébut]![cmbLot]));

    “cmbLot” est une liste déroulante de mon formulaire “frmDébut”.

    Est-ce que j’ai fait une erreur quelque part?

    Bonne journée à tous,

  9. Hervé Inisan dit :

    Chris > En fait, avec des “*”, le critère s’écrirait plutôt : Comme "*" & Forms![frm Choix Films]![cmbAnnee] & "*". Mais j’éviterais, parce que le champ [Année] est de type Numérique, et que les caractères génériques sont plutôt faits pour les champs Texte (et dérivés comme Mémo, Lien hypertexte). Sur des moteurs de bases de données autres qu’Access/Jet, il faudrait d’ailleurs écrire une conversion explicite des données, pour éviter une erreur du style “Type incompatible”.

    D’autre part, il y a une différence de détail entre ton approche et la mienne : ta méthode extrait à partir de valeurs approchées (“le champ contient telle valeur”), alors que dans mon cas j’extrais des égalités strictes, et des correspondances exactes. Dans mon cas, si on tape 95 dans la liste déroulante, on n’obtient aucun film ; dans ta variante, on obtient les films des années 1950 ou 1995, par exemple (en supposant que la conversion passe toujours).

    Pour l’autre partie de la question : l’article traite plutôt de l’extraction de données lorsque les critères peuvent être vides. Il ne parle pas du cas où les données (et non plus les critères) sont vides. Je pars du principe, dans l’article, qu’un film qui n’a pas d’année ne répond pas au critère d’année. Si les films sans année doivent aussi être extraits, il suffit d’aménager le critère sur l’année en écrivant : Est Null Ou Nz([Forms]![frm Choix Films]![cmbAnnee];[Année])

    On peut faire pareil pour tous les autres champs qui seraient vides dans la table.

    Ouala !

  10. Chris dit :

    Ta fonction est magnifique, et elle aurait même pu etre remplacée par : Forms![frm Choix Films]!”*”&[cmbAnnee]&”*” ca revient au même. Mais il y a un minuscule petit problème : access ne prend pas en compte les films pour lesquels il n’y a aucune date de saisie, et il ne prend pas non plus en compte les films pour lequelles il y a une date mais pas de titre de film. exemple :
    Si un film x a été enregistré sans sa date, le film n’existe pas pour access !
    Comment faire ?
    A part ça félicitation pour ton site il est super !

  11. Hervé Inisan dit :

    Est-ce que tu as essayé ce qui est dit dans l’article, à savoir remplacer [Recherche Donnée] par Nz([Recherche Donnée]; [Nom du champ sur lequel s'applique le critère]) ?

  12. peck dit :

    Bonjour,
    Voila j’ai un petit probléme.
    J’ ai crée une requete de selection pour afficher une table en fonction d’une donnée. Pour se faire j’ai écrit [Recherche donnée] dans critères. Mais si l’utilisateur ne rentre pas une “donnée” j’aimerai qu’il affiche malgrés tout le champ de la donnée complet. Car la il m’affiche en ce moment ma table vide.
    Si quelqu’un pouvez m’aidé s’il vous plait merci
    Bonne journée à tous

  1. 7 juillet 2015

    Bonjour,
    Voila j’ai un petit probléme.
    J’ ai crée une requete de selection pour afficher une table en fonction d’une donnée. Pour se faire j’ai écrit [Recherche donnée] dans critères. Mais si l’utilisateur ne rentre pas une “donnée” j’aimerai qu’il affiche malgrés tout le champ de la donnée complet. Car la il m’affiche en ce moment ma table vide.
    Si quelqu’un pouvez m’aidé s’il vous plait merci
    Bonne journée à tous

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">