Bonjour tout le monde,
Je vais essayer d'expliquer le mieux possible mon problème:
La base:
Une table "BD_ETUD" contenant des données sur des étudiants(+/- 200.000 records), non indexée dont voici un exemple d'enregistrement:
NUMERO|NOM |PRENOM| INSTITUT | ANNEE
01 |DUPONT |LOUIS | UP1 | 2004
02 |DURAND |PIERRE | UP2 | 2004
01 |DUPONT |LOUIS | UP1 | 2005
01 |DUPONT |LOU | UP1 | 2006
Le seul moyen d'identifier un étudiant est par son NUMERO (car son nom et son prénom, ont quelques fois été mal encodés)
Mon boss (qui a créé la DB, au départ en DBASE...) m'a demandé de lui produire un formulaire de présentation de ces données.
J'ai donc créé un formulaire: "Frm_GestionEtudiant" dont la source est:
SELECT DISTINCT BD_ETUD.NUMERO FROM BD_ETUD ORDER BY BD_ETUD.NUMERO;
Et ensuite un sous-formulaire "sub_Etudiant_Frm_GestionEtudiant" lié au formulaire père par le champ NUMERO et dont la source est:
SELECT BD_ETUD.NUMERO, BD_ETUD.NOM, BD_ETUD.PRENOM, BD_ETUD.ANNEE, BD_ETUD.INSTITUT FROM BD_ETUD ORDER BY BD_ETUD.ANNEE DESC;
Ma question est:
Comment à partir d'un champ texte se trouvant sur mon formulaire principal, faire une recherche sur un champ se trouvant dans le sous-formulaire.
Bref, comment tapper un NOM et que le formulaire principal se positionne sur le record relatif à ce nom?
Voila ce que j'ai pour le moment:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| Private Sub Texte_Rechercher_KeyDown(KeyCode As Integer, Shift As Integer)
Dim str As String
str = Me.Texte_Rechercher.Text
If (Not IsNull(str) And Not (str = "")) Then
Dim f As Form
Set f = Forms(Me.Name)(Me.sub_Etudiant_Frm_GestionEtudiant.Name).Form
' utilise un clone du recordset du sous formulaire.
' seulement celui ci ne contient QUE les records liés au formulaire
Set Rst = f.RecordsetClone
Select Case KeyCode
Case vbKeyReturn
Rst.FindFirst "[BD_ETUD].[NOM] like '*" & str & "*' "
If Rst.NoMatch Then
MsgBox "Fin de la recherche"
Else
Me.Bookmark = Rst.Bookmark
End If
Me.Texte_Rechercher.SetFocus
Case Else
End Select
End If
End Sub |
Merci à tous!
ps) inutile de me dire que la structure de la DB a été mal étudiée, je le sais bien(tout serait plus facile avec 2 tables) mais mon boss ne veut pas en changer...
Partager