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

Access Discussion :

Recupérer les informations des éléments d'une liste déroulante multisélection contenues dans une requete


Sujet :

Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Recupérer les informations des éléments d'une liste déroulante multisélection contenues dans une requete
    Bonjour à tous,

    je reviens avec un autre soucis sur mon code VB Access. N'ayant pas jusque là trouvé de solution sur mon problème précédent j'ai alors décidé de passer à autre chose qui semble bien marché mais j'ai deux débogages lors de l'exécution et je n'ai aucun affichage des informations que je veux récupérer sur les éléments sélectionnés dans mon état.
    Je m'explique: J'ai fais deux listes déroulantes, une qui contient la liste des éléments à sélectionner (lstfrs) et une autre (lstfrsselectionnes) qui contiendra les éléments sélectionnés dans la liste "lstfrs" via des boutons de bascules que j'ai créé. Une fois que la bascule des éléments sélectionnés établi, je fais un clique sur le bouton "ok" qui me donne directement l'état de ces éléments. J'ai fais pour mon code un module standard qui contient toute la partie initialisation et dans le module du formule j'ai fais le code d'exécution même du processus. J'ai souligné et mis en gras les lignes où j'ai un débogage:

    Voici mon code:

    Code contenu dan le module standard:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
        ' -----------------------------
        ' INITIALISATION DES SELECTIONS
        ' -----------------------------
        ' Entrée : strTableCible     <- Nom de la table dont
        '                               on veut sélectionner les lignes
        '          strClefPrimaire   <- Nom de la clef primaire de la table cible.
        '          strTableSelection <- Nom de la table de sélection
        '          strWhere          <- Clause Where optionnelle
        '
        Sub InitialiserSelection( _
          ByVal strTable As String, _
          Optional ByVal strClefPrimaire As String, _
          Optional ByVal strTableSelection As String = "Table sélection", _
          Optional ByVal strWhere As String = "" )
     
          ' Vider la table des sélections
          'strTableSelection = "[" & strTableSelection & "]"
          'CurrentDb.Execute "DELETE * FROM " & strTableSelection & ";"
          ' Renseigner les nouvelles valeurs
          ' de la table des sélections
          Dim strSQL As String
          strSQL = "INSERT INTO " & strTableSelection & " (ID frs, Sélectionné)" _
          & " SELECT [" & strClefPrimaire & "],True" _
          & " FROM [" & strTable & "]"
          If strWhere <> "" Then strSQL = strSQL & " WHERE " & strWhere
          CurrentDb.Execute strSQL (1er débogage: Message d'erreur: "Erreur de syntaxe dans l'instruction INSERT INTO" )
        End Sub
        ' -------------------------------
        ' SELECTIONNER TOUTES LES LIGNES
        ' -------------------------------
        Sub ToutSelectionner( _
          Optional ByVal strTableSelection As String = "Table sélection" )
          CurrentDb.Execute "UPDATE [" & strTableSelection & "] SET [Sélectionné] = True;"
        End Sub
        ' --------------------------------
        ' DESELECTIONNER TOUTES LES LIGNES
        ' --------------------------------
        Sub ToutDeselectionner( _
          Optional ByVal strTableSelection As String = "Table sélection" )
          CurrentDb.Execute "UPDATE [" & strTableSelection & "] SET [Sélectionné] = False;"
        End Sub
        ' --------------------------------
        'INVERSER LA SELECTION D'UNE LIGNE
        ' --------------------------------
        Sub InverserSelection( _
            ByVal lngNumero As Long, _
            Optional ByVal strTableSelection As String = "Table sélection" )
          Dim strSQL As String
          strSQL = "UPDATE [" & strTableSelection & "] SET [Sélectionné] = TRUE" _
          & " WHERE [ID frs] = " & lngNumero
          CurrentDb.Execute strSQL
        End Sub
        ' ------------------------------
        ' COMPTER LE NOMBRE DE SELECTION
        ' ------------------------------
        Function NombreSelections( _
            Optional ByVal strTableSelection As String = "Table sélection" ) As Long
     
            NombreSelections = DCount("*", strTableSelection, "[Sélectionné] = True" )
     
        End Function




    Code contenu dan le module du formulaire:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
        ------------------------
        ' CHARGEMENT DU FORMULAIRE
        ' ------------------------
        Private Sub Form_Load()
            InitialiserSelection "FOURNISSEURS", "ID frs", "Table sélection"
            MiseAJourListes
        End Sub
        ' ----------------------
        ' MISE A JOUR DES LISTES
        ' ----------------------
        Private Sub MiseAJourListes()
            Me.lstfrs.Requery
            Me.lstfrsselectionnes.Requery
        End Sub
        ' --------------------------
        ' SELECTION D'UN FOURNISSEUR
        ' --------------------------
        Private Sub btnselectionun_Click()
           InverserSelection Me.lstfrs.Value
            'TransfererUn Me.lstfrs, Me.lstfrsselectionnes
            MiseAJourListes
        End Sub
        ' ----------------------------
        ' DESELECTION D'UN FOURNISSEUR
        ' ----------------------------
        Private Sub btndeselectionun_Click()
            InverserSelection Me.lstfrsselectionnes.Value (2ème débogage: Message d'erreur: Utilisation incorrecte de NULL)
            'TransfererUn Me.lstfrsselectionnes, Me.lstfrs
            MiseAJourListes
        End Sub
        ' ----------------------------------
        ' SELECTION DE TOUS LES FOURNISSEURS
        ' ----------------------------------
        Private Sub btnselectiontout_Click()
            ToutSelectionner
            MiseAJourListes
        End Sub
        ' ------------------------------------
        ' DESELECTION DE TOUS LES FOURNISSEURS
        ' ------------------------------------
        Private Sub btndeselectiontout_Click()
            ToutDeselectionner
            MiseAJourListes
        End Sub
        ' --------------------------------------------
        ' DOUBLE-CLIC POUR SELECTIONNER UN FOURNISSEUR
        ' --------------------------------------------
        Private Sub lstfrs_DblClick(Cancel As Integer)
            btnselectionun_Click
        End Sub
        ' ----------------------------------------------
        ' DOUBLE-CLIC POUR DESELECTIONNER UN FOURNISSEUR
        ' ----------------------------------------------
        Private Sub lstfrsselectionnes_DblClick(Cancel As Integer)
            btndeselectionun_Click
        End Sub
        ' -----------------------
        ' FERMETURE DU FORMULAIRE
        ' -----------------------
        Private Sub btnannuler_Click()
            DoCmd.Close
        End Sub
        ' ------------------------
        ' VALIDATION DU FORMULAIRE
        ' ------------------------
        Private Sub btnok_Click()
            ' Est-ce qu'on a sélectionné au moins 1 fournisseur ?
            If NombreSelections() = 0 Then
                MsgBox "Vous n'avez sélectionné aucun fournisseur !", vbExclamation
                Exit Sub
            End If
     
            ' Fermer le formulaire et ouvrir l'état des fournisseurs
            DoCmd.Close
            DoCmd.OpenReport "rapport frs", acViewPreview, , "[Sélectionné] = True"
        End Sub


    Je vous remercie d'avance de votre aide.

    Dany

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 555
    Points
    24 555
    Par défaut
    Bonjour,
    Pour ton premier problème il existe un tuto pour apprendre à déboguer des requêtes en VBA. A lire absolument pour être autonome.

    Sans aller plus loin vu qu'il faut la déboguer donc l'exécuter je dirais à première vu que tu as une erreur de syntaxe assez grossière ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "INSERT INTO " & strTableSelection & " (ID frs,...
    Pas d'espace dans les noms de colonne ou de table. Donc : [ID frs]

    Pour la seconde erreur tu passes une valeur Null issue de Me.lstfrsselectionnes.Value alors que tu donnes explicitement un type String à ton paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sub InitialiserSelection( _
          ByVal strTable As String,...
    String n'accepte pas de Null à la différence du type Variant.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/05/2013, 15h03
  2. Réponses: 2
    Dernier message: 11/05/2013, 12h19
  3. Réponses: 1
    Dernier message: 02/05/2013, 20h19
  4. Réponses: 3
    Dernier message: 14/08/2012, 10h24

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