Comment utiliser la technique de requête par formulaire (QBF) dans Microsoft Access

Numéro de la base de connaissances d’origine : 304428

Remarque

Vous devez disposer de connaissances de base en macro, codage et interopérabilité avant de commencer. Cet article sʼapplique uniquement à une base de données Microsoft Access (.accdb ou .mdb).

Résumé

Cet article explique comment utiliser un formulaire pour spécifier les critères d’une requête. Cette technique est appelée requête par formulaire (QBF).

Informations supplémentaires

Dans la technique QBF, vous créez un formulaire dans lequel vous entrez des critères de requête. Ce formulaire contient des zones de texte vides. Chaque zone de texte représente un champ dans une table que vous souhaitez interroger. Vous ne créez des entrées que dans les zones de texte pour lesquelles vous souhaitez spécifier des critères de recherche.

Le formulaire QBF ressemble à un formulaire de saisie de données qui contient des champs qui correspondent aux champs d’une table. Une table qui contient des champs nom, adresse, ville, état et code postal peut avoir un formulaire QBF qui contient des champs correspondants. Pour sélectionner certains enregistrements, vous pouvez entrer n’importe quelle combinaison de critères de recherche dans le formulaire. Vous pouvez spécifier une ville uniquement, une ville et un état, un code postal uniquement, ou toute autre combinaison. Les champs que vous laissez vides sont ignorés. Lorsque vous cliquez sur un bouton de commande dans le formulaire, Access exécute une requête qui utilise les critères de recherche de votre formulaire.

Pour utiliser la technique QBF, procédez comme suit :

  1. Ouvrez l’exemple de base de données Northwind.mdb.

  2. Créez un formulaire qui n’est basé sur aucune table ou requête, puis enregistrez-le en tant que QBF_Form.

  3. Dans le nouveau formulaire, créez deux zones de texte et un bouton de commande qui a les propriétés suivantes. Ensuite, enregistrez le formulaire :

    Text box 1
    ------------------
    Name: WhatCustomer
    
    Text box 2
    ------------------
    Name: WhatEmployee
    
    Command button 1:
    ------------------
    Caption: Search
    OnClick: QBF_Macro
    
  4. Créez la macro suivante, puis enregistrez-la sous QBF_Macro :

    Action: OpenQuery
    Query Name: QBF_Query
    View: Datasheet
    Data Mode: Edit
    
  5. Créez la requête suivante basée sur la table Orders, puis enregistrez-la sous QBF_Query :

    Field: CustomerID
    Sort: Ascending
    Criteria: Forms![QBF_Form]![WhatCustomer] Or Forms![QBF_Form]![WhatCustomer] Is Null
    
    Field: EmployeeID
    Sort: Ascending
    Criteria: Forms![QBF_Form]![WhatEmployee] Or Forms![QBF_Form]![WhatEmployee] Is Null
    
    NOTE: When you type the criteria, make sure that you type the entire criteria in a single Criteria field; do not split the criteria by placing the 'Or' section on a separate row.  
    
    Field: OrderID
    Field: OrderDate
    
  6. Ouvrez QBF_Form dans l’affichage Formulaire. Entrez les combinaisons de critères suivantes. Cliquez sur Rechercher après chaque combinaison :

    Customer ID   Employee ID  Result
    -------------------------------------------------------
    <blank>       <blank>      All 830 orders
    
    AROUT         <blank>      13 orders
    
    AROUT         4            4 AROUT orders for employee 4
    
    <blank>       4            156 orders for employee 4
    

Après avoir consulté le jeu de résultats pour chaque requête, fermez la fenêtre Feuille de données. Ensuite, commencez votre recherche suivante. Chaque fois que vous cliquez sur le bouton Rechercher , les paramètres de la requête QBF filtrent les données en fonction des critères de recherche que vous avez spécifiés dans le formulaire de requête QBF.

Remarques sur les critères du paramètre QBF

L’exemple de requête QBF de cet article implémente des critères dans la requête en tant que

Formes! FormName ! Nom_contrôleOu Forms ! FormName ! Nom_contrôleEst Null

pour filtrer les données. Ces critères retournent tous les enregistrements correspondants. Si la valeur du critère est null, tous les enregistrements sont retournés pour le champ spécifié.

Vous pouvez spécifier l’un des autres critères suivants pour retourner des résultats légèrement différents.

Remarque

Dans l’exemple de critère suivant, un trait de soulignement (_) est utilisé comme caractère de continuation de ligne. Supprimez le trait de soulignement à la fin de la ligne lorsque vous recréez ces critères.

  • J’aime les formulaires ! FormName ! ControlName& « * » ou _ Forms ! FormName ! Nom_contrôleEst Null

    Cette instruction de critère est identique à l’exemple QBF ci-dessus, sauf que vous pouvez interroger à l’aide d’un caractère générique. Par exemple, si vous entrez « Jo » dans un champ à l’aide de cette instruction de critère, la requête retourne chaque enregistrement du champ qui commence par « Jo ». Cela inclut Johnson, Jones, Johanna, etc.

  • Entre les formulaires ! FormName ! StartDate et forms ! FormName ! EndDate ou _ Forms ! FormName ! StartDate a la valeur Null

    Vous pouvez utiliser cette instruction de critères pour interroger un champ de date à l’aide des zones de texte Date de début et Date de fin du formulaire de requête. Les enregistrements dont les dates de début et de fin se situent entre les valeurs que vous spécifiez dans le formulaire de requête sont retournés. Toutefois, si vous omettez une valeur Date de début dans le formulaire, la requête retourne tous les enregistrements, quelle que soit la valeur Date de fin.

  • J’aime les formulaires ! FormName ! ControlName& « * » ou a la valeur Null

    Cette instruction de critères retourne à la fois les enregistrements qui correspondent aux critères et les enregistrements qui sont null. Si les critères sont null, tous les enregistrements sont retournés. Notez que l’astérisque (*) est considéré comme un paramètre, car il fait partie d’une expression Like plus grande. Étant donné que l’astérisque est une valeur de critère codée en dur (par exemple, « * »), les enregistrements avec des valeurs null sont retournés.

  • Like IIf(IsNull(Forms !FormName ! [ControlName]), _ « * »,[Forms] ! [FormName] ! [ControlName])

    Cette instruction criteria retourne tous les enregistrements qui correspondent aux critères. Si aucun critère n’est spécifié dans le formulaire de requête, tous les enregistrements qui ne sont pas null sont retournés.

  • IIf(IsNull(Forms !FormName ! [ControlName]), _ [FieldName],[Forms] ! [FormName] ! [ControlName])

    Cette opération retourne tous les enregistrements qui correspondent aux critères. Si aucun critère n’est spécifié dans le formulaire de requête, tous les enregistrements qui ne sont pas null sont retournés (le même résultat que dans l’exemple ci-dessus).