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

Macros et VBA Excel Discussion :

SQl via VBA: problème avec objet "Command"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1
    Par défaut SQl via VBA: problème avec objet "Command"
    Bonjour,

    J'essaye de lancer des commandes SLQ sur une base de données via VBA (Excel2007).

    J'ai réussi à me connecter sur la base via un DSN, et j'arrive à lancer des requêtes grâce à l'objet RecordSet et à récupérer les résultats.
    En revanche, pas moyen d'utiliser l'objet Command. J'ai constamment l'erreur

    "runtime 3709: The connection cannot be used to perform this operation. It is either closed or invalid in this content".

    Ci-dessous mon code, quasi-directement tiré du tutoriel de Sébastien Curutchet, trouvé sur ce site. Quelqu'un pourrait-il me dire ou il pêche?

    """"""

    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
    Sub tutoriel()
     
    'Déclaration des variables
    Dim cnx As ADODB.Connection
    Dim cmd As ADODB.Command
    Dim prm1 As ADODB.Parameter
    Dim rst As ADODB.Recordset
     
    'Instanciation des variables
    Set cnx = New ADODB.Connection
    Set cmd = New ADODB.Command
    Set prm1 = New ADODB.Parameter
    Set rst = New ADODB.Recordset
     
    'Connexion à la base de données
    cnx.ConnectionString = "DSN=SQL_CONNECT; UID=MTa; PWD=DSDSDE"
    cnx.Open
     
     
    rst.Open "Select R_SNAPC, R_IDFD from AQR_BPI_COLLAT", cnx  'Fonctionne sans problème
     
     
    'Préparation de l'objet Command
    cmd.CommandText = "Select R_SNAPC, R_IDFD from LISTE"
     
    'Exécution de la requête
    Set rst = cmd.Execute       ''''''' L'ERREUR SE SITUE LA ''''''''''
     
    End Sub
    """""""

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté Avatar de arosec
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2009
    Messages
    167
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 167
    Par défaut
    Bonsoir,

    Il manque un lien entre cmd et cnx.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'Préparation de l'objet Command
    cmd.ActiveConnection = cnx
    cmd.CommandText = "Select R_SNAPC, R_IDFD from LISTE"
    cmd.CommandType = adCmdText
    
    'Exécution de la requête
    Set rst = cmd.Execute()
    Cdlt,

Discussions similaires

  1. problème avec l'apostrophe dans une requête
    Par mika0102 dans le forum VBA Access
    Réponses: 7
    Dernier message: 09/03/2019, 16h51
  2. Problème avec objet fermé
    Par Mvu dans le forum ASP
    Réponses: 4
    Dernier message: 22/09/2005, 10h30
  3. [Requete SQL en VBA] Problème avec la fonction FLOOR
    Par zubral dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/07/2004, 13h24

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