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

VBA Access Discussion :

[VBA-A]GetString


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 15
    Par défaut [VBA-A]GetString
    Bonjour,

    J'aimerais prendre les éléments de mon recordSet et les mettre dans une string et c'est pour ça que j'utilise la méthode GetString mais cela ne marche pas. Qqn pourrait me dire pk ou me conseiller une autre méthode ?

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Function EmailToSend_Click()
        Set cdb = CurrentDb()
        Dim SqlSelectRecepients As String
     
        SqlSelectRecepients = "SELECT myTableId.mySpalteEmail FROM myTableId;"
        Set rst_SqlSelectRecepients = cdb.OpenRecordset(SqlSelectRecepients)
     
    ' ERREUR ICI : "cet objet ne gère pas cette propriété"
     txt = rst_SqlSelectRecepients.GetString(adClipString)

  2. #2
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut Re: GetString
    slt


    Citation Envoyé par jeate
    SqlSelectRecepients = "SELECT myTableId.mySpalteEmail FROM myTableId;"
    Set rst_SqlSelectRecepients = cdb.OpenRecordset(SqlSelectRecepients)

    ' ERREUR ICI : "cet objet ne gère pas cette propriété"
    txt = rst_SqlSelectRecepients.GetString(adClipString)
    essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txt = rst_SqlSelectRecepients!champQueTuVeuxajouter

  3. #3
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    le problème c'est que ça t'affichera le dernier enregistrement du champ sélectionné... A moins que ta requête ne renvoie qu'une seule valeur

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 15
    Par défaut
    Salut !

    Je te remercie de m'avoir répondu si vite !

    Mais j'ai essayé et le déboggueur me met à la variable txt "Item not found in this collection" et je suis sûr que ma requête est juste et qu'il y a des données dans la table !

    Tu saurais pk ça marche pas ?

  5. #5
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    est-ce que le champ que tu veux récupérer est bien écrit dans ta requête?

    fait péter ta fonction currentDb()

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 15
    Par défaut
    Oui, j'ai vérifié 10 fois, ne t'inquiète pas !

    Moi aussi, je ne comprends pas pk ça plante.

    Et en fait, je voudrais TOUS les enregistrements car c'est pour faire une liste d'envoi (pour envoyer un email).

    Et je suis obligé d'avoir currentDb, sinon g une erreur "objet requis" dans mon recordSet.

    Bon, je vais essayer peut-être encore qqch là... Je reviendrai plus tard pour voir si t'aurais pu m'aider entre-temps...

    Merci déjà pour ton aide !

  7. #7
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    essaye tout ça: ça marche pour moi

    Dans un module
    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
    35
    36
    37
    38
    39
     
    Public Function InitConnection(DSN As String, UserName As String, PassWord As String) As Boolean
     
        'Déclaration des variables locales
        Dim strInput As String
     
        InitConnection = False
     
        'Initialisation de la chaine de connexion
        cnnADO.ConnectionString = "DSN=nomDataBase;"
     
        'Vérifie que la connexion est bien fermée
        If cnnADO.State = adStateOpen Then
            cnnADO.Close
        End If
     
        'Connexion à la base de données
        cnnADO.Open cnxString, GTI, GTI, adSyncConnect
     
        'Attente que la connexion soit établie
        While (cnnADO.State = adStateConnecting)
            DoEvents
        Wend
     
        'Vérification des erreurs dans le cas d'une mauvaise connexion
        If cnnADO.Errors.Count > 0 Then
     
            'Affichage des erreurs
            MsgBox cnnADO.Errors.Item(0)
            InitConnection = False
            Exit Function
     
            Else
                InitConnection = True
        End If
     
        cmdADO.ActiveConnection = cnnADO
     
    End Function
    dans ta fonction EmailToSend_Click()


    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
     
     
    Public Function EmailToSend_Click() 
     
    call initConnection("DSN", "userName", "passWord")
     
      'on effectue la requête sql 
        cmdADO.CommandText = "SELECT champs FROM tables"
     
    'Configurer le recordset
        'si le recordset est déjà ouvert on le ferme
        If rsADO.State = adStateOpen Then
            rsADO.Close
        End If
        'Curseur client
        rsADO.CursorLocation = adUseClient
        'curseur dynamique
        rsADO.CursorType = adOpenDynamic
        'on verrouille l'enregistrement des accès dans la source de données
        rsADO.LockType = adLockPessimistic
     
        'ouverture du recordset
        rsADO.Open cmdADO
     
    'Faire jusqu'à la fin du recorset
    Do Until rsADO.EOF
     
    	txt = txt & rsADO!NomDuChamps & chr(13) & chr(10)
    	'on passe à l'enreg suivant
                   rsADO.moveNext
    Loop
     
    ...

  8. #8
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Hello!
    Et si tu remplaces ta ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txt = rst_SqlSelectRecepients.GetString(adClipString)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim txt() As String
    If Not rst_SqlSelectRecepients.EOF and NOT rst_SqlSelectRecepients.BOF Then
       rst_SqlSelectRecepients.MoveFirst
       i = 0
       While Not rst_SqlSelectRecepients.BOF
          txt(i) = Cstr(rst_SqlSelectRecepients(0))
          i = i + 1
       Wend
    End If
    C'est pas testé, mais ça devrait aller.

  9. #9
    Membre Expert
    Avatar de sovo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    1 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 389
    Par défaut
    je ne sais pas si je vois mal mais tu essais d'atteindre un champ que tu n'as pas selectionner.

    Citation Envoyé par jeate
    Public Function EmailToSend_Click()
    Set cdb = CurrentDb()
    Dim SqlSelectRecepients As String

    SqlSelectRecepients = "SELECT myTableId.mySpalteEmail FROM myTableId;"
    Set rst_SqlSelectRecepients = cdb.OpenRecordset(SqlSelectRecepients)

    ' ERREUR ICI : "cet objet ne gère pas cette propriété"
    txt = rst_SqlSelectRecepients.GetString(adClipString)
    ta requette tu ne fait la selection que sur le champ mySpalteEmail. Si tu voudrais avoir acces a l'autre champs tu devrais aussi l'ajouter dans ta requette. Et ca te donnerais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SqlSelectRecepients = "SELECT myTableId.mySpalteEmail,myTableId.adClipString FROM myTableId;" 
        Set rst_SqlSelectRecepients = cdb.OpenRecordset(SqlSelectRecepients) 
     
    'en supposant que [b]adClipString[/b] est aussi dans la table [b]myTableId[/b]
    Avec ca ca devrais aller.

  10. #10
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    Citation Envoyé par sovo
    je ne sais pas si je vois mal mais tu essais d'atteindre un champ que tu n'as pas selectionner.

    ta requette tu ne fait la selection que sur le champ mySpalteEmail. Si tu voudrais avoir acces a l'autre champs tu devrais aussi l'ajouter dans ta requette. Et ca te donnerais un truc du genre :
    [/code]
    Exact,
    j'avais pas fait gaffe que notre cher ami jeate n'avait pas mis le champ qu'il voulait dans sa requête...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 15
    Par défaut
    Bonjour à tous !

    Je vous remercie de votre aide, c'est très gentil.

    Alors, pour le fonction "Public Function InitConnection" de Asdorve, ça ne marchait pas car il ne trouvait pas l'objet cnnADO.ConnectionString = "DSN=GTI;"

    Quant à la soluce de Megaxel, elle ne marchait pas à cause de l'indice (mais c possible que c parce qu'il n'y avait PEUT-ETRE pas de champs)

    Quant à sovo, alors l'argument adClipString est nécessaire avec la fonction GetString (selon Aide d'Access : StringFormat Valeur StringFormatEnum qui spécifie de quelle manière l'objet Recordset doit être converti en chaîne. Les paramètres RowDelimiter, ColumnDelimiter et NullExpr ne sont utilisés que si StringFormat est égal à adClipString.)

    Malgré tout, g trouvé la solution et la voici :

    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
    Private Sub Commande53_Click()
     
      Set cdb = CurrentDb()
      Dim SqlSelectRecepients As String
      Dim MonMessage As Object
      Set MonOutlook = CreateObject("Outlook.Application")
      Set MonMessage = MonOutlook.CreateItem(0)
     
      SqlSelectRecepients = "SELECT tblEmail.Email FROM tblEmail;"
      Set rst_SqlSelectRecepients = cdb.OpenRecordset(SqlSelectRecepients)
     
      Do Until rst_SqlSelectRecepients.EOF                              'Reihe auslesen
        myEmail = rst_SqlSelectRecepients!Email
        MonMessage.To = MonMessage.To + " " & myEmail & ", "
        rst_SqlSelectRecepients.MoveNext
      Loop
      rst_SqlSelectRecepients.Close
     
      MonMessage.Subject = "Refeering"
      MonMessage.Display
      Set MonOutlook = Nothing
    End Sub

  12. #12
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    NORMAL que DSN= "GTI" ne fonctionne pas, c'est le nom de ma base ...

    Maintenant je vois que dans ta solution tu reprends des choses citées plus haut.
    bonne continuation à toi;

    Pense, si ce n'est fait, à la balise "Résolu"...

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 15
    Par défaut
    mdr Ah merde, j'avais pas compris !!! Alala ! lol

    Et elle est où cette balise "résolue" alors ?

  14. #14
    Membre éprouvé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Par défaut
    en bas, tu as deux boutons: résolu et délestage...

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 15
    Par défaut
    Super, c fait ! )

    Bonne journée à vous tous et merci encore !

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

Discussions similaires

  1. [VBA] [Interface] BringToFront/SendToBack
    Par DarkVader dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/10/2002, 14h29
  2. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  3. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19
  4. [VBA-E] [Excel] Filtrer le donnees d'une sheet
    Par donia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2002, 10h55
  5. problème avec VBA
    Par Delph dans le forum Langage
    Réponses: 2
    Dernier message: 19/08/2002, 13h15

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