IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Recordset dans Etat


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Recordset dans Etat


    Bonjour à tous ! Je bloque sur un problème depuis quelques heures et je dois dire que je suis arrivé au bout du bout ... je ne vois vraiment pas d'ou vient le problème ...

    J'ai créé une base de gestion de projets composées de :
    - 1 table tblProjets
    - 1 table tblAgents
    - 1 table de jonction tblJoncProjetsAgents

    Les formulaires d'affectations de plusieurs agents à un seul projet fonctionnent nickel. Je souhaiterais tirer un état issu de liste de projets ... basé sur la même requête. Jusqu'ici tout marche.

    J'aimerais par contre afficher les initiales des agents affectés au projet dans une case de texte dédiée (les initiales de chacun des agents séparés par des tirets ...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    Sub Report_Load()
     
      Dim ListeEquipe As Recordset
      Dim InitCDP As String
      'Afficher les initiales du Chef de projet :
      InitCDP = "SELECT tblJoncProjetsAgents.noautoprojet, tblJoncProjetsAgents.fonctionagent, tblAgents.initiales FROM tblAgents INNER JOIN tblJoncProjetsAgents ON tblJoncProjetsAgents.noautoagent = tblAgents.noautoagent WHERE ((tblJoncProjetsAgents.noautoprojet = " & Me.noautoprojet & " ) AND (tblJoncProjetsAgents.fonctionagent Like 'Chef de projet' ));"
       'Création de la liste des initiales des chefs de projet :
            Set ListeEquipe = CurrentDb.OpenRecordset(InitCDP)
        If Not ListeEquipe.EOF Then 'Pour vérifier que le jeu d'enreistrement n'est pas vide
            ListeEquipe.MoveFirst
            ListeCompleteEquipe = ""
            While Not ListeEquipe.EOF
              ListeCompleteEquipe = ListeCompleteEquipe & ListeEquipe("initiales") & "-"
              ListeEquipe.MoveNext
            Wend
            ListeCompleteEquipe = Left(ListeCompleteEquipe, Len(ListeCompleteEquipe) - 1)
        Else
          ListeCompleteEquipe = "" 'Pas de chef de projet attribué
        End If
     
    Me.txtequipe.Value = ListeCompleteEquipe
     
    End Sub
    Je comprend pas pourquoi, mais la requête SQL refuse de prendre en compte mon critère liée au contrôle noautoprojet qui apparaît dans l'état. Si on supprime ce critère tout ce passe bien (il affiche la liste de tous les chefs mais de tous les projets séparés par des tirets mais ce n'est pas ce que je veux). Mais en rajoutant le critère AND du noautoprojet ... -> il me sort les initiales du premier agent de la table tblAgents .... Je ne comprends pas pourquoi ....

    Une idée ??

  2. #2
    Membre émérite
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 939
    Points : 2 287
    Points
    2 287
    Par défaut
    Bonsoir

    Ce n'est peut-être pas la raison de votre infortune, mais je tique sur la gestion de votre recordset.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeCompleteEquipe = ListeCompleteEquipe & ListeEquipe("initiales") & "-"
    Si je comprends ce que vous voulez, c'est mettre dans la variable "ListeCompleteEquipe" la valeur de champ "initiales" de chaque ligne du recordset.

    J'avais cru comprendre que pour mettre une valeur d'un champ de recordset il fallait utiliser la méthode "fields".

    Peut-être pouvez vous essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListeCompleteEquipe = ListeCompleteEquipe & ListeEquipe.fields("initiales") & "-"
    Pierre

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Je ne comprends vraiment plus ...
    Bonsoir Pierre.
    Merci pour votre proposition. Je ne connaissais pas fields, mais cela semble renvoyer la même chose que ma syntaxe.

    Par contre j'hallucine un peu. En essayant plusieurs fois avec différentes syntaxes , j'ai lancé pour voir un aperçu avant impression de mon état ... et la les initiales de l'agent indiquées sont les initiales du deuxième agent de la liste !!!

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 17
    Points : 12
    Points
    12
    Par défaut D'autre infos
    Après des essais en long / large et en travers, il semble que ce code ne créé en fait qu'une seule valeur ... sur la première ligne que renvoi l'état ... et qu'il copie tout simplement pour les autres lignes de l'état.

    Savez-vous comment faire pour que ce code s'applique sur chaque entrée de l'état ?

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut
    je tome par hasard sur cette vielle discussion.
    Je pense que le code est mal placé, pour qu'il prenne en charge chaque ligne (enregistrement) de l'état il faut le placer dans la gestion des événements "au formatage", "sur le dessin" ou "sur impression" de la section de détail.

Discussions similaires

  1. Affichage dans etat
    Par rollly dans le forum Access
    Réponses: 6
    Dernier message: 29/09/2005, 16h26
  2. Fonction retournant un recordset dans un module
    Par suspiria dans le forum Access
    Réponses: 3
    Dernier message: 29/09/2005, 15h46
  3. Photo dans Etat
    Par Coquelicot dans le forum IHM
    Réponses: 19
    Dernier message: 16/09/2005, 02h51
  4. Image cellule d'un recordset dans cellule de MSFlexGrid
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/09/2005, 13h50
  5. probleme de recordset dans une boucle do while
    Par Shoryu dans le forum ASP
    Réponses: 18
    Dernier message: 05/07/2004, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo