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 :

ADO procedure stockée [Ac97] [À faire]


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 2
    Points
    2
    Par défaut ADO procedure stockée [Ac97]
    Bonjour à tous,

    J'ai réussi avec ACCESS 97 à lancer une proc stockée simple à mon serveur SQLServer,
    mais maintenant je voudrais récupérer le parametre OUTPUT de ma proc dans
    mon programme VBA , je ne pige pas la syntaxe .

    En ADO bein entendu

    Quelqu'un aurait il un exemple ?


    Voici ma syntaxe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim objcommand as ADODB.command
     
    Set objCommand = New ADODB.Command
            Set objCommand.ActiveConnection = objConn
            objCommand.CommandType = adCmdStoredProc
            objCommand.CommandText = "recup"    ---> ma procédure "RECUP" à normalement un parametre en sortie.
            objCommand.Execute , , ADODB.ExecuteOptionEnum.adExecuteNoRecords
    C'est où qu'il faut placer le param et commen on le déclare et comment on le récupère.


    Merci d'avance
    Merci

  2. #2
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Bienvenue sur ce forum,
    je t'invite à lire les règles du forum et la FAQ
    Pour ta question, moi j'utilise un appel à une procédure stocké sur Oracle et je pense que ça doit être la même chose, moi je récupère ma valeur de retour dans une table (que je lie ensuite sur ma base Access), c'est vrai j'ai jamais pensé à la récupérer par code, j'ajoute juste la valeur en fait dans une table !! voila si ça peut t'aider.

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    C'est pas bête mais je voudrais vraiment la récupérer par ADO.
    Fierté quand tu nous tiens !!!

  4. #4
    Membre éclairé
    Avatar de m-mas
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2003
    Messages
    576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2003
    Messages : 576
    Points : 719
    Points
    719
    Par défaut
    Citation Envoyé par jeromeb
    C'est pas bête mais je voudrais vraiment la récupérer par ADO.
    Fierté quand tu nous tiens !!!
    Tu as sûrement raison, je vais chercher aussi de mon côté

  5. #5
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Re: ADO: procedure stockée ACCESS 97
    Bonjour

    L'utilisation d'un objet Parameter ajouté dans la collection Parameters de ton objet Command devrait solutionner ton problème. Voici un exemple où j'utilise une commande ADO pour exécuter une procédure stockée sur un serveur SQL pour récupérer une valeur en sortie :
    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
     
     
       Dim cmdMoyenne As ADODB.Command
        Set cmdMoyenne = New ADODB.Command
     
        'caractéristiques de la commande
        cmdMoyenne.CommandText = "calc_moyenne"
        cmdMoyenne.CommandType = adCmdStoredProc
        cmdMoyenne.ActiveConnection = conn
     
        'fournir les paramètres nécesaires à l'execution de la commande
    [color=red]
        cmdMoyenne.Parameters.Append _
            cmdMoyenne.CreateParameter("p_noeleve", adInteger, adParamInput, 4, CInt(TxtNoEleve.Value))    cmdMoyenne.Parameters.Append _
            cmdMoyenne.CreateParameter("moy", adSingle, adParamOutput)
        [/color]
        'execution de la commande et recupération de la valeur dans le paramètre output
        cmdMoyenne.Execute
        'récupération de la valeur calculée par la procédure stockée
        TxtMoyGene.Value = cmdMoyenne("moy").Value
    La procédure stockée prend deux arguments, le premier en entrée, le second en sortie, qui sont représentés par deux objets paramètres crées (méthode CreateParameter de l'objet Command) et ajoutés à la collection Parameters de l'objet Command (méthode Append de Parameters) dans l'ordre où ils doivent être fournis à la procédure stockée. Les noms attribués au paramètres n'ont pas à être identiques à ceux des arguments de la procédure stockée, ils servent de clé pour l'objet Paramètre dans la collection Parameters. Le second argument de CreateParameter est le type ADO du paramètre (décrits dans l'énumération DataTypeEnum de la bibliothèque ADO), le troisième indique le sens du paramètre (constante), le quatrième la taille en octets (utilie surtout pour les types caractères...), et le cinquième permet d'indiquer la valeur contenue par le paramètre (pour un paramètre en sortie, il est bien sûr facultatif puisque c'est la procédure stockée qui va y placer la valeur retournée...)

    A l'issue de l'exécution de la commande, on peut lire la valeur placée dans le paramètre en sortie de la commande en y accédant par sa clé ou son indice au sein de la collection Parameters.

    En espérant que ça t'aidera.
    S.

  6. #6
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ca a l'air de bien correspondre à mon besoin , par contre je pige pas pourquoi mais chaque fois que j'utilise Createparameter j'ai un message

    "Utilisation incorrecte de l'objet"


    PS: je ne trouve pas le fichier d'aide ADO270.chm , est ce que par hasard vous l'auriez ?

    Merci

  7. #7
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par jeromeb
    Ca a l'air de bien correspondre à mon besoin , par contre je pige pas pourquoi mais chaque fois que j'utilise Createparameter j'ai un message

    "Utilisation incorrecte de l'objet"
    Le code dans lon message précédent est mal formaté car j'ai fait l'erreur de vouloir y introduire des balises pour mettre les lignes en couleurs. Mes excuses...

    En fait la même instruction regroupe l'utilisation de la méthode Append de la collection Parameters dont l'argument est la référence à l'objet Parameter créé par CreateParameter. Le schéma général de l'instruction est donc :

    obj_commande.Parameters.Append obj_commande.CreateParameter(nom,type,sens,taille,valeur)

    PS: je ne trouve pas le fichier d'aide ADO270.chm , est ce que par hasard vous l'auriez ?

    Merci
    Voir les Messages Personnels

    @+
    S.

  8. #8
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ne vous inquietez pas pour les couleurs , mon prob persiste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
            Set objCommand = CreateObject("ADODB.Command")
            objCommand.ActiveConnection = objConn
            objCommand.CommandType = adCmdStoredProc
            objCommand.CommandText = "recup"
            objCommand.Parameters.Append objCommand.CreateParameter("etiq", , adParamOutput)
     
            objCommand.Execute
     
            MsgBox "valeur :" & objCommand("etiq").Value
    Il est bon non ?

  9. #9
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ca y est c'est bon, la solution:

    C'était simplement que dans le param on doit déclaré une taille si on met un type de données de longueur variable ou définir le parametre avant APPEND

  10. #10
    Candidat au Club
    Inscrit en
    Décembre 2003
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    En effet, j'ai peur de n'avoir pas été assez clair sur ce point

    L'essentiel étant que le problème soit résolu

    @+
    S.

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

Discussions similaires

  1. [ADO.NET] Procedure stocké + float + ora 20100
    Par freddyboy dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 06/06/2008, 11h04
  2. procedure stockée champ date
    Par tripper.dim dans le forum SQL
    Réponses: 5
    Dernier message: 25/04/2003, 09h47
  3. Appel a une procedure stockée en vba
    Par The_Nail dans le forum VBA Access
    Réponses: 36
    Dernier message: 01/04/2003, 16h44
  4. procedure stockée dans un dbbatch
    Par pram dans le forum XMLRAD
    Réponses: 4
    Dernier message: 07/02/2003, 16h35
  5. [VB6] [ADO] Procedure stockée : spécifier les paramètres
    Par adepdoom dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/10/2002, 10h45

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