Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[DAO] ALIMENTER UN LISTBOX AVEC UNE REQUÊTE SQL


Information sur la source

Catégorie :Base de Donnees Classé sous : dao, listbox, requête, données, sql Niveau : Débutant Date de création : 15/07/2005 Date de mise à jour : 16/07/2005 13:46:24 Vu / téléchargé: 9 445 / 1 206

Note :
Aucune note

Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Suite à une demande sur le forum;

Ce code se connecte à une base de données ACCESS avec les objets DAO
pour effectuer une requête SQL de type SELECT
et afficher les enregistrements d'un champ dans un ListBox.

L'intérêt est de comprendre la manipulation d'objets DataBase et Recordset,
qui permettent de se passer du contrôle Data et/ou du contrôle DBList.
 

Source

  • 'On a besoin d'un formulaire et d'un Listbox.
  • Option Explicit
  • Private Sub Form_Load()
  • 'Si "Type non défini par l' utilisateur" : aller dans Projet/Références
  • 'et ajouter la librairie des objets DAO.
  • Dim maBase As Database
  • Dim monRecordset As Recordset
  • 'On a une base nommée 'TestBase' qui contient une table 'users'.
  • 'Cette table contient 2 champs: 'nick' et 'host'.
  • Set maBase = OpenDatabase("D:\code\VB\DAO\TestBase.mdb")
  • Set monRecordset = maBase.OpenRecordset( _
  • "SELECT nick FROM users ORDER BY nick", dbOpenSnapshot)
  • With monRecordset
  • .MoveLast ' Remplit l'objet Recordset.
  • .MoveFirst
  • Do While Not .EOF 'puis parcours les enregistrements
  • List1.AddItem !nick
  • .MoveNext
  • Loop
  • .Close 'fermeture du recordset
  • End With
  • maBase.Close 'fermeture de la base de données
  • End Sub
'On a besoin d'un formulaire et d'un Listbox.

Option Explicit

Private Sub Form_Load()
'Si "Type non défini par l' utilisateur" : aller dans Projet/Références
'et ajouter la librairie des objets DAO.
    
    Dim maBase As Database
    Dim monRecordset As Recordset

'On a une base nommée 'TestBase' qui contient une table 'users'.
'Cette table contient 2 champs: 'nick' et 'host'.
    
    Set maBase = OpenDatabase("D:\code\VB\DAO\TestBase.mdb")
    Set monRecordset = maBase.OpenRecordset( _
        "SELECT nick FROM users ORDER BY nick", dbOpenSnapshot)

    With monRecordset
        .MoveLast    ' Remplit l'objet Recordset.
        .MoveFirst

            Do While Not .EOF   'puis parcours les enregistrements
                List1.AddItem !nick
                .MoveNext
            Loop

        .Close 'fermeture du recordset
    End With

    maBase.Close 'fermeture de la base de données

End Sub

Conclusion

Note: la méthode Opendatabase prend en argument le chemin complet de la base mais ce n'est pas obligatoire.

Une base de données exemple est fournie dans le zip.

Conseil: placez des points d'arret dans le code, et pendant l' exécution, affichez la fenêtre variables locales
(menu Affichage) pour observer les propriétés des objets créés.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

16 juillet 2005 13:46:24 :
Ajout d'une image pour les malvoyants

Commentaires et avis

signaler à un administrateur
Commentaire de klinux le 16/07/2005 13:01:25

les types database et recordset n'existent pas,je ne sais pas pourquoi?!

signaler à un administrateur
Commentaire de Neo.balastik le 16/07/2005 16:55:30

klinux > tu dois référencer la bibliothèque DAO
Pour ce faire tu vas dans le menu Projet -> Références -> tu coches dans la liste 'Microsoft DAO 3.6 Object Library'

mythic_kruger > DAO est une technologie obsolète supplantée par ADO qui est bien plus puissant (mais pas aussi évident à manipuler).  Certes DAO fonctionne toujours et son emploi est simple.
Je te conseille vivement de voir du côté de ADO et d'oublier DAO.  Tout nouveau programme développé ne devrait plus utiliser DAO.

signaler à un administrateur
Commentaire de klinux le 16/07/2005 18:29:31

merci,j'ai pas fait attentionca marche tres bien

signaler à un administrateur
Commentaire de mythic_kruger le 17/07/2005 06:18:24

Neo.Balistik: STP montres-nous le même code avec les ADO pour comparer.

signaler à un administrateur
Commentaire de Neo.balastik le 18/07/2005 08:23:39

mythic_kruger >

Voilà un court extrait en ADO :

