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 :

proc Stockée et SQL serveur VBA


Sujet :

VBA Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 128
    Points : 79
    Points
    79
    Par défaut proc Stockée et SQL serveur VBA
    Bonjour a tous

    Mon probleme est simple
    J'ai un logiciel développé en Vb sous access et je suis entrain de passer la bdd sous ms sql server 2005

    J'ai donc créer des procédures stockés dont une qui me renvoi un certain nombre d'enregistrements d'une table.

    J'essaye tant bien que mal d'exploiter les données de cette procédure.

    Je voulai savoir s'il etait possible de travaillé sur une procedure stocké comme sur une table

    Exemple

    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
     
    Dim conx As New ADODB.Connection
    conx.ConnectionString = machaine
    conx.Open
     
    Dim rec As New ADODB.Recordset
    rec.CursorLocation = adUseClient
    Dim rep As New ADODB.Recordset
    rep.CursorLocation = adUseClient
     
    Dim cmd As New ADODB.Command
    cmd.CommandText = "BTenC"
    cmd.CommandType = adCmdStoredProc
    cmd.ActiveConnection = conx
    rec.Open cmd
     
    TxtSql = "select compteur from " & BTenC & ""
    .........?????...............
    J'aimerais exploiter les données que retourne l procedure comme une table

    Merci

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonjour,

    On ne peut pas faire de SELECT sur une procédure stockée, juste un EXEC.
    Mais on peut obtenir un recordset ADO si la procédure stockée renvoie des enregistrements.

    Exemple avec une procédure stockée sans paramètres
    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
    Dim oConn As ADODB.Connection
    Dim oRS As ADODB.Recordset
     
    Set oConn = New ADODB.Connection
    oConn.Open "Provider=SQLOLEDB;...."
     
    Set oRS = New ADODB.Recordset
    oRS.CursorLocation = adUseClient
    Set oRS.ActiveConnection = oConn
    'oRS.Open "dbo.sp_maprocedurestockee", , adOpenStatic, adLockOptimistic, adCmdStoredProc
    oRS.Open "EXEC dbo.sp_maprocedurestockee", , adOpenStatic, adLockOptimistic, adCmdText
     
    Do While Not oRS.EOF
       Debug.Print oRS.Fields(0), oRS.Fields(1)
       oRS.MoveNext
    Loop
     
    oRS.Close
    Set oRS = Nothing
     
    oConn.Close
    Set oConn = Nothing
    S'il y a des paramètres on peut les mettre dans la source du recordset, en respectant la syntaxe Transact-SQL.
    Par exemple si ma procédure stockée a un premier paramètre numérique et un deuxième texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oRS.Open "EXEC dbo.sp_maprocedurestockee 123, 'abCD'", , adOpenStatic, adLockOptimistic, adCmdText
    Pour passer les paramètres on peut également passer par un objet Command.
    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
    Dim oConn As ADODB.Connection
    Dim oCmd As ADODB.Command
    Dim oRS As ADODB.Recordset
     
    Set oConn = New ADODB.Connection
    oConn.CursorLocation = adUseClient
    oConn.Open "Provider=SQLOLEDB;...."
     
    Set oCmd = New ADODB.Command
    Set oCmd.ActiveConnection = oConn
    oCmd.CommandType = adCmdStoredProc
    oCmd.CommandText = "dbo.sp_maprocedurestockee"
    ' Récupérer la collection de paramètres
    oCmd.Parameters.Refresh
    ' Fournir les paramètres
    oCmd.Parameters(1).Value = 123
    oCmd.Parameters(2).Value = "abCD"
     
    Set oRS = oCmd.Execute()
     
    Do While Not oRS.EOF
       Debug.Print oRS.Fields(0), oRS.Fields(1)
       oRS.MoveNext
    Loop
     
    oRS.Close
    Set oRS = Nothing
    Set oCmd = Nothing
    oConn.Close
    Set oConn = Nothing
    Remarque :
    On peut utiliser le nom des paramètres de la procédure stockée.
    Si le premier paramètre s'appelle @PARAM1 et le deuxième @PARAM2 (pas très original )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oCmd.Parameters("@PARAM1").Value = 123
    oCmd.Parameters("@PARAM2").Value = "abCD"
    A+

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

Discussions similaires

  1. [ SQL - proc stockée ] optimisation du code parcours curseur
    Par luimême dans le forum Langage SQL
    Réponses: 1
    Dernier message: 06/10/2005, 16h20
  2. Réponses: 2
    Dernier message: 28/09/2005, 09h55
  3. Procédure stockée : liste des serveurs SQL disponibles
    Par AF_STjohn dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/06/2005, 20h11
  4. Recopie de procs stocks dynamiques entre serveurs
    Par Chevalier Bayard dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 03/06/2005, 11h29
  5. Pb Procedure Stockée sous SQL SERVEUR et ACCESS
    Par alexcluzel dans le forum MS SQL Server
    Réponses: 24
    Dernier message: 30/07/2004, 16h31

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