[vba - access 2007]Remplissage aléatoire d'une listbox à l'ouverture d'un formul
c4rr3r4
Messages postés16Date d'inscriptionjeudi 20 décembre 2007StatutMembreDernière intervention 4 juin 2012
-
1 juin 2012 à 12:50
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDerniè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
A voir également:
[vba - access 2007]Remplissage aléatoire d'une listbox à l'ouverture d'un formul
c4rr3r4
Messages postés16Date d'inscriptionjeudi 20 décembre 2007StatutMembreDerniè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 ?