Bonjour,
Possédant 3 formulaires et leurs tables associées : frm_Sources > Sources, frm_Tableaux > Tableaux, et frm_Organes > Organes, frm_Organes étant un sous formulaire continu de frm_Tableaux.
J'ai un 4e formulaire, frm_Main, possédant un sous formulaire qui est soit frm_Tableaux, soit frm_Sources (en jouant sur la propriété Subform.SourceObject)
J'ai également un formulaire de recherche qui me permet de cliquer sur un résultat :
- une recherche sur la table Organes ou Tableaux doit ouvrir le formulaire frm_Tableaux (dans frm_Main)
- une recherche sur la table Sources doit ouvrir frm_Sources (toujours dans frm_Main)
Quand il s'agit d'une source ou d'un organe, tout va bien, mais lorsque je clique sur un résultat qui est un tableau, le frm_Main s'ouvre mais sans le frm_Tableaux, ce qui génère une erreur type "objet fermé ou inexistant" lorsque le programme veut chercher l'enregistrement voulu.
Voici le code de l'événement :
L'erreur 2467 se produit à l'appel de la fonction GoToThisRecord.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Private Sub Lst_Resultats_DblClick(Cancel As Integer) Dim StrCriteria As String Dim strForm As String If IsNull(Me.Lst_Resultats) Then Exit Sub 'MyTable étant déclarée dans la zone de déclaration du module de classe If MyTable = "Sources" Then strForm = "frm_Sources" Else: strForm = "frm_Tableaux" End If DoCmd.OpenForm "frm_Main" Forms.frm_Main.Subform.SourceObject = strForm Forms.frm_Main.Subform.SetFocus StrCriteria = "'" & Me.Lst_Resultats.Value & "'" GotoThisRecord Forms.frm_Main.Subform.Form, StrCriteria, "Nom", "l'élément" If strForm = "frm_Tableaux" Then Affiche_Arrivees (Me.Lst_Resultats) End Sub
GoToThisRecord étant une fonction que j'ai trouvé quelque part sur le site ou le forum de developpez.com, qui permet de se positionner sur un ID spécifique (et que j'ai très légèrement modifié et que je remets ici, si ça peut servir à quelqu'un)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Public Function GotoThisRecord(ByRef TargetForm As Form, ByVal WhatRecordID As Variant, ByVal FieldName As String, ByVal ItemMessage As String) Dim oRS As DAO.Recordset On Error GoTo ErrGotoRecord Set oRS = TargetForm.Recordset.Clone With oRS .FindFirst "[" & FieldName & "] = " & WhatRecordID If .NoMatch = False Then TargetForm.Bookmark = .Bookmark Else Err.Raise 3021 End If .Close End With ExGotoRecord: Set oRS = Nothing Exit Function ErrGotoRecord: MsgBox "Il n'existe pas d'enregistrement pour " & ItemMessage & " ayant " & WhatRecordID & " comme valeur de champ " & FieldName & " !", vbExclamation Resume ExGotoRecord End Function
Partager