Sous formulaire non mis à jour après vb acces

nromain87 -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je réalise un formulaire dans lequel on va donner la répartition des salariés par CSP dans chaque quartier d'une ville. On choisit la CSP (Ouvrier, employé, cadre ...) désirée, et une procédure événementielle vb après mise à jour de la zone de liste permet de modifier la requête nommée ECSPTousBassins.

Voici le code VB :

Private Sub ListeCSP_AfterUpdate()
Dim chaineSQL As String
Dim i As Integer
chaineSQL = "SELECT B.nomBassin AS Secteur," & Me("ListeCSP") & ",

Sum(1)/Sum(D.BCsC+D.BCs4+D.BCs5+D.BCs6+D.BTypeA) AS " & Me("ListeCSP") & " FROM DADS AS D, Bassins as B, IRIS AS I WHERE B.numBassin=I.numBassin AND I.IRIS=D.IRIS GROUP BY B.nomBassin;"
'Enregistrement de la chaîne dans la requête
CurrentDb.QueryDefs("ECSPTousBassins").SQL = chaineSQL

'Mise à jour du résultat
Me!Resultat.Requery
End Sub


Tout se passe bien, hormis que la requête affichée dans le formulaire en tant que sous formulaire ne se met pas à jour malgré le Me!Resultat.Requery. Pourtant, quand j'éxécute la requete hors formulaire, elle est bien mise à jour.
Comment régler ce problème ?
Merci d'avance, Romain N
Configuration: Access 2007

2 réponses

  1. Jean_Jacques Messages postés 1045 Date d'inscription   Statut Membre Dernière intervention   112
     
    Bonjour nromain87,

    Sous ACCESS 2000 la syntaxe suivante produit l'effet recherché.

    Me.Refresh
    ou bien
    Forms![<Nom du formulaire>].Refresh

    En manuel, il me semble que MAJ+F9 a le même effet (a vérifier)

    Cordialement
    0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Je suppose que le formulaire Resultat est associé à la requête nommée ECSPTousBassins.
    J'imagine que, si tu modifies la requête, il faut modifier aussi le formulaire.

    Je ne suis pas du tout certain de la syntaxe, mais je me demande si il ne faut pas faire
    Me!Resultat.rowsource=ECSPTousBassins

    Si cela marche, à quoi sert la requête ECSPTousBassins ? Ne serait-il pas plus simple de faire directement
    Me!Resultat.rowsource=chaineSQL ,
    et de laisse tomber toute la logique autour de ECSPTousBassins ?

    Je pense que tout cela est inutilement compliqué, et qu'il n'est pas nécessaire de modifier la requête. Access devrait pouvoir facilement modifier dynamiquement le formulaire quand tu sélectionnes ListeCSP. Je n'ai pas le temps de chercher un exemple, pour l'instant...
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      En fait, il est possible de lier le sous formulaire avec le formulaire principal. Dans ce cas-là, la sélection se fera automatiquement.
      0