begin process at 2008 08 21 14:51:00
1 229 438 membres
257 nouveaux aujourd'hui
14 263 membres club

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é: 8 026 / 1 078

Note :
Aucune note

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

Description

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.
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

16 juillet 2005 13:46:24 :
Ajout d'une image pour les malvoyants
  • 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

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
extraction dinformatio...
Budget : 300€
campagne Adwords
Budget : 5 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS