[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

--

Il y a 10 types de personnes dans le monde
Ceux qui comprennent le binaire et les autres.
Configuration: Windows XP
Firefox 2.0.0.14

3 réponses

  1. 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
  2. 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
  3. santiago69 Messages postés 485 Statut Membre 209
     
    Super, merci loko.

    0