[vba - access 2007]Remplissage aléatoire d'une listbox à l'ouverture d'un formul

c4rr3r4 Messages postés 16 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 4 juin 2012 - 1 juin 2012 à 12:50
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 - 4 juin 2012 à 11:23
Bonjour,
voici mon problème :

J'ai une zone de liste (lstRecapTNF) dans un formulaire Form_main_Suivi, qui est remplit correctement par une requête sql.
A l'évènement lstRecapTNF_click() de cette zone de liste cela m'ouvre un autre formulaire, Form_ssFormTNF, dans une fenêtre indépendante.
Dans Form_ssFormTNF, j'ai une zone de liste (lstTNF) que je remplis avec une requête SQL dont la close WHERE est basée sur une variable de lstRecapTNF de Form_main_Suivi. Cette requête je la fais dans le formulaire Form_main_Suivi (j'ai essayé de la faire au load de Form_ssFormTNF mais ça ne change rien).

Et donc mon problème c'est que quand j'ouvre ma bdd Access la zone de liste lstTNF ne se remplit pas, je passe mon formulaire Form_main_Suivi en mode création, je repasse en mode formulaire dans la foulée et là elle se remplit correctement ...

Voilà le code du 1er formulaire Form_main_Suivi :
Private Sub lstRecapTNF_click()
   
    SQL_TNF = "SELECT LOCAL_demande_ou_projet.IdDemande, LOCAL_ressource_tma.Nom, LCASE(LOCAL_ressource_tma.Prenom) AS prenom, LOCAL_ordre_de_travail.[libel_ot] AS Libelle, Format([LOCAL_ordre_de_travail].[charge_prevue],'Standard') AS [Ch prévue], Format([LOCAL_ordre_de_travail].[charge_consommee_totale],'Standard') AS [Ch Conso], Format([LOCAL_ordre_de_travail].[charge_restante],'Standard') AS RAF, Format([LOCAL_ordre_de_travail].[charge_consommee_totale]+[LOCAL_ordre_de_travail].[charge_restante],'Standard') AS [Ttl recalculé]" & _
                " FROM ((LOCAL_demande_ou_projet INNER JOIN LOCAL_forfait_budget ON LOCAL_demande_ou_projet.REF_FORFAIT_BUDGET LOCAL_forfait_budget.ID_FORFAIT_BUDGET) INNER JOIN LOCAL_ordre_de_travail ON LOCAL_demande_ou_projet.iddemande LOCAL_ordre_de_travail.iddemande) INNER JOIN LOCAL_ressource_tma ON LOCAL_ordre_de_travail.Ressource = LOCAL_ressource_tma.idressource" & _
                " WHERE LOCAL_demande_ou_projet.Type_demande='TNF' AND LOCAL_forfait_budget.REF_SOUS_SYSTEME='" & lstRecapTNF.Column(0) & "'"
    Debug.Print "1 : " & SQL_TNF
    
    DoCmd.OpenForm "ssFormTNF", acNormal, , , acFormReadOnly, acWindowNormal
    
End Sub


Et le code du formulaire Form_ssFormTNF :

Private Sub Form_Load()
    
    etqTitre.Enabled = True
    etqTitre.Value = Form_main_Suivi.lstRecapTNF.Column(0) & " - " & Form_main_Suivi.lstRecapTNF.Column(1)
    etqTitre.Enabled = False
    
    lstTNF.RowSource = Form_main_Suivi.SQL_TNF
    
    Debug.Print "2 : " & Form_main_Suivi.SQL_TNF

End Sub


Et voilà le résultat de la console d'exécution :
1 : SELECT LOCAL_demande_ou_projet.IdDemande, LOCAL_ressource_tma.Nom, LCASE(LOCAL_ressource_tma.Prenom) AS prenom, LOCAL_ordre_de_travail.[libel_ot] AS Libelle, Format([LOCAL_ordre_de_travail].[charge_prevue],'Standard') AS [Ch prévue], Format([LOCAL_ordre_de_travail].[charge_consommee_totale],'Standard') AS [Ch Conso], Format([LOCAL_ordre_de_travail].[charge_restante],'Standard') AS RAF, Format([LOCAL_ordre_de_travail].[charge_consommee_totale]+[LOCAL_ordre_de_travail].[charge_restante],'Standard') AS [Ttl recalculé] FROM ((LOCAL_demande_ou_projet INNER JOIN LOCAL_forfait_budget ON LOCAL_demande_ou_projet.REF_FORFAIT_BUDGET = LOCAL_forfait_budget.ID_FORFAIT_BUDGET) INNER JOIN LOCAL_ordre_de_travail ON LOCAL_demande_ou_projet.iddemande = LOCAL_ordre_de_travail.iddemande) INNER JOIN LOCAL_ressource_tma ON LOCAL_ordre_de_travail.Ressource = LOCAL_ressource_tma.idressource WHERE LOCAL_demande_ou_projet.Type_demande='TNF' AND LOCAL_forfait_budget.REF_SOUS_SYSTEME='12206400'
2 : 



Donc SQL_TNF s'initialise bien dans le formulaire de départ mais n'est pas envoyé au second formulaire ... on dirait qu'il y a un problème de gestion de processus (je ne suis pas un pro access ...) que le formulaire s'ouvre avant ou en même temps que ma variable SQL_TNF.

Si quelqu'un peut m'aider, merci

3 réponses

c4rr3r4 Messages postés 16 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 4 juin 2012
1 juin 2012 à 17:16
Je précise que quand je passe en mode création puis en mode formulaire, cela fonctionne bien après, la console d'exécution m'affiche bien en 1 et 2 la requête SQL_TNF.

J'ai essayé d'initialiser la requête au load du formulaire Form_ssFormTNF mais la liste ne se remplit pas du tout. Est-ce un problème d'évènement ?
0
c4rr3r4 Messages postés 16 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 4 juin 2012
4 juin 2012 à 10:36
toujours personne ?
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
4 juin 2012 à 11:23
Bonjour,

Au Load, la liste n' est pas encore accessible.
Essaies après l' instruction Load.

Private Sub lstRecapTNF_click()
   
    SQL_TNF = "SELECT LOCAL_demande_ou_projet.IdDemande, LOCAL_ressource_tma.Nom, LCASE(LOCAL_ressource_tma.Prenom) AS prenom, LOCAL_ordre_de_travail.[libel_ot] AS Libelle, Format([LOCAL_ordre_de_travail].[charge_prevue],'Standard') AS [Ch prévue], Format([LOCAL_ordre_de_travail].[charge_consommee_totale],'Standard') AS [Ch Conso], Format([LOCAL_ordre_de_travail].[charge_restante],'Standard') AS RAF, Format([LOCAL_ordre_de_travail].[charge_consommee_totale]+[LOCAL_ordre_de_travail].[charge_restante],'Standard') AS [Ttl recalculé]" & _
                " FROM ((LOCAL_demande_ou_projet INNER JOIN LOCAL_forfait_budget ON LOCAL_demande_ou_projet.REF_FORFAIT_BUDGET LOCAL_forfait_budget.ID_FORFAIT_BUDGET) INNER JOIN LOCAL_ordre_de_travail ON LOCAL_demande_ou_projet.iddemande LOCAL_ordre_de_travail.iddemande) INNER JOIN LOCAL_ressource_tma ON LOCAL_ordre_de_travail.Ressource = LOCAL_ressource_tma.idressource" & _
                " WHERE LOCAL_demande_ou_projet.Type_demande='TNF' AND LOCAL_forfait_budget.REF_SOUS_SYSTEME='" & lstRecapTNF.Column(0) & "'"
    Debug.Print "1 : " & SQL_TNF
    
    DoCmd.OpenForm "ssFormTNF", acNormal, , , acFormReadOnly, acWindowNormal
    
  With ssFormTNF
    .etqTitre.Enabled = True
    .etqTitre.Value = Form_main_Suivi.lstRecapTNF.Column(0) & " - " &      Form_main_Suivi.lstRecapTNF.Column(1)
    .etqTitre.Enabled = False
    
    .lstTNF.RowSource = Form_main_Suivi.SQL_TNF
    
    Debug.Print "2 : " & Form_main_Suivi.SQL_TNF

  End With

End Sub






[] Ce qui va sans dire. va mieux en le disant.
0
Rejoignez-nous