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 :

comment envoyer des données d'une listBox vers une Table ?


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut comment envoyer des données d'une listBox vers une Table ?


    bonjour,

    j'ai réalisé un formulaire contenant des listes déroulantes qui me permettent de réaliser un filtrage. Le résultat de ces filtrages est envoyé
    dans une ListBox (appelée: " lstResults" ). Cette ListBox se trouve dans le formulaire. cela me permet de vérifier l'efficacité du filtrage. (Jusque là tout fonctionne)

    Pourriez-vous me dire comment envoyer le résultat de mes filtrages dans une table nommée: Results_Filtrage par exemple, de façon à pouvoir créer des états se rattachant à cette table.

    merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 148
    Points : 103
    Points
    103
    Par défaut
    Bonjour
    Une idée comme ça : Sur l'evenement mise à jour de ta liste box, tu parcours ta liste en VB et tu ajoutes dans ta table.
    J'espere que ça peut t'aider...
    Podz

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    tu pourrais être plus explicite Stp

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 148
    Points : 103
    Points
    103
    Par défaut
    Sur l'évèment mise à jour de ta listbox càd qd tes filtres sont réalisés, tu peux faire qqch du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each varI In Me!zdl.ItemsSelected
    req = "INSERT INTO Table VALUES ....
    cnc.Execute req
    Next varI
    Podz

  5. #5
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    Pour parcourir ta listBox:
    http://access.developpez.com/faq/?pa...#ListBoxColumn

    ET ensuite tu passe par une requete INSERT INTO
    http://sql.developpez.com/sqlaz/dml/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "INSERT INTO dbo_tbNumeros (Numero) VALUES (110);"

  6. #6
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    Un exemple qui ajoute un enregistrement dans Tab en mettant dans
    les champs C1 et C2 les valeurs des colonnes (0) et (1) de ListX.
    C1 est numérique, C2 de type texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DoCmd.SetWarnings False
     
    For I = 0 To (Me.ListX.ListCount - 1)
    DoCmd.RunSQL "INSERT INTO [Tab] ( C1,C2) VALUES (" & _
    Me.ListX.Column(0, Me.ListX.ItemData(I)) & ",'" & _
    Me.ListX.Column(1, Me.ListX.ItemData(I)) & "')"
    Next
     
    DoCmd.SetWarnings True
    Il y a peut-être moyen de boucler sur les colonnes à l'intérieur de
    la boucle For I = 0 To (Me.ListX.ListCount - 1) (les lignes)

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    je comprend pas ces ligne de code.

    For Each varI In Me!zdl.ItemsSelected
    req = "INSERT INTO Table VALUES ....
    cnc.Execute req
    Next varI

    je comprends les boucle For Next varI.
    mais pas le reste

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 148
    Points : 103
    Points
    103
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each varI In Me!zdl.ItemsSelected
    C'est à dire que tu fais une boucle uniquement pour les éléments de ta liste que tu as sélectionné.
    Maintenant si tu veux enregistrer ds ta table tous les éléments de ta liste, utilise le code de Faw, il me semble plus pratique
    Citation Envoyé par Faw
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DoCmd.SetWarnings False
     
    For I = 0 To (Me.ListX.ListCount - 1)
    DoCmd.RunSQL "INSERT INTO [Tab] ( C1,C2) VALUES (" & _
    Me.ListX.Column(0, Me.ListX.ItemData(I)) & ",'" & _
    Me.ListX.Column(1, Me.ListX.ItemData(I)) & "')"
    Next
     
    DoCmd.SetWarnings True

  9. #9
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    pour info ma listBox contien 44 colonnes et 13000 lignes (le nombre de ligne est variable)

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Es-tu certain que c'est un combo que tu dois utiliser.
    Généralement, dans un combo on a une, deux, trois ou quatre colonnes.
    Mais là avec 44 colonnes
    Et 13000 lignes j'espère que tout n'est pas affiché en une seule fois à l'écran

  11. #11
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Tu l'a dit "ravi-oli"...
    Bon toujours est-il que si le but est d'éditer un état avec le contenu de
    ta liste, il y a la solution qui consiste à appliquer le RowSource de
    ta liste au RecordSource de l'état.
    Tu peux t'inspirer des exemples de ce tuto
    http://access.developpez.com/sources...EtatFormulaire

    Mais dans l'absolu, 44 champs dans une table! c'est pas un peu trop?

  12. #12
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    j'ai saisi le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DoCmd.SetWarnings False 
     
    For I = 0 To (Me.lstResults.ListCount - 1) 
    DoCmd.RunSQL "INSERT INTO [Tab] ( C1,C2) VALUES (" & _ 
    Me.lstResults.Column(0, Me.lstResults.ItemData(I)) & ",'" & _ 
    Me.lstResults.Column(1, Me.lstResults.ItemData(I)) & "')" 
    Next 
     
    DoCmd.SetWarnings True
    (lstResults: 13000 lignes * 44 colonnes)

    ca marche pas.

    Par contre avec le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DoCmd.SetWarnings False 
    For I = 0 To (Me.ListX.ListCount - 1) 
    DoCmd.RunSQL "INSERT INTO [Tab] ( [AZER]) VALUES (lstResults)"
    Next I
    DoCmd.SetWarnings True
    ca me copie X fois la valeur (Ligne 1; Colonne 1) de lstResults dans la table: [Tab]

    [Modération, cafeine : Pensez à utiliser la balise [CODE] qui améliore la lisibilité, merci]

  13. #13
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Ca ne marche pas...Qu'est ce qui ne marche pas?
    Pour ton 2ème code, le résultat est normal car tu n'utilise pas
    les index de lignes (I).
    essaye de comprendre ce que tu utilises...

  14. #14
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    J'ai trouvé une solution,

    Je cré une requete qui me récupère mes valeurs.

  15. #15
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    148
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 148
    Points : 103
    Points
    103
    Par défaut
    Salut
    N'oublies pas le tag si tu as trouvé une solution...
    A+
    Podz

  16. #16
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Bon, je n'ai lu que le début

    Mais s'il s'agit uniquement d'état, pourquoi créer une nouvelle table ? Autant attribuer à l'état la même source de données que la zone de liste tout simplement non ?

  17. #17
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Citation Envoyé par Faw
    Tu l'a dit "ravi-oli"...
    Bon toujours est-il que si le but est d'éditer un état avec le contenu de
    ta liste, il y a la solution qui consiste à appliquer le RowSource de
    ta liste au RecordSource de l'état.
    Tu peux t'inspirer des exemples de ce tuto
    http://access.developpez.com/sources...EtatFormulaire

    Mais dans l'absolu, 44 champs dans une table! c'est pas un peu trop?
    Merci pour le rappel Tofalu.

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/08/2013, 15h28
  2. Réponses: 5
    Dernier message: 09/10/2008, 19h14
  3. Réponses: 9
    Dernier message: 04/06/2008, 11h38
  4. Récuperer des données de fichier pdf vers une feuille xls
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/08/2007, 14h03
  5. Comment charger des données en mémoire à partir d'une BDD
    Par n@n¤u dans le forum Persistance des données
    Réponses: 2
    Dernier message: 20/02/2007, 11h53

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