OVH Cloud OVH Cloud

Parcourir la table

30 réponses
Avatar
yannick
Bojour,
je voudrais savoir si sur access on pouvait rechercher un mot dans une table
entiere
(non pour un seul champs mais pour tous les champs de cette table)
exemple: table client avec les champs suivant
id nom adresse cp ville
01 toto rue fr 75000 paris
02 tata rue de 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

j'aimerais obtenir toutes les enregistrement qui présentent le mot "to"

le résultat serait donc :
id nom adresse cp ville
01 toto rue fr 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

J'espère que j'ai été assez explicite.

Merci pour toutes aides

Bon week end

Yannick

10 réponses

1 2 3
Avatar
Eric
Bonjour,

Tu fais une requête basée sur un sql du genre :
SELECT *
FROM LaTable
WHERE nom LIKE "*to*" OR adresse LIKE "*to*" OR cp LIKE "*to*" OR ville
LIKE "*to*";

(J'ai mis le cp mais bon ... c'est pour le cas ou le cp n'est pas
obligatoirement un cp français)

Bojour,
je voudrais savoir si sur access on pouvait rechercher un mot dans une table
entiere
(non pour un seul champs mais pour tous les champs de cette table)
exemple: table client avec les champs suivant
id nom adresse cp ville
01 toto rue fr 75000 paris
02 tata rue de 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

j'aimerais obtenir toutes les enregistrement qui présentent le mot "to"

le résultat serait donc :
id nom adresse cp ville
01 toto rue fr 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

J'espère que j'ai été assez explicite.

Merci pour toutes aides

Bon week end

Yannick


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Bonjour,

le plus simple est de bâtir une requete comme ceci :

afficher tous les champs de la table
ajouter une derniere colonne (champ calculé) expr1:nom&adresse&ville
décocher ce champ pour qu'il n'apparaisse pas dans le résultat
ajouter le critère like "*to*" sur le champ calculé

ça donnera

Select id,nom,adresse,cp,ville
from latable
where nom&adresse&ville like "*to"

Si ça ne fonctionne pas, tu peux appuyer sur le bouton sigma et modifier
l'opération regroupement de ce dernier champ calculé
par l'opération où

ça donnera

Select id,nom,adresse,cp,ville
from latable
having nom&adresse&ville like "*to"
group by id,nom,adresse,cp,ville

(j'ai un doute sur les 2 solutions lorsqu'on met une clause sur un champ
calculé

Voilà
ps : éviter un champ nommé "nom" qui est une fonction interne à access.
Préférer "NomClient". ça permet de s'y retrouver plus facilement lorsque tu
utilises plusieurs tables avec des champs similaires.
AdresseClient, AdresseFournisseur sera plus facile à exploiter que Adresse
tout court qui se trouve dans plusieurs tables ou requetes.


--
A+
Arnaud
-----------------------------------------------------
Tout ce qu'il faut savoir est sur http://www.mpfa.info
-----------------------------------------------------





"yannick" a écrit dans le message de
news:
Bojour,
je voudrais savoir si sur access on pouvait rechercher un mot dans une
table

entiere
(non pour un seul champs mais pour tous les champs de cette table)
exemple: table client avec les champs suivant
id nom adresse cp ville
01 toto rue fr 75000 paris
02 tata rue de 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

j'aimerais obtenir toutes les enregistrement qui présentent le mot "to"

le résultat serait donc :
id nom adresse cp ville
01 toto rue fr 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

J'espère que j'ai été assez explicite.

Merci pour toutes aides

Bon week end

Yannick


Avatar
yannick
Sympa, cela fonctionne , je n'ai plus qu'ameliorer cela, je n'y avait pas
penser au or de chaque champs car je faisais
SELECT *
FROM LaTable
WHERE * LIKE "*to*"
mais cela ne fonctionne pas

J'ai 21 champs dans ma table client je suis obliger de faire autant de OR
que de champs, ça a l'air de fonctionner. Un peu long a m'afficher le
resultat. Est- on limité dans la clause where avec OR
et sinon ma table contient a ce jour 10 000 enregistrements est ce que je
serais bloque avec ce select.

J'ai essayer la méthode de Arnaud mais cela ne fonctionne pas. Laquelle est
la plus judicieuse

Merci à tous les deux.

Yannick



Bonjour,

Tu fais une requête basée sur un sql du genre :
SELECT *
FROM LaTable
WHERE nom LIKE "*to*" OR adresse LIKE "*to*" OR cp LIKE "*to*" OR ville
LIKE "*to*";

(J'ai mis le cp mais bon ... c'est pour le cas ou le cp n'est pas
obligatoirement un cp français)

Bojour,
je voudrais savoir si sur access on pouvait rechercher un mot dans une table
entiere
(non pour un seul champs mais pour tous les champs de cette table)
exemple: table client avec les champs suivant
id nom adresse cp ville
01 toto rue fr 75000 paris
02 tata rue de 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

j'aimerais obtenir toutes les enregistrement qui présentent le mot "to"

le résultat serait donc :
id nom adresse cp ville
01 toto rue fr 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

J'espère que j'ai été assez explicite.

Merci pour toutes aides

Bon week end

Yannick


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




Avatar
Eric
re,
La 1ere requête d'Arnaud fonctionne, manque juste une * dans le Like et
elle doit être plus performante. Il indique de mettre like "*to*" et
dans l'instruction sql il a oublié l'* après to.
Pour 21 champs, comme pour 3 tout compte fait, je prendrai celle
d'Arnaud. Il a été plus perspicace ;-)

Sympa, cela fonctionne , je n'ai plus qu'ameliorer cela, je n'y avait pas
penser au or de chaque champs car je faisais
SELECT *
FROM LaTable
WHERE * LIKE "*to*"
mais cela ne fonctionne pas

J'ai 21 champs dans ma table client je suis obliger de faire autant de OR
que de champs, ça a l'air de fonctionner. Un peu long a m'afficher le
resultat. Est- on limité dans la clause where avec OR
et sinon ma table contient a ce jour 10 000 enregistrements est ce que je
serais bloque avec ce select.

J'ai essayer la méthode de Arnaud mais cela ne fonctionne pas. Laquelle est
la plus judicieuse

Merci à tous les deux.

Yannick




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Salut Eric

Merci pour la correction ;-)

--
A+
Arnaud
-----------------------------------------------------
Tout ce qu'il faut savoir est sur http://www.mpfa.info
-----------------------------------------------------


"Eric"
re,
La 1ere requête d'Arnaud fonctionne, manque juste une * dans le Like et
elle doit être plus performante. Il indique de mettre like "*to*" et
dans l'instruction sql il a oublié l'* après to.
Pour 21 champs, comme pour 3 tout compte fait, je prendrai celle
d'Arnaud. Il a été plus perspicace ;-)

Sympa, cela fonctionne , je n'ai plus qu'ameliorer cela, je n'y avait
pas


penser au or de chaque champs car je faisais
SELECT *
FROM LaTable
WHERE * LIKE "*to*"
mais cela ne fonctionne pas

J'ai 21 champs dans ma table client je suis obliger de faire autant de
OR


que de champs, ça a l'air de fonctionner. Un peu long a m'afficher le
resultat. Est- on limité dans la clause where avec OR
et sinon ma table contient a ce jour 10 000 enregistrements est ce que
je


serais bloque avec ce select.

J'ai essayer la méthode de Arnaud mais cela ne fonctionne pas. Laquelle
est


la plus judicieuse

Merci à tous les deux.

Yannick




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
yannick
Merci pour tous
les 2 solutions fonctionnent je prendrait celle de Arnaud

je remercie Arnaud et Eric

Bon week end


Bonjour,

le plus simple est de bâtir une requete comme ceci :

afficher tous les champs de la table
ajouter une derniere colonne (champ calculé) expr1:nom&adresse&ville
décocher ce champ pour qu'il n'apparaisse pas dans le résultat
ajouter le critère like "*to*" sur le champ calculé