Dim oADO   As ADODB.Connection
Dim oRS    As ADODB.Recordset
Dim strPWD As String
Dim strSQL As String

Set oADO = New ADODB.Connection

'Dans le cas d'une DB avec un mot de passe
With oADO
.PROVIDER = "Microsoft.jet.oledb.4.0;Jet OLEDB:Database Password=" & strPWD
.Mode = adModeShareDenyNone
.ConnectionString = "D:\code\VB\DAO\TestBase.mdb"
.Open
End With

    Set oRS = New ADODB.Recordset

    strSQL = "SELECT nick FROM users ORDER BY nick"

    With oRS
        .CursorLocation = adUseClient
        .Open strSQL, oADO, adOpenForwardOnly, adLockOptimistic
        .Properties.Refresh
        .MoveLast
        .MoveFirst

        Do While Not .EOF
            List1.AddItem .Fields("Nick").value
           .MoveNext
        Loop

        .Close

    End With
    
  oADO.Close

  Set oRS = Nothing
  Set oADO = Nothing

signaler à un administrateur
Commentaire de mythic_kruger le 18/07/2005 10:23:39

Super!

signaler à un administrateur
Commentaire de mythic_kruger le 18/07/2005 19:32:08

DAO n'est pas obsolète et l'exemple ayant un but pédagogique sied à son rôle tout en cadrant dans son domaine.
Dans cet article sur msdn il est démontré qu'en effet la syntaxe ADO est légèrement différente de celle de DAO et RDO, et que DAO convient à de très petits projets -donc idéal pour les débutants qui découvrent un objet recordset.
J'étais surpris de lire que DAO ne suporte pas le DDL (donc ne supporte que le DML) ça aussi ça peut être bon à savoir.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconadocomparedwithrdodao.asp

signaler à un administrateur
Commentaire de vodoussi01 le 31/07/2005 22:16:54

Je voudrais faire un formulaire Facturation avec les noms des clients et ensuite les articles dans une grille DBGrid.
SVP aider moi. Visual Basic 6.0 seulement.

signaler à un administrateur
Commentaire de zenned le 04/02/2006 11:34:34

elle est bien est copmpréhensible
merci
tu peut m'aider comment avoir remplire le datgird a partir du requtte sql

signaler à un administrateur
Commentaire de ccir le 10/03/2006 04:36:30

et quest-ce-qui se passe si tu a plus de 32768 records??? List box accepte uniquement 32768 records!

signaler à un administrateur
Commentaire de bibi_angel le 11/05/2006 14:00:28

Merki mythic_kruger, c'est pile le code que je cherchais!

signaler à un administrateur
Commentaire de fring le 21/10/2006 13:13:52

utiliser au lieu du chemin "D:\......." ---->app.path &"\base_de_donne.mdb"

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Excel --> Access [ par maniacjole ] MANIACJOLEBonjour à tous ceux qui liront ce message.J'utilise énormément Excel et Access, j'arrive à partir d'excel à récupérer des données en provena VBA et requête SQL [ par staann ] voilà, après toutes les infos qu'on m'a données à propos des treeviews, le projet est bien avancé (donc merci) Mais là g Requête SQL pour se connecter à une source de données ODBC [ par bidossessy ]  donnez moi une requête SQL pour se connecter à une source de données ODBC depuis microsoft access Requête SQL ajout sans doublon [ par sabrina7 ] Bonjour, J'ai créer une requête SQL qui tourne sur une base Access. Cette requête me récupère des données d'une table pour les insérer dans une autr listbox et index [ par Splif62 ] Salut les amis ! Je développe une application en vb.net et sql serveur.j'aurais besoin d'aide sur un point :j'ai une listbox sur un formulaire qui con Mise à jour BDD SQL depuis Grid avec requête Croisée en source [ par vince1978 ] Bonjour,Je vous explique mon petit soucis s'il en est. J'ai un datagridview en vb net alimenté par une procédure stockée SQL. J'ai donc mon Grid qui e Requête SQL dans Access disparait après une exécution [ par ddaphne ] Bonjour à tous,J'ai un souci et pour moi c'est un gros souci.Alors j'ai une BD SQL Server 2000 avec en front une application Access 2000.Dans cette ap sauvegarde les données d'une listbox [ par contra69005 ] bonjour comment je sauvegarde les données d'une listboxje souhaiterais savoir si quelq'un peu me dire si c possible de sauvegarde des données dans une [VBS] MS SQL : liste bases et fichiers [ par parker13 ] Bonjour, Je souhaite écrire un script en VBS qui permet de lister les informations suivantes d'un serveur Microsoft SQL : les bases de données les fic


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.