[ACCESS] ouvrir 2 instance du meme formulaire

santiago69 Messages postés 485 Statut Membre -  
santiago69 Messages postés 485 Statut Membre -
Salut a tous,
J'ai une base Access avec la table suivante :
matable
id      NumeroAuto
nom     String 50
prenom  String 50
idpere  Long

J'ai un formulaire fiche avec 4 case (id, nom, prenom, idpere) et un bouton (affichpere).
Je voudrais que le bouton ouvre une autre instance de fiche avec les donnees du pere.
Private Sub affichpere_Click()
    DoCmd.OpenForm "fiche", , , "id=" & idpere, , acDialog
End Sub

Malheureusement, ca ne marche pas... Aucun formulaire ne s'ouvre et aucune erreur n'est generee.
Pourtant, il est possible d'instancier l'objet formulaire :
Private Sub affichpere_Click()
    Dim mafiche As New Form_fiche
    mafiche.Visible = True
End Sub

Ce code fonctionne. En utilisant le debugage, on voit bien qu'une autre instance du formulaire est ouverte. Mais elle n'est pas persistante et l'objet disparait au moment du End Sub. J'ai essaye de lui donner le focus, de le rendre modal :
Private Sub affichpere_Click()
    Dim mafiche As New Form_fiche
    mafiche.Modal = True
    mafiche.Visible = True
    mafiche.SetFocus
End Sub

Ca ne marche pas mieux, l'objet est cree, affiche et detruit avec la fin de la procedure.
Auriez vous une autre idee ?
Merci d'avance
Santiago

A voir également:

3 réponses

loko
 
une piste:

Private listForm_fiche As Collection

Public Function Mac_EditReq()

If Application.CurrentObjectType = 1 Then
If listFrm_GetRequete Is Nothing Then Set listForm_fiche = New Collection
Dim f As Form_fiche
Set f = New Form_fiche
f.Visible = True
listForm_fiche .Add f
End If

End Function
0
loko
 
j'avais oublié d'enlever mon code perso autour...

le end sub provoque la perte de la fenetre car l'objet mafiche est détruit => le stocker en global

Private listForm_fiche As Collection

Public Function OuvrirFiche()

If listFrm_GetRequete Is Nothing Then Set listForm_fiche = New Collection

Dim mafiche As Form_fiche
Set mafiche = New Form_fiche
mafiche .Visible = True
listForm_fiche.Add mafiche

End Function

inconvenient: par ex en debug, à la moindre modification 'globale' du code (ajout d'une variable gobale, fonction, etc..), on perd la collection (car access = code interpreté sans separation mode design/runtime). mais ds le cas d'un utilisation normale (simple execution), ca fonctionne
0
santiago69 Messages postés 485 Statut Membre 209
 
Super, merci loko.

0