ça donnera

Select id,nom,adresse,cp,ville
from latable
where nom&adresse&ville like "*to"

Si ça ne fonctionne pas, tu peux appuyer sur le bouton sigma et modifier
l'opération regroupement de ce dernier champ calculé
par l'opération où

ça donnera

Select id,nom,adresse,cp,ville
from latable
having nom&adresse&ville like "*to"
group by id,nom,adresse,cp,ville

(j'ai un doute sur les 2 solutions lorsqu'on met une clause sur un champ
calculé

Voilà
ps : éviter un champ nommé "nom" qui est une fonction interne à access.
Préférer "NomClient". ça permet de s'y retrouver plus facilement lorsque tu
utilises plusieurs tables avec des champs similaires.
AdresseClient, AdresseFournisseur sera plus facile à exploiter que Adresse
tout court qui se trouve dans plusieurs tables ou requetes.


--
A+
Arnaud
-----------------------------------------------------
Tout ce qu'il faut savoir est sur http://www.mpfa.info
-----------------------------------------------------





"yannick" a écrit dans le message de
news:
Bojour,
je voudrais savoir si sur access on pouvait rechercher un mot dans une
table

entiere
(non pour un seul champs mais pour tous les champs de cette table)
exemple: table client avec les champs suivant
id nom adresse cp ville
01 toto rue fr 75000 paris
02 tata rue de 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

j'aimerais obtenir toutes les enregistrement qui présentent le mot "to"

le résultat serait donc :
id nom adresse cp ville
01 toto rue fr 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

J'espère que j'ai été assez explicite.

Merci pour toutes aides

Bon week end

Yannick







Avatar
Eric
.../...
ou encore te faire une fonction personnelle qui fait la concaténation
des 21 champs et que tu utilises dans ta requête. Ca t'évitera de faire
ça à la main.

Exemple simplifié qui ne marche que pour les clés numériques. Fonction
Kumquat ( ;-) ) à copier dans un module de portée globale. Charger la
référence DAO 3.x Object Libray dans les références de la fenêtre VBA

Function Kumquat(strNomTable As String, strCle As String, _
lngRang As Long) As String
' Ne marche que pour les clés numériques
Dim rst As DAO.Recordset, f As DAO.Field, newf As String
Set rst = CurrentDb.OpenRecordset( _
"Select * from [" & strNomTable & "] Where [" _
& strCle & "]=" & lngRang)
For Each f In rst.Fields
newf = newf & f.Value
Next f
Kumquat = newf
rst.Close
Set rst = Nothing
End Function

Et la requête:
SELECT *
FROM LaTable
WHERE Kumquat("LaTable","id",[id]) Like "*to*";

où à la fonction, tu passes en 1er argument le nom de la table, puis le
nom de la clé et enfin le champ clé

Sympa, cela fonctionne , je n'ai plus qu'ameliorer cela, je n'y avait pas
penser au or de chaque champs car je faisais
SELECT *
FROM LaTable
WHERE * LIKE "*to*"
mais cela ne fonctionne pas

J'ai 21 champs dans ma table client je suis obliger de faire autant de OR
que de champs, ça a l'air de fonctionner. Un peu long a m'afficher le
resultat. Est- on limité dans la clause where avec OR
et sinon ma table contient a ce jour 10 000 enregistrements est ce que je
serais bloque avec ce select.

J'ai essayer la méthode de Arnaud mais cela ne fonctionne pas. Laquelle est
la plus judicieuse

Merci à tous les deux.

Yannick




Bonjour,

Tu fais une requête basée sur un sql du genre :
SELECT *
FROM LaTable
WHERE nom LIKE "*to*" OR adresse LIKE "*to*" OR cp LIKE "*to*" OR ville
LIKE "*to*";

(J'ai mis le cp mais bon ... c'est pour le cas ou le cp n'est pas
obligatoirement un cp français)


Bojour,
je voudrais savoir si sur access on pouvait rechercher un mot dans une table
entiere
(non pour un seul champs mais pour tous les champs de cette table)
exemple: table client avec les champs suivant
id nom adresse cp ville
01 toto rue fr 75000 paris
02 tata rue de 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

