Recherche dans une base de données

samir - 15 sept. 2001 à 16:01
 samir36 - 18 sept. 2001 à 19:43
salut
j'ai une base qui contient 3 tables:articles,guides et ventes.la base est créée avec access97.
mon prog de gestion de cette base comprend un bouton rechercher.
voici le code de recherche (cmdfindvente):

Private Sub Cmdfindvente_Click() Set db OpenDatabase(rep + "\nbase.mdb") ' repapp.path
Set rs = db.OpenRecordset("ventes", dbOpenDynaset)
MsgBox rs.RecordCount, vbOKCancel, "compte"
cherche = Trim(cherchev.Text)
i = 0
grillv.Rows = 1
For i = 0 To rs.Fields.Count - 1
grillv.TextMatrix(0, i) = rs.Fields(i).Name
Next
critere = "refart like '" & herche& "'" 'refart : reference article
j = 1
rs.FindFirst critere
Do While Not rs.NoMatch
rs.FindNext critere
grillv.AddItem ""
For i = 0 To rs.Fields.Count - 1
grillv.TextMatrix(j, i) = rs.Fields(i)
Next i
rs.MoveNext
j = j + 1
Loop
End Sub

NB : je peux trouver les données que j'entre avec access
mais pas ceux que je saisie par l'interface VB pourtant ils sont presents dans la base!!!
ce code contient t-il des erreurs?
klk 1 peux t'il m'aider ?
merci encore

4 réponses

RememberTheKing
15 sept. 2001 à 17:16
après ton AddItem fais un Refresh.
A+
0
merci Remembertheking pour ta reponse.
mais je suis tjrs bloqué.
pourais-tu m'expliquer encore plus(comment faire un refresh).la procedure cmdfindvente est elle juste?
je vous explique le probleme encore plus :

la feuille ou je fais la recherche comprends:
un textbox : pour saisir la reference à chercher
un commandbuton cmdfindventes pour lancer la recherche
un autre command dont caption est " liste des ventes"

une msflexgrid : pour afficher les enregistrements trouvés ou la liste de toutes les ventes.

ce que je comprends pas c'est que j'arrive à afficher dans la flex la liste des ventes .et lorsque je cherche une reference qui est presente dans la liste je la trouve pas?!!!
si vous pouvez m'aider je peux vous envoyer le projet sur ton email?
si klk1 a un exemple pareil merci de me l'envoyez a mon adresse mail samir_36@yahoo.fr

merci pour tous
0
RememberTheKing
16 sept. 2001 à 16:50
Il serait effectivement plus simple de m'envoyer ton prog sur : RememberTheKing@skynet.be

Avant tout essaie tout de même :
Ligne 11 ta variable de recherche est écrite 'herche' est-ce une erreur de transcription ?
Ligne 5 ta variable Cherche est définie par ChercheV.text
n'est-ce pas ChercheV.List() ?
Ensuite je ne comprends pas bien ton code : Tu cherches un
enregistrement critére dans ton recordset et ensuite tu demande de remplir ta Grille à partir du 1er enregistrement du recordset et jusqu'à la fin.
A quoi te sert ton find ?
Ne voulais-tu pas utiliser un Select sur le critére.

A+

1 Private Sub Cmdfindvente_Click()2 Set db OpenDatabase(rep + "\nbase.mdb") ' repapp.path
3 Set rs = db.OpenRecordset("ventes", dbOpenDynaset)
4 MsgBox rs.RecordCount, vbOKCancel, "compte"
5 cherche = Trim(cherchev.Text)
6 i = 0
7 grillv.Rows = 1
8 For i = 0 To rs.Fields.Count - 1
9 grillv.TextMatrix(0, i) = rs.Fields(i).Name
10 Next
11 critere = "refart like '" & herche& "'" 'refart : reference article
12 j = 1
13 rs.FindFirst critere
14 Do While Not rs.NoMatch
15 rs.FindNext critere
16 grillv.AddItem ""
17 For i = 0 To rs.Fields.Count - 1
18 grillv.TextMatrix(j, i) = rs.Fields(i)
19 Next i
20 rs.MoveNext
21 j = j + 1
22 Loop
23 End Sub
0
bonjour
ok cher ami , j'ai envoyé le projet a ton email

merci encore
0
Rejoignez-nous