Chercher dans une base de donnee access??

Signaler
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011
-
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011
-
salut
jai une base de donnee access que j'affiche en vb6. je veux programmer un bouton chercher qui permet justement chercher dans la base de donnee.Acet egard,je rencontre deux problemes.D'abord ca concerne la recherche d'un chiffre par exemple,jai une colonne 'NIscription',tu fais chercher le num '1'et ca te donne un seul resultat tandis qu'il ya dautres cases contenat le '1'! le code que jutilse est le suivant:
NomTable.MoveFirst
NomTable.FindFirst ("[NIscription] = " & textrecherche)
Comment faire alors pr afficher tous les resultats?
sinn jai un autre pb ,je ne parviens pas a programmer comment chercher une chaine de caracteres(par exemple je dois chercher un nom)

:) :D

22 réponses

Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Ton premier problème et tout ce qu'il y a de plus normal car tu fais FindFirst. Donc tu demande à ta recordeset de ce placer sur le premier qu'il trouve. Pour les autre tu dois utiliser findnext ou move next.

Pour mieux t'aider il faut que tu me montre tes ligne de connexion.
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

svp comment utiliser findnext?


:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
NomTable.movenext

Mais vraiment si tu veux que je t'aide poste tes ligne de connexion.
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

voila comment jai fait la cnxion:
Public Sub affichergrille()
Dim a As Integer
MaTable.MoveLast
a = Pdt.RecordCount
grille.Rows = a + 1
Pdt.MoveFirst
For i = 1 To a
grille.Row = i
For j = 0 To 3
grille.Col = j
Select Case j
Case 0
grille.Text = MaTable!N°
Case 1
grille.Text = MaTable!Nom
Case 2
grille.Text = MaTable!Prenom
Case 3
grille.Text = MaTable!Adresse
End Select
Next
MaTable.MoveNext
Next
MaTable.MoveFirst
End Sub

grille etant le nom de la datagrid

:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Dis moi tu utilises un dataset et un recordeset ?
Car là je ne vois de ligne de connexion

Tu utlises des ADODB ou des DAO?
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

jai juste insere lobjet datagrid de la boite a outils et jai fait ce ke jai cite c tt.
sinn jai aussi cela avnt:
Set BaseDonnee = OpenDatabase(App.Path & "\db1.mdb")
Set MaTable = BD1.OpenRecordset("NmFichier", dbOpenDynaset)

:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Voila c exactement cela que je voulais

Ta ligne

Set MaTable = BD1.OpenRecordset("NmFichier", dbOpenDynaset)

Tu peux la changer en fonction de ce que tu cherche. Par exemple :

Set MaTable BD1.OpenRecordset("SELECT * FROM " & NmFichier & " WHERE NIscription 1",dbOpenDynaset)

suivi de Matable.movenext va te permettre de lister tout les enregistrements ou NIscription = 1
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

Merci.mais faisant cela,jai eu une erreur de compil:variable not defined;jai essaye de le declarer comme database ou recordset mais en vain(sinn erreur;type mismatch :p)


:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Remet tout comme avant et fait comme cela

Set MaTable BaseDonnee.OpenRecordset("SELECT * FROM " & NmFichier & " WHERE NIscription 1",dbOpenDynaset)
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

j lai fait et on me dit erreur dans la syntaxe clause FROM :o
jai fait cela
Set MaTable BD.OpenRecordset("SELECT * FROM NmFichier WHERE NIscription1", dbOpenDynaset)
ca ne donne pas d'erreur,MAIS ca marche pas vrt!en effet,on me donne le mm resultat de recherche meme si je change la valeur cherchee(que je fais entrer dans un TextBox)(et le resultat na pas NIscription=1 ou celui ke je fais entrer!!).
tavais dit "suivi de Matable.movenext va te permettre de lister tout les enregistrements ou NIscription = 1"
mais le NIscription recherche c'est a lutilisateur de choisir!



:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Sorry de te répondre aussi tard j'avais des obligation.
Je pense qu'il faut reprendre depuis le début(ou presque).

Quelle valeur veux-tu trouver?
Dans quelle champs ?
Ce champs est-il un champs text ou numérique?
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

je veux deux champs,l'un numérique et l'autre un text.Par exemple un NIscription et un nom(chacun a part, l'utilisateur devra choisir koi chercher).Mais contentons nous de traiter en premier lieu le chaps numerique ;)
la valeur ke je vx chercher n'est pas précise,c'est l'utilisateur qui va la choisir en fonction de ses besoin ( c pr cela ke jai cree un textBox ou l'utilisateur mettra la valeur voulue)

:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Tu dis "c'est l'utilisateur qui va la choisir en fonction de ses besoin " dans qu'elle champ de ta table va tu cherché ? De k l type est-il
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

il va chercher le NIscriptio,ce qu'il va choisir c'est le NIscription ou une partie de lui(par ex il peu ecrir dans le textbox 1 ou 2 ou 564,tu vois?)
:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Non je ne vois pas NIscriptio c un champs de ta table ?
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

oui, c ca


:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
Et ce champs et de qu'elle type? Texte ou numérique?
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

numerique


:) :D
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
si tu fais
Set BaseDonnee = OpenDatabase(App.Path & "\db1.mdb") 
Set MaTable BaseDonnee.OpenRecordset("SELECT * FROM " & NmFichier & " WHERE NIscription 1",dbOpenDynaset) 

msgbox MaTable.Fields("NIscription").Value 


Tu as une valeur correcte ou pas ?
Messages postés
23
Date d'inscription
jeudi 21 juillet 2011
Statut
Membre
Dernière intervention
30 juillet 2011

faisant cela on me donne erreur de syntaxe dans la clause FROM.
jai remplace ta ligne:Set MaTable BaseDonnee.OpenRecordset("SELECT * FROM " & NmFichier & " WHERE NIscription 1",dbOpenDynaset)
par
Set MaTable BD.OpenRecordset("SELECT * FROM NmFichier WHERE NIscription1", dbOpenDynaset)
pas derreur de syntaxe mais ya tt simplment un msg qui affiche 1!et un seul resultat dans la table(dont le NIscription ne contient ni 1 ni un nmbre ke j vx chercher)
:) :D