j'aimerais obtenir toutes les enregistrement qui présentent le mot "to"

le résultat serait donc :
id nom adresse cp ville
01 toto rue fr 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

J'espère que j'ai été assez explicite.

Merci pour toutes aides

Bon week end

Yannick


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr



Avatar
Eric
re,
Pour le fun je t'ai fait une petite fonction pour concaténer tes 21
champs, regardes si ca peut te servir.

Merci pour tous
les 2 solutions fonctionnent je prendrait celle de Arnaud

je remercie Arnaud et Eric

Bon week end



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
yannick
En fin de compte pour la concatenation j'ai mis des espaces entre chaque champs
j'ai essayer ta fonction sur une table de 21409 enregistrements, ma requete
est hyper longue a s'executer
sinon c'est dommage qu'on ne puisse pas utilser ta fonction pour des clé
alpha car ma table client est en alpha
j'ai essayé cela ne fonctionne pas on ne peut pas y remedier?
j'ai donc fait champs par champs. quand j'utilise la premiere solution que
tu m'as donneé avec le OR ou la solution de Arnaud (concatenation) j'ai la
meme rapidité
J'aimerais savoir laquelle solution solicite moins la machine?

Cordialement



..../...
ou encore te faire une fonction personnelle qui fait la concaténation
des 21 champs et que tu utilises dans ta requête. Ca t'évitera de faire
ça à la main.

Exemple simplifié qui ne marche que pour les clés numériques. Fonction
Kumquat ( ;-) ) à copier dans un module de portée globale. Charger la
référence DAO 3.x Object Libray dans les références de la fenêtre VBA

Function Kumquat(strNomTable As String, strCle As String, _
lngRang As Long) As String
' Ne marche que pour les clés numériques
Dim rst As DAO.Recordset, f As DAO.Field, newf As String
Set rst = CurrentDb.OpenRecordset( _
"Select * from [" & strNomTable & "] Where [" _
& strCle & "]=" & lngRang)
For Each f In rst.Fields
newf = newf & f.Value
Next f
Kumquat = newf
rst.Close
Set rst = Nothing
End Function

Et la requête:
SELECT *
FROM LaTable
WHERE Kumquat("LaTable","id",[id]) Like "*to*";

où à la fonction, tu passes en 1er argument le nom de la table, puis le
nom de la clé et enfin le champ clé

Sympa, cela fonctionne , je n'ai plus qu'ameliorer cela, je n'y avait pas
penser au or de chaque champs car je faisais
SELECT *
FROM LaTable
WHERE * LIKE "*to*"
mais cela ne fonctionne pas

J'ai 21 champs dans ma table client je suis obliger de faire autant de OR
que de champs, ça a l'air de fonctionner. Un peu long a m'afficher le
resultat. Est- on limité dans la clause where avec OR
et sinon ma table contient a ce jour 10 000 enregistrements est ce que je
serais bloque avec ce select.

J'ai essayer la méthode de Arnaud mais cela ne fonctionne pas. Laquelle est
la plus judicieuse

Merci à tous les deux.

Yannick




Bonjour,

Tu fais une requête basée sur un sql du genre :
SELECT *
FROM LaTable
WHERE nom LIKE "*to*" OR adresse LIKE "*to*" OR cp LIKE "*to*" OR ville
LIKE "*to*";

(J'ai mis le cp mais bon ... c'est pour le cas ou le cp n'est pas
obligatoirement un cp français)


Bojour,
je voudrais savoir si sur access on pouvait rechercher un mot dans une table
entiere
(non pour un seul champs mais pour tous les champs de cette table)
exemple: table client avec les champs suivant
id nom adresse cp ville
01 toto rue fr 75000 paris
02 tata rue de 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

j'aimerais obtenir toutes les enregistrement qui présentent le mot "to"

le résultat serait donc :
id nom adresse cp ville
01 toto rue fr 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

J'espère que j'ai été assez explicite.

