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

Requêtes et SQL. Discussion :

Remplir une Liste par SQL ?


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 8
    Points : 6
    Points
    6
    Par défaut Remplir une Liste par SQL ?
    Bonjour à tous,

    Je cherche à remplir une zone de liste au clic d'un bouton par du code VBA et SQL...
    Voilà ce que j'ai essayé :

    Pour info :
    monBouton : le bouton (évident non ? )
    Liste1 : la zone de liste
    Base Clients : la table access
    Cpos : un champ de la table (codes postaux)

    Private Sub monBouton_Click()
    Me.Liste1.ControlSource = "SELECT [Base Clients].Cpos FROM [Base Clients];"
    Me.Liste1.Requery
    End Sub
    Mais rien ne s'affiche dans la zone de liste...
    Je me doute un peu qu'il faut passer par addItem mais je ne sais pas comment, en VBA, récupérer chaque résultat du sql pour l'insérer dans la liste...
    Je sais comment le faire en PHP mais pas en VBA
    Quelqu'un peut m'aider ?

    Merci d'avance

  2. #2
    Membre chevronné
    Avatar de Demco
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 396
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 396
    Points : 2 228
    Points
    2 228
    Par défaut
    Bonjour,

    Tout d'abord merci pour la clareté de ton message. Pour un premier message sur le forum c'est assez rare pour être apprécié.

    Pour ton problème je te propose de t'intéresser à la propriété RowSource des zones de liste comme tu verras dans divers exemples de la FAQ :
    http://access.developpez.com/faq/?re...=zone+de+liste

    Si tu veux réellement utiliser AddItem pour x raisons intéresses-toi aux RecordSet qui te permettront de récupérer, ligne par ligne, les enregistrements retournés par ta requête.

    En espérant t'aider.
    J'aime les gâteaux.

  3. #3
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut Re: Remplir une Liste par SQL ?
    Citation Envoyé par Zigouigoui
    Bonjour à tous,

    Je cherche à remplir une zone de liste au clic d'un bouton par du code VBA et SQL...
    Voilà ce que j'ai essayé :

    Pour info :
    monBouton : le bouton (évident non ? )
    Liste1 : la zone de liste
    Base Clients : la table access
    Cpos : un champ de la table (codes postaux)

    Private Sub monBouton_Click()
    Me.Liste1.ControlSource = "SELECT [Base Clients].Cpos FROM [Base Clients];"
    Me.Liste1.Requery
    End Sub
    Mais rien ne s'affiche dans la zone de liste...
    Je me doute un peu qu'il faut passer par addItem mais je ne sais pas comment, en VBA, récupérer chaque résultat du sql pour l'insérer dans la liste...
    Je sais comment le faire en PHP mais pas en VBA
    Quelqu'un peut m'aider ?

    Merci d'avance
    en php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql = mysql_query("SELECT ... FROM ... WHERE ... ") ;
    while ($rec = mysql_fetch_array($sql))
    {
       echo "Valeurs : " . $rec['NomduChamp'] . "<br>" ;
    }
    en vb / vba
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim rec As DAO.Recordset
    Dim db as DAO.Database
    set db = CurrentDB()
    set rec = db.OpenRecordset("SELECT ... FROM ... WHERE ...")
    Do While Not rec.eof
       MsgBox "Valeurs : " & rec.Fields("NomduChamp").Value
    Loop
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  4. #4
    Membre confirmé
    Avatar de Petogaz
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 479
    Points : 580
    Points
    580
    Par défaut
    salut,

    c'est bien la fonction rowsource (cela suffit) que tu dois utiliser pour avoir ce que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub monBouton_Click() 
    Me.Liste1.rowsource= "SELECT Cpos FROM [Base Clients];" 
    Me.Liste1.Requery 
    End Sub

  5. #5
    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 : 40
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub monBouton_Click() 
    Me.Liste1.ControlSource = "SELECT [Base Clients].Cpos FROM [Base Clients];" 
    Me.Liste1.Requery 
    End Sub
    Pourtant ton code semble correct

    Est ce bien une zone de liste de type "Table/Requête" ?

    Vérifie qu'ailleurs aucun code du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Liste1.ControlSource=""
    n'est lancé

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Et ça ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub monBouton_Click() 
     
    Set maliste= Forms![le nom du form].[Liste1]
    monSQL="SELECT [Base Clients].Cpos FROM [Base Clients];" 
     
    maliste.RowSourceType = "Table/requête"
    maliste.RowSource = monSQL
     
    End Sub
    Et dans la propriété Sur fermeture de ton Form tu rends place nette
    :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Form_Close()
     
    Set maliste= Forms![le nom du form].[Liste1]
    maliste.RowSourceType = ""
    maliste.RowSource = ""
     
    End Sub

  7. #7
    Membre confirmé
    Avatar de Petogaz
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 479
    Points : 580
    Points
    580
    Par défaut
    heu ! Tofalu dans son cas je pense que c'est la propriété Rowsource qui convient le mieux car la propriété ControlSource permet de lier simplement un contrôle de zone de liste ou de zone de liste modifiable à un champ du jeu d'enregistrements spécifié dans la propriété RecordSource d'un formulaire, alors que la propriété RowSource sert à remplir un contrôle de zone de liste ou de zone de liste modifiable.
    pour spécifier le type de Rowsource à utiliser il suffit d'ajouter la propriété RowSourceType . donc on aura :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub monBouton_Click()
    Me.liste1.RowSourceType = "Table/Requête"
    Me.Liste1.Rowsource= "SELECT Cpos FROM [Base Clients];" 
    Me.Liste1.Requery 
    End Sub

  8. #8
    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 : 40
    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
    Tout à fait petogaz j'avais pas vu

  9. #9
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Points : 1 579
    Points
    1 579
    Par défaut
    Le code est tout a fait correcte. Il suffit juste de rajouter le nbre de colonne et leur largeur pour voir le résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub monBouton_Click()
    Me.liste1.RowSourceType = "Table/Requête"
    Me.Liste1.Rowsource= "SELECT Cpos FROM [Base Clients];" 
    Me.Liste1.ColumnCount = 1
    Me.Liste1.ColumnWidths = "3cm"
     
    Me.Liste1.Requery 
    End Sub
    Amicalement

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Demco
    Tout d'abord merci pour la clareté de ton message. Pour un premier message sur le forum c'est assez rare pour être apprécié.
    Merci disons que j'ai l'habitude des forums, et je que j'ai été modérateurs de plusieurs forums d'aide informatique (modération arrêter par manque de temps

    La commande RowSource marche impec, un grand merci à vous tous, désolé de n'avoir pas répondu avant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. remplir une liste par une requête
    Par jujurochedu42 dans le forum Langage
    Réponses: 1
    Dernier message: 16/05/2012, 14h45
  2. WCF Data Service : remplir une liste par des String
    Par safisafi dans le forum Silverlight
    Réponses: 7
    Dernier message: 22/07/2011, 18h58
  3. remplir une liste par datatable
    Par midosd dans le forum JSF
    Réponses: 22
    Dernier message: 05/11/2009, 11h42
  4. Réponses: 6
    Dernier message: 21/07/2008, 11h21
  5. Réponses: 2
    Dernier message: 26/05/2007, 17h28

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