Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
962 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Access] Question technique sur une comparaison de chaine en VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Access] Question technique sur une comparaison de chaine en VBA

n°256475
wolf019
Posté le 28-11-2002 à 19:54:17  profilanswer
 

Lorsque l'on a une table admettons "client",  
avec un champ nommé "client_nom_entreprise".
 
A partir d'un formulaire, je souhaiterais que la personne,
puisse rechercher dans cette table "client" toutes  
les occurences qui contiennent la valeur de ce qu'à saisie la personne
dans une zone de texte.
pour cela, j'ai écrit le code, tres simple a faire.
le Hic, et c'est là que je bute :  
Si dans le champ "client_nom-entreprise" il y a par exemple une personne enregistrée en tant que "Mr Joshua", si la personne dans la zone de texte ecrit juste "joshua", access ne me trouvera rien.
ce que je cherche en fait, c'est trouver une formule qui me permette de chercher dans un Recorset une chaine de caractere.
et pas uniquement l'integralité.
Ceci pour permettre d'avoir un acces plus rapide a la recherche d'un client, car imaginons que l'on a : "les entrepots parisiens a coté de la riviere", si l'utilisateur tape "entrepots", il faudrait que cela me sorte chaque occurence qui conteitn le mot "entrepots".
Vous avez compris ?  :??:

mood
Publicité
Posté le 28-11-2002 à 19:54:17  profilanswer
 

n°256479
leirn
A.D.I.D.A.S.
Posté le 28-11-2002 à 20:07:47  profilanswer
 

via une requete sql?


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
n°256512
wolf019
Posté le 28-11-2002 à 21:07:03  profilanswer
 

ban je sais pas, j'y arrives pas.
a la base, j'ia en 1er lieu utilisé l'assistant de création de boutons et bètement utilisé la fonction "recherche" proposée par Access.
mais cela ne me convient pas, il y a trop de champpossibles, et pout l'utilisateur, je souhaite faire un truc simple.
Ensuite j'ai essayé de passer par des requetes, mais c'est toujours parail, si on utilise un critere de comparaison, ça ne va pas, car il ne va pas comprendre qu'il faut chercher une chaine de caractere parmis le contenu d'une table.
alors je suis passé par du code.
 
Voilà en gros ce que j'ai marqué, mais non finaloisé, uniquement pour tester voir si ça marche :  
 
Dim db As Database
    Dim chNomRecherche As String
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Select * from client" )
   
    If Me![texte_recherche].Value = "nom a rechercher" Then
        MsgBox "Vous devez saisir un nom avant de rechercher"
    Else
    chNomRecherche = Me![texte_recherche].Value
    End If
     
    rs.MoveFirst
    While rs.EOF = False
     
        If chNomRecherche Like rs![client_nom_societe] = True Then
            MsgBox "Trouvé !"
        End If
    rs.MoveNext
    Wend
    rs.Close
    Set db = Nothing

 
C'est la phrase en gras qui ne va pas.
Le like est considéré comme un "=".
J'ai vu qu'il y a une fonction CHERCHE, mais je n'arrive pas a la faire fonctionner en récuprérant directement en tant que criteres de la fonction la valeur du "textbox" du formulaire et lui indiquer directeùent qu'il faut chercher dans le recordset.

n°256525
leirn
A.D.I.D.A.S.
Posté le 28-11-2002 à 21:33:02  profilanswer
 

regarde plutot pour envoyer une requete sql sur la base


---------------
"Je brandirai une épée d'orichalque, je m'assouvirai sur des Templiers." | "Avec dans son sillage l'Ombre du Diable, Leirn appelait les morts pour une danse macabre et déchainaît les horreurs de la nuit..."
n°256527
wolf019
Posté le 28-11-2002 à 21:34:48  profilanswer
 

je veux bien, mais comment tu indiques a la requete SQL qu'elle ne doit extraire uniquement les elements de la table qui comportent une certaine chaine de caractere

n°256547
Bendes
Posté le 28-11-2002 à 21:45:40  profilanswer
 

Code :
  1. SELECT * FROM Clients WHERE client_nom_entreprise LIKE '*" & Me![texte_recherche].Value & "*'"


---------------
Plus un ordinateur possède de RAM, plus vite il peut générer un message d'erreur.
n°256563
wolf019
Posté le 28-11-2002 à 21:58:26  profilanswer
 

C'est vraiment gentil, mais la requete ne marche pas, la syntaxe est bnne, mais même avec la saisie d'un element qu iexiste, ya rien qui sort  :??:

n°256732
wolf019
Posté le 29-11-2002 à 08:31:11  profilanswer
 

