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 :

Lister le contenu d'une table


Sujet :

Access

  1. #1
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut Lister le contenu d'une table
    Bonjour,

    Je voudrais lister le contenu d'une table dans un texte pour pouvoir ensuite l'envoyer par mail.

    Suivant une table, je ressors un numéro d'établissement qui me permait de pointer sur une autre table contenant x enregistrement(s).

    Mon problème vient que je ne sais pas comment mettre le contenu de la table dans le texte. Je veux éviter d'attacher un fichier Excel.

    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
    Dim oSql, oSql1 As DAO.Recordset
            Dim oRst, oRst1 As Variant
            Dim Table1 As String
     
            Set oSql = CurrentDb.OpenRecordset("SELECT * FROM User_non_utilise ORDER BY Ets")
            Set oRst = oSql.Fields("Ets")
     
            oRst1 = ""
     
            While Not oSql.EOF
     
                If oRst <> "" And oRst <> oRst1 Then
     
                    Table1 = "" & oRst & "_USER_NON_UTILISE"
     
                    Set oSql1 = CurrentDb.OpenRecordset("SELECT * FROM Liste_RA_Email WHERE Num_mag=" & oRst & "")
                    Set oRst1 = oSql1.Fields("Email")
     
     
            'Personne en copie des mails
            bccRecipient = ""
     
            'Sujet du mail
            Subject = "Utilisateur(s) non utilisé(s)"
     
            'Texte du mail
            BodyText = "Bonjour," _
            & vbCrLf & vbLf & "Veuillez trouver ci-joint la liste des utilisateurs qui n'ont jamais été utilisés " _
            & vbCrLf & vbLf & "ou dont la connexion remonte à plus de 30 jours :" _
            & vbCrLf & vbLf & "" _
            & vbCrLf & "" _
            & vbCrLf & vbLf & "Vous remerciant de votre collaboration," _
            & vbCrLf & vbLf & "Cordialement," _
            & vbCrLf & vbLf & "Support"""
    Merci pour votre aide,

    LeRico

  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 017
    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 017
    Points : 24 554
    Points
    24 554
    Par défaut
    2 solutions :

    Faire un export de cette table en fichier texte puis l'attacher.

    Parcourir la table de bout en bout et copier chaques champs dans le mail. Un DAO.Recordset peut faire l'affaire (voir la FAQ et le tuto DAO pour cette solution)

    Cordialement,

  3. #3
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Merci pour tes réponses.

    Mais j'ai des difficultés avec la DAO.
    J'ai vu que la méthode GetRows permettait de retourner un tableau avec les enregistrements d'une table.

    J'ai fait un petit code où j'aimerais afficher dans une msgbox les enregistrements de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function test()
     
        Dim oSql As DAO.Recordset
        Dim oRst As Variant
     
        Set oSql = CurrentDb.OpenRecordset("007_USER_NON_UTILISE", dbOpenTable)
        oRst = oSql.GetRows(2)
     
    End Function
    Je ne vois pas comment extraire les informations de oRst = oSql.GetRows(2)
    La table est composé de 3 champs USER_NAME, DESCRIPTION, DATE_CREATION, et 2 enregistrements.

    Merci.

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Bonjour,

    Getrows renvoie un tableau.

    Regarde la fonction Join qui à partir d'un tableau renvoi une chaine de caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MavariableTexte = Join(oRst,";")
    Cordialement,

  5. #5
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    La fonction JOIN ne fonctionne pas : "Appel de procédure incorrecte".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function test()
     
        Dim oSql As DAO.Recordset
        Dim oRst As Variant
        Dim tableau As String
     
        Set oSql = CurrentDb.OpenRecordset("007_USER_NON_UTILISE", dbOpenTable)
        oRst = oSql.GetRows(2)
     
        tableau = Join(oRst, ";")
     
    End Function

  6. #6
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Je n'arrive pas à trouver une solution dans le tuto DAO .

    La seule chose que j'arrive à faire c'est de mettre un enregistrement.

    Comment stocker tous les enregistrements de la table pour ensuite les copier dans un texte ?

    Je suis surpris qu'il n'y a pas une fonction pour afficher le contenu d'une table.
    Apparament c'est possible sur access 2003 mais je suis en 2002.

    Merci pour votre aide.

  7. #7
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    J'ai trouvé une solution.

    C'est moins joli qu'un tableau mais ça fonctionne :
    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
    Function test()
     
        Dim oSql As DAO.Recordset
        Dim oRst2, oRst3 As Variant
        Dim Recup As String
     
        Set oSql = CurrentDb.OpenRecordset("007_USER_NON_UTILISE", dbOpenTable)
     
            While Not oSql.EOF
     
                Set oRst2 = oSql.Fields("USER_NAME")
                Set oRst3 = oSql.Fields("DESCRIPTION")
                Recup = Recup & oRst2 & " (" & oRst3 & ")" & " ; "
                oSql.MoveNext
            Wend
     
        MsgBox "" & Recup & ""
     
    End Function

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    supposons que tu aies une requête contenant tes enregistrements
    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
     
    Function bodmail(req As String, ParamArray x() As Variant) As Variant
    Dim mabase As DAO.Database
    Dim monrec As DAO.Recordset
    Dim tempo As Variant
    Dim champ As Variant
    Set mabase = CurrentDb()
    Set monrec = mabase.OpenRecordset(req)
    monrec.MoveFirst
    Do Until monrec.EOF
    For Each champ In x
    tempo = tempo & monrec(champ) & " "
    Next champ
    tempo = tempo & Chr(10)
    monrec.MoveNext
    Loop
    bodmail = tempo
    End Function
    tu utilises ensuite mail.body=bodmail("nomdemareqête","champ1","champ3" noms des champs séparés par une virgule)

  9. #9
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Bonjour,

    En effet c'est étrange.

    regarde ce lien

    http://warin.developpez.com/access/dao/

    Cordialement,

  10. #10
    Membre régulier Avatar de lerico
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 115
    Points : 90
    Points
    90
    Par défaut
    Merci Random. Ton exemple m'a permi d'affiner mon programme.
    Je n'avais pas pensé au saut de ligne chr(10).
    Le résultat est plus sympathique.

    Pour répondre à Loufab.
    J'ai effectivement regarder attentivement le tuto de Christophe WARIN mais cela ne correspondait pas à mon problème.
    J'aimerais bien comprendre le fontionnement de GetRows.

    J'ai trouvé quelques indices pour ma réponse dans Source http://access.developpez.com/sources...QLLigneColonne

    Merci.

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

Discussions similaires

  1. Lister le contenu d'une table dans un DataGrid
    Par Imad_ing dans le forum VB.NET
    Réponses: 1
    Dernier message: 28/12/2007, 13h46
  2. [MySQL] Lister le contenu d'une table selon un champ
    Par MisteroL dans le forum Langage SQL
    Réponses: 1
    Dernier message: 29/01/2007, 23h19
  3. [MySQL] Lister le contenu d'une table dans un tableau HTML
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 03/04/2006, 19h40
  4. Lister le contenu d'une table sans connaitre ses champs
    Par Google.be dans le forum PostgreSQL
    Réponses: 9
    Dernier message: 30/03/2004, 15h23
  5. Lister la structure d'une table
    Par TMuet dans le forum SQL
    Réponses: 2
    Dernier message: 29/12/2003, 17h56

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