Merci pour toutes aides

Bon week end

Yannick


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr






Avatar
Eric
re,

Si la clé de la table est alphanumérique (texte),
Tu remplaces cette ligne :
Set rst = CurrentDb.OpenRecordset( _
"Select * from [" & strNomTable & "] Where [" _
& strCle & "]=" & lngRang)

par :
Set rst = CurrentDb.OpenRecordset( _
"Select * from [" & strNomTable & "] Where [" _
& strCle & "]='" & lngRang & "'")

En fin de compte pour la concatenation j'ai mis des espaces entre chaque champs
j'ai essayer ta fonction sur une table de 21409 enregistrements, ma requete
est hyper longue a s'executer
sinon c'est dommage qu'on ne puisse pas utilser ta fonction pour des clé
alpha car ma table client est en alpha
j'ai essayé cela ne fonctionne pas on ne peut pas y remedier?
j'ai donc fait champs par champs. quand j'utilise la premiere solution que
tu m'as donneé avec le OR ou la solution de Arnaud (concatenation) j'ai la
meme rapidité
J'aimerais savoir laquelle solution solicite moins la machine?

Cordialement




..../...
ou encore te faire une fonction personnelle qui fait la concaténation
des 21 champs et que tu utilises dans ta requête. Ca t'évitera de faire
ça à la main.

Exemple simplifié qui ne marche que pour les clés numériques. Fonction
Kumquat ( ;-) ) à copier dans un module de portée globale. Charger la
référence DAO 3.x Object Libray dans les références de la fenêtre VBA

Function Kumquat(strNomTable As String, strCle As String, _
lngRang As Long) As String
' Ne marche que pour les clés numériques
Dim rst As DAO.Recordset, f As DAO.Field, newf As String
Set rst = CurrentDb.OpenRecordset( _
"Select * from [" & strNomTable & "] Where [" _
& strCle & "]=" & lngRang)
For Each f In rst.Fields
newf = newf & f.Value
Next f
Kumquat = newf
rst.Close
Set rst = Nothing
End Function

Et la requête:
SELECT *
FROM LaTable
WHERE Kumquat("LaTable","id",[id]) Like "*to*";

où à la fonction, tu passes en 1er argument le nom de la table, puis le
nom de la clé et enfin le champ clé


Sympa, cela fonctionne , je n'ai plus qu'ameliorer cela, je n'y avait pas
penser au or de chaque champs car je faisais
SELECT *
FROM LaTable
WHERE * LIKE "*to*"
mais cela ne fonctionne pas

J'ai 21 champs dans ma table client je suis obliger de faire autant de OR
que de champs, ça a l'air de fonctionner. Un peu long a m'afficher le
resultat. Est- on limité dans la clause where avec OR
et sinon ma table contient a ce jour 10 000 enregistrements est ce que je
serais bloque avec ce select.

J'ai essayer la méthode de Arnaud mais cela ne fonctionne pas. Laquelle est
la plus judicieuse

Merci à tous les deux.

Yannick





Bonjour,

Tu fais une requête basée sur un sql du genre :
SELECT *

FROM LaTable

WHERE nom LIKE "*to*" OR adresse LIKE "*to*" OR cp LIKE "*to*" OR ville
LIKE "*to*";

(J'ai mis le cp mais bon ... c'est pour le cas ou le cp n'est pas
obligatoirement un cp français)



Bojour,
je voudrais savoir si sur access on pouvait rechercher un mot dans une table
entiere
(non pour un seul champs mais pour tous les champs de cette table)
exemple: table client avec les champs suivant
id nom adresse cp ville
01 toto rue fr 75000 paris
02 tata rue de 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

j'aimerais obtenir toutes les enregistrement qui présentent le mot "to"

le résultat serait donc :
id nom adresse cp ville
01 toto rue fr 75000 paris
03 titi toto 75000 paris
04 tutu rue 75000 tokkkkk

J'espère que j'ai été assez explicite.

Merci pour toutes aides

Bon week end

Yannick


--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr





1 2 3