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

IHM Discussion :

Listes à selections multiples.


Sujet :

IHM

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2011
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2011
    Messages : 119
    Points : 49
    Points
    49
    Par défaut Listes à selections multiples.
    Bjr
    Je pensais avoir résolu mon problème mais non.
    J'ai bien cherché et j'ai trouvé d’où venait mon problème. Cela viendrait de ses quelques lignes de vba.
    En passant par une impression en pdf ou un aperçu puis une exportation en pdf ça fonctionne, mais deux zones de listes à selections multiples sont bien remplit dans le pdf.
    Si je passe par la commande cmdEnvoyer les listes dans le pdf restent vides.
    Quelqu'un peut il m'aider svp

    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
    Private Sub cmdEnvoyer_Click()
        With Forms!FormNavigation!SF_TournPatient.Form
            pubstrEtatTourn_RecordSource = "SELECT * FROM R_Tournée" _
                & " WHERE (" & DatePourSql(!DatePrint) & " Between [DebutSoins] And [FinSoins])" _
                & " AND Tournées = " & !SelectTourn
        End With
        On Error Resume Next
        DoCmd.SendObject acSendReport, "EtatTourn", "pdf" _
          , cbxdestinataire.Column(3), , _
          , "Test de l'application Gestion des tournées. Votre tournée du jour", "Veuillez trouver votre tournée en pièce-jointe"
    End Sub
     
    Function DatePourSql(xDate)
        DatePourSql = "#" & Month(xDate) & "-" & Day(xDate) & "-" & Year(xDate) & "#"
    End Function

  2. #2
    Membre expérimenté
    Avatar de mumen
    Homme Profil pro
    Développement à façon multisecteur.
    Inscrit en
    Mars 2004
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Développement à façon multisecteur.

    Informations forums :
    Inscription : Mars 2004
    Messages : 566
    Points : 1 381
    Points
    1 381
    Par défaut
    Salut Pascal

    Tu dis que si tu ouvres directement ton état en manuel, tout marche, mais que des choses manquent si tu passes pas ce bout de code.

    Quand tu ouvres en manuel, la sélection de dates et de tournée est faite comment ?

    Si tu ouvres ton état en mode création tu est sûr que la source des données est bien "R_Tournée" ?

  3. #3
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2011
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2011
    Messages : 119
    Points : 49
    Points
    49
    Par défaut
    Bjr Mathieu
    Quand tu ouvres en manuel, la sélection de dates et de tournée est faite comment ?
    La sélection de la date est faite par une zone de texte "DatePrint" au format date. Et les tournées à partir d'une zdl déroulante "SelectTourn "
    Si tu ouvres ton état en mode création tu est sûr que la source des données est bien "R_Tournée" ?
    Affirmatif l'etat est basé sur R_Tournée.

    Pour rappel les deux zone de liste qui restent désespérément vide sont à selection multiple.

    Merci de ton aide.

  4. #4
    Membre expérimenté
    Avatar de mumen
    Homme Profil pro
    Développement à façon multisecteur.
    Inscrit en
    Mars 2004
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Développement à façon multisecteur.

    Informations forums :
    Inscription : Mars 2004
    Messages : 566
    Points : 1 381
    Points
    1 381
    Par défaut
    Non, normalement quand tu ouvres l'état en manuel, les sélections de tournées et de date de soin ne sont pas effectuées. Tu dois avoir l'état pour tout.

    Tes zones de listes à sélections multiples sont remplies par l'utilisateur avant impression ?

    Tu les passes comment à l'état ?

  5. #5
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2011
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2011
    Messages : 119
    Points : 49
    Points
    49
    Par défaut
    Pour faire simple.
    J'ai un formulaire F_Patients qui me sert à rentrer chaque nouveau patient. Sur ce Formulaire j'ai des zone de texte ont va dire habituel, nompatient, prenompatient etc etc et deux zones de listes a choix multiples, une zdl pour les actes a pratiquer et une zdl pour les jourscar ont ne va pas forcement tous les jours chez nos patients mais un jour sur deux ou un jour sur trois, dans ce cas ont sélectionne dans la zdl JoursDesSoins lundi/Mercredi/vendredi ou autre.
    Toutes ces enregistrements sont stockés dans les tables T_Patients et T_Protocole. Ma requête R_Tournée basé su ces deux tables me sert à filtrer les patients.

    normalement quand tu ouvres l'état en manuel, les sélections de tournées et de date de soin ne sont pas effectuées. Tu dois avoir l'état pour tout.
    Tout a fait

    Tes zones de listes à sélections multiples sont remplies par l'utilisateur avant impression ?
    Oui lors de l'enregistrement de chaque nouveau patient.

    Merci

  6. #6
    Membre expérimenté
    Avatar de mumen
    Homme Profil pro
    Développement à façon multisecteur.
    Inscrit en
    Mars 2004
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Développement à façon multisecteur.

    Informations forums :
    Inscription : Mars 2004
    Messages : 566
    Points : 1 381
    Points
    1 381
    Par défaut
    Bonjour, Pascal.

    J'ai regardé l'application que tu m'as envoyée. Il y a un problème du côté d'Access. J'ai simplifié le problème et je reproduis le comportement comme suit :

    Je prends l'état en question et je mets comme source "R_Tournée" : cela fonctionne. Si je mets comme source "SELECT * FROM R_Tournée", les listbox ne fonctionnent plus, ils sont vides. Quand on les affiche en text box au lieu de listbox, les champs comportent "#Erreur"

    Je ne comprends pas. Enfin si, un peu, suffisamment pour le problème qui nous occupe.

    Cela vient de la zone de liste déroulante multi critères JoursDeSoins. La solution est très simple, il suffit de modifier la source du contrôle en lui adjoignant ".Value" à la fin... Dans "Source Contrôle", au lieu de JoursDeSoins, mettre JoursDeSoins.Value. Cela corrige les deux problèmes. Le .Value fait explicitement appel à la fonction de présentation multicritère, levant une ambiguïté dans laquelle Access semble s'emmêler les pinceaux. C'est bon à savoir.

    J'ai généralisé le code de ton formulaire concernant les états. Recopie le code suivant. Dans ton état : supprime les quatre dernières procédures, celle qui suivent la procédure vnString et insère ce code :

    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
    24
    25
    26
    27
    28
    Private Function SélectionEtat() As String
        With Me
            SélectionEtat = "(" & DatePourSql(!DatePrint) & " Between [DebutSoins] And [FinSoins])" & " AND Tournées = " & !SelectTourn
        End With
    End Function
     
    Private Sub cmdEnvoyer_Click()
        On Error Resume Next
     
        pubstrEtatTourn_RecordSource = "SELECT * FROM R_Tournée" _
            & " WHERE " & SélectionEtat()
     
        DoCmd.SendObject acSendReport, "EtatTourn", "pdf" _
           , cbxdestinataire.Column(3), , _
           , "Test de l'application Gestion des tournées. Votre tournée du jour", "Veuillez trouver votre tournée en pièce-jointe"
    End Sub
     
    Function DatePourSql(xDate)
        DatePourSql = "#" & Month(xDate) & "-" & Day(xDate) & "-" & Year(xDate) & "#"
    End Function
     
    Private Sub cmdprint_Click()
        DoCmd.OpenReport "EtatTourn", acViewNormal, , SélectionEtat()
    End Sub
     
    Private Sub btnapercu_Click()
        DoCmd.OpenReport "EtatTourn", acViewPreview, , SélectionEtat()
    End Sub
    J'ai généralisé les appels et corrigé au passage un truc qui devait t'embêter...

  7. #7
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2011
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Avril 2011
    Messages : 119
    Points : 49
    Points
    49
    Par défaut
    Bsr Mathieu
    Tout d'abord merci pour ce que tu me faits.
    A première vue comme ça marche j'ai bien les deux zdl remplis dans mon etat. Le soucis c'est que au lieu de me mettre les soins ou les jours les uns a cotés des autres, j'ai autant de lignes que de soins ou de jours. si Mad Dupont à trois soins elle sera dupliqué trois fois.
    En parcourant le forum et cet excellent tuto http://access.developpez.com/sources/?page=Requete j'en suis venu a concatener mes deux zdl.
    Problème j'ai un message d'erreur qui me dit "Le champ à valeurs multiples Soins n'est pas une valeur dans l'expression RecupPatient(Soin).
    Requête de mon etat que j'ai aménagé selon le tuto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT R_Tournée.NomPatient, RecupPatient(Soins) AS LesPatients, R_Tournée.PrenomPatient, R_Tournée.TelephoneFix, R_Tournée.NumeroRue, R_Tournée.Rue, R_Tournée.Communes, R_Tournée.Remarque, R_Tournée.DebutSoins, R_Tournée.FinSoins, R_Tournée.HorraireMatin, R_Tournée.HorraireSoir, R_Tournée.DepartHospit, R_Tournée.RetourHospit, R_Tournée.CartesVitales, R_Tournée.Tournées, R_Tournée.JoursDeSoins.value, R_Tournée.Soins.value
    FROM R_Tournée
    ORDER BY R_Tournée.HorraireMatin;
    Code vba
    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
    Public Function RecupPatient(Soins As Long) As String
    Dim res As DAO.Recordset
    Dim SQL As String
    'Selectionne les patients du projet
    SQL = "SELECT NomPatient FROM R_Tournée WHERE Soins=" & Soins
    Set res = CurrentDb.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    While Not res.EOF
    RecupPatient = RecupPatient & res.Fields(0).Value & " "
    res.MoveNext
    Wend
    'Enleve le dernier espace
    RecupParticipant = Left(RecupPatient, Len(RecupPatient) - 1)
    'libere la mémoire
    Set res = Nothing
    End Function
    et corrigé au passage un truc qui devait t'embêter...
    Merci mais quel truc

Discussions similaires

  1. Remplissage Liste Select Multiple
    Par Bigoodheart dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 28/04/2010, 11h05
  2. Réponses: 2
    Dernier message: 14/11/2008, 17h01
  3. [ACCESS] - Requete issue d'une liste à selection multiple
    Par fredhali2000 dans le forum Access
    Réponses: 4
    Dernier message: 22/02/2006, 16h33
  4. Réponses: 2
    Dernier message: 14/12/2005, 18h08
  5. Liste à selection multiple
    Par marti dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/09/2005, 13h28

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