Recherche dans plusieurs champs en sql [Résolu]

Signaler
Messages postés
151
Date d'inscription
samedi 17 juillet 2004
Statut
Membre
Dernière intervention
11 mai 2012
-
Messages postés
151
Date d'inscription
samedi 17 juillet 2004
Statut
Membre
Dernière intervention
11 mai 2012
-
cher ami, voici mon problème :
je possède une table access avec les champs suivant:
NumFixe
NumGsm
NumFax
j'arrive pas a faire une recherche a la fois dans c'est trois champs

j'essayer :

je suis en DAO 3,6

Set sTemp = sDB.OpenRecordset("SELECT * FROM " & sTable & " WHERE " & NumFixe& " LIKE '" & sTextbox.Text & "*'", dbOpenDynaset)

cette syntaxe me recherche sur un seul champ par exp NumFixe
par contre ce que je veux c'est que la personne peut rechercher un numméro à la fois dans NumFixe, NumGsm,NumFax
merci pour l'aide
Merci à l'équipe

11 réponses

Messages postés
151
Date d'inscription
samedi 17 juillet 2004
Statut
Membre
Dernière intervention
11 mai 2012

voici mon ami une réponse que j'ai corriger ça marche impec
enfin merci pour l'aide, mille fois merci


Dim StrSqlTelNum As String
StrSqlTelNum = "SELECT * FROM CtcPerso"
StrSqlTelNum = StrSqlTelNum & " WHERE TelDom LIKE '" & FrmPatient.Text2(53).Text & "*'"
StrSqlTelNum = StrSqlTelNum & " Or TelDomIP LIKE '" & FrmPatient.Text2(53).Text & "*'"
StrSqlTelNum = StrSqlTelNum & " Or GSM1 LIKE '" & FrmPatient.Text2(53).Text & "*'"
StrSqlTelNum = StrSqlTelNum & " Or GSM2 LIKE '" & FrmPatient.Text2(53).Text & "*'"
StrSqlTelNum = StrSqlTelNum & " Or TelTrav1 LIKE '" & FrmPatient.Text2(53).Text & "*'"
StrSqlTelNum = StrSqlTelNum & " Or TelTrav2 LIKE '" & FrmPatient.Text2(53).Text & "*'"
StrSqlTelNum = StrSqlTelNum & " Or TelTravIP LIKE '" & FrmPatient.Text2(53).Text & "*'"
StrSqlTelNum = StrSqlTelNum & " Or Fax LIKE '" & FrmPatient.Text2(53).Text & "*'"
Set sDB = OpenDatabase(App.Path & "\MLDatasTel\RepTel.mdb")
Set sTemp = sDB.OpenRecordset(StrSqlTelNum)
Merci à l'équipe
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
A adapter

SELECT MSysObjects.*, MSysObjects.Database, MSysObjects.ForeignName, MSysObjects.Name
FROM MSysObjects
WHERE (((MSysObjects.Database) Like "aa" & "*")) OR (((MSysObjects.ForeignName) Like "aa" & "*")) OR (((MSysObjects.Name) Like "aa" & "*"));

Bonne journée
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Si NumFixe, NumGsm,NumFax sont du type numérique je dirais:

