Recherche sur une bdd [Résolu]

Signaler
Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Statut
Membre
Dernière intervention
15 novembre 2012
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Bonjour
je suis à la recherche d'une solution pour faire une recherche dans ma bdd access
je m'explique
j'ai une bdd en access avec une colonne Date
dans ma colonne c'est afficher 01/01/2010
02/01/2010
01/01/2008
05/08/2009
25/12/2009
03/01/2010 ect...ect
dans un combobox je voudrais entrer 2010 et que mon application me donne toutes les dates qui comportent 2010 dans leurs dates(text).

Pour le moment j'ai essayé avec
Where date ='" & ComboBox1.Text & "'"
mais ce type de code ne fonctionnent pas pour cette recherche.

si qq'un a une idée

6 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Oups : Year renvoie un chiffre, pas un texte : il ne faut donc pas de ' d'encadrement de la valeur comparée.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Salut

Where Year([date]) = '" ...

Attention aux noms de champs qui sont aussi des mots réservés du langage : Utilise les crochets

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Statut
Membre
Dernière intervention
15 novembre 2012

Merci pour ta reponce
mais en fait mon code comme tu l'as bien dit pour le nom du champ reserver "Date" j'ai mis DT
donc mon code c'est exacetment
...FROM Historique Where DT ='" & ComboBox4.Text & "'"
...
lorsque je met Where year DT = '" & Combobox4.text & "'"cela ne marche pas ???
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
Et les parenthèses ?

Les crochets servent à autoriser les caractères accentués ou espaces dans les noms des champs ou pour forcer la désignation le nom d'un champ et pas l'interprétation d'un mot clé du langage.

Mais les parenthèses appartiennent à l'instruction Year. Il faut les mettre.

De plus, je t'ai précisé qu'il ne fallait pas encadrer la valeur de comparaison avec des ' puisque le champ ainsi interprété renverra un chiffre et plus un texte (en supposant qu'une date soit un texte)
Messages postés
104
Date d'inscription
samedi 5 juillet 2008
Statut
Membre
Dernière intervention
15 novembre 2012

bonjour Jack

tu me dit de mettre Where year DT = "..."
mais je n'ai pas présisé que mon champ est en format text et pas en format date/heure donc year ne peux pas marcher dans ce cas la?

est il possible de faire une recherche d'un mot des un texte d'un bdd access avec la meme methode?
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
NON, relis ce que j'ai écrit : je te dis de mettre
Where Year([le nom du champ]) = " & ...

Bien sûr, les ... sont là pour représenter la suite de ta syntaxe, ne va pas mettre réellement des points, réfléchis 30 sec !

Même si ton champ est de type texte, dans ce cas, tu vas utiliser une fonction pour isoler l'année dans ta date qui, elle, renvoie un chiffre.

Access n'est pas idiot et sait convertir du texte à condition qu'il ressemble à une date.
Le problème qui risque de se poser, c'est que les DB stockent et interprètent les dates au format US, donc il se peut que ton texte de date ne puisse être reconnu.
Il te suffit de faire l'essai pour le savoir (en mettant un n° de jour > 12).
En tel cas, il te faudra :
- soit utiliser du découpage de texte à la place de Year avec Mid ou Right (*)
- soit modifier le type de champ pour le mettre en vrai type Date général dans ta DB. Recommandé, surtout si tu dois faire ce genre de recherche.

(*) Tu trouveras toute l'aide qu'il te faut dans l'aide de l'éditeur VBA de Access et ces fonctions peuvent, en général, être utilisées dans une syntaxe SQL sous Access.