2010-08-06 5 views
0

cela fonctionne si toutes les polices sont saisies par l'utilisateur. J'ai besoin d'un code qui combine toute la commande sql. l'utilisateur peut entrer dans un ou deux champs ou tous les trois champs. J'ai besoin de rechercher dans la base de données avec une requête de champ ou deux requêtes feild ou trois requêtes feilds.Requête SQL basée sur les critères

j'ai essayer avec où l'aide est une table & recherche test est forme pas de contrat &, nom d'utilisateur & date de Feild dans la base de données et les formes.

où l'aide (tableau) .cont_no (champ) est égale ou non à la recherche-test (formulaire nom) .cont_no (champ zone de texte)

SELECT * 
FROM help 
WHERE (forms ! [search-test] ! cont_no = '' 
      OR help.cont_no = forms ! [search-test] ! cont_no) 
     AND (forms ! [search-test] ! username = '' 
       OR help.username = forms ! [search-test] ! username) 
     AND (forms ! [search-test] ! cbo_date = '' 
       OR help.DATE = forms ! [search-test] ! cbo_date); 
+0

Votre question n'est pas très clair, pourriez-vous reformuler? En outre, vous pouvez mettre en forme le code sur stackoverflow en le mettant en retrait correctement (ou en utilisant la barre d'outils au-dessus de l'éditeur) – jeroenh

+0

Qu'en est-il des résultats qui font que ce code ne fonctionne pas? La logique semble être correcte. –

Répondre

0

Je pense que vous voulez dire est que vous veulent un enregistrement inclus dans le jeu de résultats si les champs d'enregistrement contiennent une correspondance avec les paramètres fournis. Si un paramètre spécifique n'est pas fourni, le champ correspondant doit toujours être considéré comme une correspondance positive. Autrement dit, si aucun paramètre n'a été fourni, la table entière doit être renvoyée. Comme pour une solution, juste une supposition (je ne suis pas un expert MS Access, est-ce pour MS Access?), Mais pouvez-vous utiliser la fonction iif pour forcer une correspondance à la place? Encore une fois, je ne suis pas sûr de la syntaxe, mais la logique sous-jacente devrait fonctionner.

Changer votre clause WHERE pour

WHERE 

(IIF(forms![search-test]!username is not null, forms![search-test]!username, help.cont_no) = help.cont_no 

AND 

(IIF(forms![search-test]!cont_no is not null, forms![search-test]!cont_no, help.username) = help.username 

AND 

(IIF(forms![search-test]!cbo_date is not null, forms![search-test]!cbo_date, help.dbo_date) = help.dbo_date 
Questions connexes