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 :

Querytables.add sur SQL server, problème de variables SQL


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut Querytables.add sur SQL server, problème de variables SQL
    Bonjour,

    je rencontre actuellement un gros problème de communication vba/SQL server.

    J'utilise querytables.add pour soumettre mes requêtes, ce qui ne pose jamais de soucis, SAUF dans le cas où la requête fait intervenir des variables SQL. Dans ce cas, une erreur est rejetée par vba, alors que la même requête exécutée directement en SQL ne pose pas de soucis.

    Exemple tout bête :
    DECLARE @liste varchar(3);set @liste='500';select @liste;

    Pas de problème SQL (bon, peut-être pas la syntaxe la plus professionnelle, ça je ne sais pas), mais impossible à exécuter en vba avec le bloc suivant :

    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
     
    requete_SQL="DECLARE @liste varchar(3);set @liste='500';select @liste;"
    With ActiveSheet.QueryTables.Add(Connection:= _
            "ODBC;DRIVER=SQL Server;SERVER=XXX;UID=XXX;PWD=XXX;APP=Microsoft Office 2003;WSID=ITEM-60109" _
            , Destination:=Range(rang))
            .CommandText = requete_SQL
            .Name = "Lancer la requête à partir de XXX"
            .FieldNames = False
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlOverwriteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=True
        End With
    bloc qui ne m'a jamais causé de problème sur de simples Select.

    L'utilisation de SQL server via vba autorise-t-elle la création de variables SQL?
    Si oui, où est mon erreur?

    Merci !

    ps : si le sujet a plus sa place dans le forum SQL server, merci de le déplacer !

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 105
    Par défaut
    peut-u décrire le message d'erreur en question? et sur quelle ligne le vba s'arrête?

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut
    si je laisse l'option
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Refresh BackgroundQuery:=True
    pas d'erreur, mais la réponse affichée dans Excel est
    Lancer la requête à partir de XXX
    et pas le
    500
    auquel je m'attend

    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Refresh BackgroundQuery:=False
    le code s'arrête à cette ligne, avec une erreur d'exécution '1004', erreur définie par l'application ou par l'objet

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 08/03/2010, 09h22
  2. [D7][SQL Server]Exécuter un script SQL Server dans firebird
    Par aityahia dans le forum Bases de données
    Réponses: 4
    Dernier message: 16/04/2007, 07h44
  3. Réponses: 7
    Dernier message: 16/11/2006, 08h49
  4. Sauvegarde SQL-Server 2000 pour restauration SQL-Server 2005
    Par Harny dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/10/2006, 11h06
  5. Migration SQL Server 6.5 vers SQL Server 2000
    Par Douglas dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/10/2005, 11h44

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