Set sTemp sDB.OpenRecordset("SELECT * FROM " & sTable & " WHERE " & NumFixe& " LIKE '" & sTextbox.Text & "*'" AND NumFixe " & nombre1 & " AND NumGsm= " & nombre2 " AND NumFax = " & nombre3 & ";" , dbOpenDynaset)

Si NumFixe, NumGsm,NumFax sont de types texte alors .

Set sTemp sDB.OpenRecordset("SELECT * FROM " & sTable & " WHERE " & NumFixe& " LIKE '" & sTextbox.Text & "*'" AND NumFixe '" & nombre1 & "' AND NumGsm= '" & nombre2 "' AND NumFax = '" & nombre3 & "';" , dbOpenDynaset)
Messages postés
151
Date d'inscription
samedi 17 juillet 2004
Statut
Membre
Dernière intervention
11 mai 2012

cher 4u4me4us

il m'affiche une erreur syntaxe dans

Si NumFixe, NumGsm,NumFax sont du type numérique je dirais:

Set sTemp sDB.OpenRecordset("SELECT * FROM " & sTable & " WHERE " & NumFixe& " LIKE '" & sTextbox.Text & "*'" AND NumFixe " & nombre1 & " AND NumGsm= " & nombre2 " AND NumFax = " & nombre3 & ";" , dbOpenDynaset)

erreur séparateur de liste ou )

et quand je met

Set sTemp sDB.OpenRecordset("SELECT * FROM " & sTable & " WHERE " & NumFixe & " LIKE '" & sTextbox.Text & "*'" AND NumFixe " & nombre1 & " AND NumGsm= " & nombre2 " AND NumFax = " & nombre3 & "
;" , dbOpenDynaset)

erreur séparateur de liste ou )



Si NumFixe, NumGsm,NumFax sont de types texte alors .

Set sTemp sDB.OpenRecordset("SELECT * FROM " & sTable & " WHERE " & NumFixe& " LIKE '" & sTextbox.Text & "*'" AND NumFixe '" & nombre1 & "' AND NumGsm= '" & nombre2 "' AND NumFax = '" & nombre3 & "';" , dbOpenDynaset)

erreur Attendu : expression
svp aidez moi et merci aussi pour c148270



Merci à l'équipe
Messages postés
151
Date d'inscription
samedi 17 juillet 2004
Statut
Membre
Dernière intervention
11 mai 2012

avec cette syntaxe

Set sTemp = sDB.OpenRecordset("SELECT MSysObjects.*, MSysObjects.Database, MSysObjects.ForeignName, MSysObjects.Name From MSysObjects WHERE (((MSysObjects.Database) Like "aa" & "*")) OR (((MSysObjects.ForeignName) Like "aa" & "*")) OR (((MSysObjects.Name) Like "aa" & "*"));

erreur : séparateur de liste ou )


Merci à l'équipe
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
J'ai oublier de te dire que j'ai tapé de tête, donc il faut adapter.

De plus j'espère que tu as changer nombre 1,2,3 par de vrais variable.
Messages postés
151
Date d'inscription
samedi 17 juillet 2004
Statut
Membre
Dernière intervention
11 mai 2012

toujours la même erreur mon ami

Merci à l'équipe
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
Dans l'exemple que je t'ai donné :
Set sTemp = sDB.OpenRecordset("SELECT MSysObjects.*, MSysObjects.Database, MSysObjects.ForeignName, MSysObjects.Name From MSysObjects WHERE (((MSysObjects.Database) Like 'aa' & '*')) OR (((MSysObjects.ForeignName) Like 'aa' & '*')) OR (((MSysObjects.Name) Like 'aa' & '*'));")

bonne journée
Messages postés
151
Date d'inscription
samedi 17 juillet 2004
Statut
Membre
Dernière intervention
11 mai 2012

désolé mon hière j'avais trops de patients avoir , donc j'ai pas pus consulter :
cette dernière solution m'affiche impossible de lire les enregistrements; pas d'autorisation de lecture de lecture sur MSysObjetcs
en plus j'arrive pas a adapter selon ma demande
merci de m'aidez


Merci à l'équipe
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour

Pour mon exemple, la réponse est normale.

Pour les autres vérifie l'écriture, elle répond à des règles stricts.
Voic en rouge quelques erreurs que j'ai pu repérer. Ils y en a peut-être d'autres

Set sTemp sDB.OpenRecordset("SELECT * FROM " & sTable & " WHERE " & NumFixe& " LIKE '" & sTextbox.Text & "*'" AND NumFixe " & nombre1 & " AND NumGsm= " & nombre2 " AND NumFax = " & nombre3 & ";" , dbOpenDynaset)

le & doit être précédé et suvi par un espace
toute chaîne de caractères commence et finie par "

"*'" = chaîne de caractères complète suivie de AND Numfix= " qui est une chaîne de caractère incomplète, le début n'est pas précisé

il doit y avoir un espace entre numgsm et le signe =

A toi la suite

bonne journée
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Utilise la méthode de c148270 et si cela ne fonctionne tjs pas affiche la requête.