Mini moteur de recherche sous access

Mini moteur de recherche sous access - VB/VBA/VBS - Programmation

Marsh Posté le 05-07-2004 à 17:01:40    

bon je voudrais que lorsque j'ouvre le formulaire, dans n'importe quel enregistrement, lorsque je tape un lettre dans le champ de la clef primaire, access m'ammene au 1er enregistrement commencant par cette lettre et plus je precise le mot plus access fais des mise a jour
( en gros un peu comme dans vb apres un point, une liste de choix apparait et defile selon ce que l'on tape )
 
deuxieme chose: je voudrais que le curseur se mettent dans la zone de texte apres avoir cliquer sur un bouton
 
troisieme chose (reglé): dans mon formulaire, lorsque je clique sur tab, le curseur ne navigues pas entre les champs comme je le voudrais, passe du premier a la dixieme zone de texte. Comment faire pour changer cela ?
 
merci d'avance


Message édité par Mr Mazurier le 05-07-2004 à 17:34:37
Reply

Marsh Posté le 05-07-2004 à 17:01:40   

Reply

Marsh Posté le 05-07-2004 à 17:07:53    

1- ?
2- Voir objet.SetFocus (qui envoie le curseur sur l'objet)
3- Voir propriété TabIndex (qui donne la sequence de selection quand on appuie sur "TAB" ).

Reply

Marsh Posté le 05-07-2004 à 17:08:52    

Mazurier veux, HFR donner


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 05-07-2004 à 17:20:00    

ben j'avais deja essayé pour setfocus mais ca marche po !
j'ai fait zonetext.setfocus (je pense que c'est tout ce qu'il faut mettre ) mais il veut pas
 
merci pour le 3
 
pour le 1, je voudrais, par exemple taper blue dans la zone de texte et qu'il affiche l'enregistrement qui lui ressemble le plus, donc bluecom
 
je vais ressayer pour le 2
 
"Mazurier veux, HFR donner"
 
sinon desole de pas tout savoir mais j'ai essayer avant avec ce que je savais et avec google mais j'ai pas d'idée alors c'est pas evident de rechercher quelque chose que l'on imagine meme pas.


Message édité par Mr Mazurier le 05-07-2004 à 17:33:53
Reply

Marsh Posté le 06-07-2004 à 14:13:59    

plize ... help !

Reply

Marsh Posté le 07-07-2004 à 15:50:01    

il me reste que la recherche, le reste est reglée
j'ai une requete :
      Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom LIKE '" & strnom & "';" )
      Set rs = qdReq.OpenRecordset
 
mais meme avec like, si je tape blueco, il ne trouve pas bluecom. je comprend pas... y un truc de pas bon ?
 
et puis comme le nom de l'entre prsie est la clé primaire, il m'affiche un erreur qd je change d'enregistrement. Faut il que je mette une numéroauto comme clé primaire ou y a til une autre solution ?

Reply

Marsh Posté le 07-07-2004 à 16:05:17    

LIKE c'est comme =, mais pour les chaines de caractères. il faut mettre le caractère générique %.
 
SELECT * FROM maTable WHERE monNom LIKE '%blueco%'


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 07-07-2004 à 16:08:06    

ok j'éssai

Reply

Marsh Posté le 07-07-2004 à 16:15:15    

JagStang a écrit :

LIKE c'est comme =, mais pour les chaines de caractères


[:hide]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 16:23:53    


vi mossieur.
 
c'est pour lui dire que faire LIKE 'truc' équivaut à faire = 'truc'
 
tu me suis ?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 07-07-2004 à 16:23:53   

Reply

Marsh Posté le 07-07-2004 à 16:25:47    

JagStang a écrit :

vi mossieur.
 
c'est pour lui dire que faire LIKE 'truc' équivaut à faire = 'truc'
 
tu me suis ?


ben...non.
spa pareil, sinon LIKE n'aurait pas d'intérêt...[:joce]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 16:28:06    

et ça fonctionne pour les chiffres, testé à l'instant :

Code :
  1. SQL> select cod_anu from annee_uni where cod_anu LIKE '20%';
  2. COD_
  3. ----
  4. 2000
  5. 2001
  6. 2002
  7. 2003
  8. 2004


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 16:29:48    

ah merde c'est un varchar en fait...je teste avec un number...:whistle:
 
 
[edit]
 
 
avec un number ça fonctionne aussi...
 

Code :
  1. SQL> desc individu;
  2. Name                            Null?    Type
  3. ------------------------------- -------- ----
  4. COD_IND                         NOT NULL NUMBER(8)
  5. [...]
  6. SQL> select cod_ind from individu where cod_ind like '20%';
  7.   COD_IND
  8. ---------
  9.        20
  10.       200
  11.       201
  12.       202
  13.       203
  14.       204
  15.       205
  16.       206
  17.       207
  18.       208
  19.       209
  20.      2000


Message édité par skeye le 07-07-2004 à 16:32:12

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 16:35:45    

bon ben avec mon code  
 
Dim strnom As String
Dim rs As DAO.Recordset
Dim qdReq As DAO.QueryDef
       
      strnom = Ent_nom
      Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom LIKE '%" & strnom & "%';" )
      Set rs = qdReq.OpenRecordset
       
  If rs.EOF And rs.BOF Then
    MsgBox "vide"
    Exit Sub
  End If
 
       
      Ent_nom.SetFocus
      Ent_nom.Text = rs.Fields("ent_nom" )
      Ent_adr.SetFocus
      Ent_adr.Text = rs.Fields("ent_adr" )
 
 
il m'affiche vide. or ce n'est pas vrai, il y a deux champs dans cette table. ai je fais une erreur dans mon code ?
je pense que c'est ma requete ...

Reply

Marsh Posté le 07-07-2004 à 16:38:49    

Tu peux afficher la requête générée à l'exécution?


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 16:41:52    

skeye a écrit :

ben...non.
spa pareil, sinon LIKE n'aurait pas d'intérêt...[:joce]


au niveau de la compréhension bobet.
 
sinon essaie de faire un ='%skeyeFouteurDeMerde%'


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 07-07-2004 à 16:48:44    

Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom = '%" & strnom & "%';" )
 
elle est pas grande et quand elle s'execute ( lorsque le ent_nom est modifié, c'est une zone de texte ) il me dit, arrivé a

Reply

Marsh Posté le 07-07-2004 à 16:50:03    

Ent_nom.Text = rs.Fields("ent_nom" ) qu'il n'y a aucun enregistrement en cours

Reply

Marsh Posté le 07-07-2004 à 16:50:37    

Mr Mazurier a écrit :

Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom = '%" & strnom & "%';" )


après ça fait afficher ta requête dans le navigateur, s'il y a une erreur tu le verras plus facilement...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 17:08:33    

bon je suis revenue en arriere
 
voila le code
 
Dim strnom As String
Dim rs As DAO.Recordset
Dim qdReq As DAO.QueryDef
   
      strnom = InputBox("Nom de l'entreprise?" )
      Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom LIKE '" & strnom & "';" )
      Set rs = qdReq.OpenRecordset
 
 If rs.EOF And rs.BOF Then
    MsgBox "Rien! Que dalle! Nada!"
    Exit Sub
  End If
      Ent_nom.SetFocus
      Ent_nom.Text = rs.Fields("ent_nom" )
      Ent_adr.SetFocus
      Ent_adr.Text = rs.Fields("ent_adr" )
 
ce qui est bizarre c'est que sans les % ca marche ! alors est ce qu'il son mal placé ?

Reply

Marsh Posté le 07-07-2004 à 17:11:13    

LIKE '%" & strnom & "%'


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 07-07-2004 à 17:20:13    

ben non il me dit que c'est vide. ca marche plus du tout maintenant.
 
Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom LIKE '%" & strnom & "%';" )

Reply

Marsh Posté le 07-07-2004 à 17:23:24    

Mr Mazurier a écrit :

ben non il me dit que c'est vide. ca marche plus du tout maintenant.
 
Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom LIKE '%" & strnom & "%';" )


crée une chaine de caractères dans laquelle tu vas mettre ton "SELECT * FROM entreprise  WHERE ent_nom LIKE '%" & strnom & "%';" et fais-la afficher par ton programme. Ensuite colle la ici.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 17:27:11    

stop j'ai pas tout compris la  
par exemple je fais :
 
dim requete as string
 
requete = "SELECT * FROM entreprise  WHERE ent_nom LIKE '%" & strnom & "%';"
 
msgbox=(requete)
 
 
c'est ca que tu dis ? parceque sinon j'ai pas compris et je vois pas trop l'interet mais tu dois plus t'y connaitre

Reply

Marsh Posté le 07-07-2004 à 17:27:47    

Mr Mazurier a écrit :

stop j'ai pas tout compris la  
par exemple je fais :
 
dim requete as string
 
requete = "SELECT * FROM entreprise  WHERE ent_nom LIKE '%" & strnom & "%';"
 
msgbox=(requete)
 
 
c'est ca que tu dis ? parceque sinon j'ai pas compris et je vois pas trop l'interet mais tu dois plus t'y connaitre


L'intérêt c'est de vérifier que ta requête générée est bonne...


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 17:28:56    

l'intéret c'est de voir la chaine contstruite telle qu'elle est passée au SGBD...


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 07-07-2004 à 17:30:04    

mais en tout cas j'ai bien compris c'est ca que tu me dis de faire ?

Reply

Marsh Posté le 07-07-2004 à 17:32:08    

oui oui...
 
[edit]
...et la requête générée tu essaie de l'exécuter à la main, pour voir...;)


Message édité par skeye le 07-07-2004 à 17:35:11

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 07-07-2004 à 17:39:07    

il souligne Msgbox et dit :  
   " un appel de fonction dans la partie gauche de l'affectation doit renvoyer variant ou object "  
 
il affiche rien du tout et va direct au message d'erreur meme si je mets un autre msgbox avant

Reply

Marsh Posté le 08-07-2004 à 00:20:07    

c'est pas msgbox=(requete) mais plutot msgbox requete
de plus le faite de mettre cette condition %montexte% recherche l'occurence montexte quelque soit sa position hors si j'ai bien compris, toi tu veux le text qui commence par donc je préconise LIKE 'montexte%' mais attention pour la syntaxe je ne sais pas si tu travailles sous ACCESS ou via ADO mais la syntaxe peut legerement etre differente LIKE 'montexte*'

Reply

Marsh Posté le 08-07-2004 à 07:46:58    

Citation :

via ADO mais la syntaxe peut legerement etre differente LIKE 'montexte*'

+1  :jap:

Reply

Marsh Posté le 08-07-2004 à 09:49:45    

ca na marche toujours pas mais je pense que ma requete a un pb autre part. il me dit qu'il n'y a pas d'enregistrement.
pour tester ma requete en manuel, je vois pas comment la faire. pour afficher le message avec la requete, msgbox tjrs souligné et il dit la meme chose :
 
" un appel de fonction dans la partie gauche de l'affectation doit renvoyer variant ou object "  
 
qu"est ce que ca veut dire ? mon msgbox est incomplet ?
 
SELECT *
FROM entreprise
WHERE ent_nom LIKE [quel est le nom de l'entreprise ?];
 
 
ou dois je mettre le % ?

Reply

Marsh Posté le 08-07-2004 à 09:53:21    

Mr Mazurier a écrit :

ca na marche toujours pas mais je pense que ma requete a un pb autre part. il me dit qu'il n'y a pas d'enregistrement.
pour tester ma requete en manuel, je vois pas comment la faire. pour afficher le message avec la requete, msgbox tjrs souligné et il dit la meme chose :
 
" un appel de fonction dans la partie gauche de l'affectation doit renvoyer variant ou object "  
 
qu"est ce que ca veut dire ? mon msgbox est incomplet ?
 
SELECT *
FROM entreprise
WHERE ent_nom LIKE [quel est le nom de l'entreprise ?];
 
 
ou dois je mettre le % ?


 

bidoch78 a écrit :

c'est pas msgbox=(requete) mais plutot msgbox requete


 
Si tu pouvais prendre la peine de lire toutes les réponses ce serait pas mal.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-07-2004 à 10:38:44    

excuser moi j'avais pas vue qu'il fallait enlever le =, j'avais juste enlever les ()
le msgbox donne :
 
SELECT * FROM entreprise  WHERE ent_nom LIKE '%';
 
donc ca veut dire que le sgbd ne reconnait/voit/n'utilise pas ma variable  
 

Reply

Marsh Posté le 08-07-2004 à 10:44:25    

Donc ton pb vient de la récupération de strnom pour commencer.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-07-2004 à 10:51:54    

Sans vouloir vous offenser, je crois que vous faites fausse route. Comme dit + haut, le problème viendrait plutôt du joker (* au lieu de %). A ta place, Mr Mazurier, je reprendrais mon code initial avec cette petite modif:
 
      Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom LIKE '*" & strnom & "*';" )  
      Set rs = qdReq.OpenRecordset  

Reply

Marsh Posté le 08-07-2004 à 10:55:37    

ok je teste

Reply

Marsh Posté le 08-07-2004 à 10:58:01    

JiHemAir a écrit :

Sans vouloir vous offenser, je crois que vous faites fausse route. Comme dit + haut, le problème viendrait plutôt du joker (* au lieu de %). A ta place, Mr Mazurier, je reprendrais mon code initial avec cette petite modif:
 
      Set qdReq = CurrentDb.CreateQueryDef("", "SELECT * FROM entreprise  WHERE ent_nom LIKE '*" & strnom & "*';" )  
      Set rs = qdReq.OpenRecordset


Oui, mais je voyais l'absence du contenu de strnom comme un premier problème à régler avant d'essayer d'exécuter sa requête...si son machin génère un  
SELECT * FROM entreprise  WHERE ent_nom LIKE '**';
Il risque d'avoir bcp de résultats...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-07-2004 à 11:02:07    

ok ok MrSkeye pensais juste, il me renvoi  
SELECT * FROM entreprise  WHERE ent_nom LIKE '**';
donc il considere strnom comme vide

Reply

Marsh Posté le 08-07-2004 à 11:04:54    

Mr Mazurier a écrit :

ok ok MrSkeye pensais juste, il me renvoi  
SELECT * FROM entreprise  WHERE ent_nom LIKE '**';
donc il considere strnom comme vide


...donc essaye de récupérer correctement strnom pour commencer...;)


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed