Recherche de données dans une bd access via controle ado [Résolu]

Signaler
Messages postés
11
Date d'inscription
samedi 18 septembre 2004
Statut
Membre
Dernière intervention
16 janvier 2010
-
Messages postés
11
Date d'inscription
samedi 18 septembre 2004
Statut
Membre
Dernière intervention
16 janvier 2010
-
Boujour,

Bien qu'ayant achete la brique sur Vb6 et sur SQl, je dois reconnaitre que je tourne en rond. Le probleme des auteurs de ces livres est que pour eux bien des choses semblent tellement simples et evidentes qu'ils en oublient de l'expliquer aux neophytes de mon genre. Je ne cherche pas la simplicité car bien des applications sont disponibles sur le net pour faire ce que je veux faire. je veux simplement comprendre le fonctionnement.

Qui pourrait me  donner un exemple de recherche dans une base de donnees acces via code ado:
Nom de la base de donnée cinema1.mdb
Nom de la table DIVX
Noms des champs Titre, Disc, Box
Mon application est connectee a la base de donnée mais si je  tente une recherche d'un titre, rien n'apparait dans le listbox. Une fois que j'aurai compris le systeme pour cette recherche, je pense que bien des choses seront bien plus claire pour moi. J'ai joint ci dessous la copie des codes. Le seul exemple que je suis parvenu a trouver utilise le controle data et pour je ne sais qu'elle raison, le controle data refuse mon fichier cinema1.mdb.

Si quelqu'un pouvait avoir la gentillesse et surtout la compréhension pour me mettre sur la bonne directiuon, je lui en serait tres reconnaissant.

Merci d'Avance
 

Sub ActeurSecondaire_Click()


End Sub


Private Sub Command2_Click()


End Sub


Private Sub AdoGestion_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
   AdoGestion.RecordSource = "select * From Titre"
  
End Sub


Private Sub Text3_Change()


End Sub


Private Sub Text6_Change()


End Sub


Private Sub CmdPrecedent_Click()
   ' Recule d'un enregistrement dans les données
   If Not AdoGestion.Recordset.BOF Then
   AdoGestion.Recordset.MovePrevious
      If AdoGestion.Recordset.BOF Then
      AdoGestion.Recordset.MoveNext
      End If
   End If
     
End Sub


Private Sub CmdQuitter_Click()
Dim egal As Byte
egal = MsgBox("Etes-vous sur de vouloir quitter?", 33, "Confimation")
If egal = 1 Then
    End
Else
    Exit Sub
End If
End Sub


Private Sub CmdRecherche_Click()
     frmGestion.Hide
     frmRecherche.Show
    
         
  
      
      
End Sub


Private Sub CmdSuivant_Click()
   ' Avance d'un enregistrement dans les donnees
   If Not AdoGestion.Recordset.EOF Then
      AdoGestion.Recordset.MoveNext
      If AdoGestion.Recordset.EOF Then
         AdoGestion.Recordset.MovePrevious
      End If
   End If
  
End Sub


 


 


 


Private Sub Label2_Click()


End Sub


Private Sub File1_Click()


End Sub




Private Sub AdoRechTitre_WillMove(ByVal adReason As ADODB.EventReasonEnum, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset)
AdoRechTitre.RecordSource = "Select Titre, Box, Disc FROM DIVX"
End Sub


Private Sub Command1_Click()
Dim Num As Long
     Dim strreponse As String
     Dim strTitre As String
     Num = 0
     strreponse = InputBox("Entrez le nom d'un film")
     intResponse = MsgBox(" Vous Recherchez " & strreponse, 1)
       
              
          If strreponse = Empty Then
          intResponse = MsgBox("Recherche annulée")
          End If
End Sub








dan

4 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
salut,

le code est complet où il manque les déclarations?
tu passes pas un contrôle DATA ADODB apparemment, est-ce que tes champs sont liés à cet objet?
(par exemple as-tu changé, en mode conception, une propriété DataSource d'une Listbox?)

uniquement par code tu trouveras une classe sur www.codyx.org mais çà ne semble pas être ta demande....
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
Salut ,


Voilà le principe de la recherche:
Private Sub CmdRecherche_Click()
     frmGestion.Hide
     frmRecherche.Show
 End Sub


Dans ton formulaire frmRecherche, tu disposes sur une frame
trois OptionButton ,
-Titre
-Disc
-Box
 Avec l' un des trois par default à true (mettons Titre)


Tu ajoutes un TextBox et un ButtonCommand cmdRechrcher.


Dans
Sub cmdRechrcher._Click ()
 'Contenu du TextBox
  Dim cText As String
  cText=TextBox1.Text
  If cText="" Then Exit Sub


 'tu construit le début de ton expression
  Dim sQuery As String
 "Select * FROM DIVX "
 
  'tu te renseignes sur quel critère la recherche va s' effectuer.


 Dim cCritere As String
  If Option1.Value=True Then
     sQuery  =sQuery  & "WHERE Titre ='" & cText & "'"
  ElseIf Option2.Value=True Then
     sQuery  =sQuery  & "WHERE Disc ='" & cText & "'"
  ElseIf Option3.Value=True Then
     sQuery  =sQuery  & "WHERE Box ='" & cText & "'"
  End If


 'Tu lances ta requete selection
 AdoRechTitre.RecordSource = sQuery


End Sub


Conseil:
 Ne mets rien dans AdoRechTitre_WillMove.
 Oublies cet evenement, il ne te servira à rien
 dans ce que tu veux faire.
 De plus c' est très compliqué à gérer.






       
<hr />



[] Ce qui va sans dire. va mieux en le disant.


<hr />
Messages postés
1402
Date d'inscription
mardi 1 mai 2007
Statut
Membre
Dernière intervention
7 octobre 2012
5
si ton control Ado est dans frmGestion, et étant donné que ta Sub Rechercher est dans frmRecherche, il faudra faire reference à ton Ado par :

frmGestion.AdoRechTitre.RecordSource = sQuery
<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
Messages postés
11
Date d'inscription
samedi 18 septembre 2004
Statut
Membre
Dernière intervention
16 janvier 2010

Merci a tout le monde.Je crois que j'étais bien loin de m'y retrouver tout seul.
Je vais passer la soiree a   bien essayer de comprendre le principe de recherche et je compte bien donner des nouvelles positives d'ici la fin de la semaine.


Merci encore tres sincerement.

dan