personne n'a d'idée ?  :sweat:

n°256753
drasche
Posté le 29-11-2002 à 09:15:08  profilanswer
 

t'as vérifié si c'était pas une question de majuscules/minuscules?  c'est quoi le type de ton champ (enfin c'est vrai qu'en access ça ne devrait pas arriver - en principe -
 
sinon je vois pas.

n°256754
Cyrille999
Cyrille
Posté le 29-11-2002 à 09:22:39  profilanswer
 

wolf019 a écrit a écrit :

        If chNomRecherche Like rs![client_nom_societe] = True Then
             
C'est la phrase en gras qui ne va pas.
Le like est considéré comme un "=".




 
NON. Tu testes une chaine de caractère sur un booléan (true); C'est normal que ça ne marche pas.
 
Normalement, ce que t'a montré Bendes doit marcher; Tu dois concaténer ta valeur recherchée avec un * de chaque côté. Vérifies en lancant une requête avec ton champ et dans la requête tu indiques comme *entrepot*; Tu vas voir qu'ACCESS te donne les enregistrements choisis. Après à toi de changer ton code pour qu'il fonctionne.
 
Bonne chance
Cyrille, qui a corrigé ses fautes
PS: Like et COMME sont le même opérateur pour ACCESS


Message édité par Cyrille999 le 29-11-2002 à 09:25:13

---------------
L'imagination est plus importante que le savoir. Albert Einstein
mood
Publicité
Posté le 29-11-2002 à 09:22:39  profilanswer
 

n°256761
Cyrille999
Cyrille
Posté le 29-11-2002 à 09:28:23  profilanswer
 

wolf019 a écrit a écrit :

C'est vraiment gentil, mais la requete ne marche pas, la syntaxe est bnne, mais même avec la saisie d'un element qu iexiste, ya rien qui sort  :??:  




 
La requête de bendes fonctionne uniquement si tu as un champ Me![texte_recherche] dans ton formulaire.
 
De plus, si je me souviens bien (?), tu dois soit exécuter la requête, puis appliquer le filtre (pour avoir les données), soit .... (je me souviens plus).


---------------
L'imagination est plus importante que le savoir. Albert Einstein
n°256764
drasche
Posté le 29-11-2002 à 09:32:47  profilanswer
 

ben on doit pouvoir lancer toute la requête d'un coup sauf si c'est un comportement spécifique à Access.

n°256777
wolf019
Posté le 29-11-2002 à 09:47:22  profilanswer
 

effectivement, j'ai changé dans la requete  
 
*" & Me![texte_recherche].Value & "
 
par une valeur, cela fonctionne impeccable.
 
Ce que je ne comprends pas maintenant, c'est que je n'arrives pas a la faire fonctionner a partir du formulaire.
J'ai pourtant une zone de texte, correctement nommée "texte_recherche".

n°256824
wolf019
Posté le 29-11-2002 à 11:11:12  profilanswer
 

aie aie aie, je bute sur ce truc, j'aime pas access, mais j'ai pas le choix  :(  
 
qq'un peut m'aider pour relier cette requete au formulaire ?

n°256827
vttman2
Je suis Open ...
Posté le 29-11-2002 à 11:18:47  profilanswer
 

SELECT * FROM notact
where adr1 like  '*' & formulaires![formulaire2]![chp1].value & '*';
 
C'est bien ça ta syntaxe employée, pasque chez moi ça fonctionne ???
 
ici je fais référence à un objet : formulaires
le nom de cet objet  : formulaire2
le champ de cet objet  : chp1
La propriété : value
 
La table Access : notact
Le champ de la table Access : adr1
 
 ;)  
 
 

n°256836
wolf019
Posté le 29-11-2002 à 11:25:35  profilanswer
 

merci pour ton aide, ça marche maintenant.
mais si je regarde ta syntaxe avec celle que l'on m'a proposé juste au dessus, il y a une legere difference au niveua des guillemets.
quoi qu'il en soit, c'est bon, merci bcp !  :)  :hello:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [Access] Question technique sur une comparaison de chaine en VBA

 

Sujets relatifs
[Access] Récupérer une variable d'environnementQuestion sur un site web en ASP avec Access
une question bete....Question d'un débutant sur la fct mail(); (j'ai un msg d'erreur)
[PHP] Question sur cookie + panier de site web commercialquestion con... include un rep au dessus
connaitre la longueur d une chaine de caractere[TP en C ] Rechercher mot dans chaîne caractère
Question à propos de PHP 
Plus de sujets relatifs à : [Access] Question technique sur une comparaison de chaine en VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR