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

Access Discussion :

Exécution d'une procédure stockée dans Sql


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Par défaut Exécution d'une procédure stockée dans Sql
    Bonjour à tous,
    Je voudrais exécuter une procédure stockée d'une base SQL depuis Access en lui passant un paramètre de type uniqueidentifier.

    ALTER PROCEDURE [dbo].[UGet_ConfRapport]
    @MonId uniqueidentifier
    AS
    BEGIN
    SET NOCOUNT ON;

    SELECT .....
    FROM USel_ConfRapport
    WHERE (MonId = @MonId)
    Le code utilisé dans Access est le 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
     Dim ObjCon      As New ADODB.Connection
    Dim ObjCmd      As New ADODB.Command
    Dim ObjParam    As New ADODB.Parameter
    Dim ObjRs       As New ADODB.Recordset
     
    StrCnn = "DSN=UvTrend;UID=peupli_p;PWD=peupli_p;"
    ObjCon.Open StrCnn
    ObjCmd.ActiveConnection = ObjCon
    ObjCmd.CommandText = "UGet_ConfRapport"
    ObjCmd.CommandType = adCmdStoredProc
    ObjCmd.Parameters.Refresh
    ObjCmd(1).Type = adGUID
    ObjCmd(1) = MonId
    Set ObjRs = ObjCmd.Execute
    Ou MonId est le paramètre récupéré dans un autre procédure. J'obtiens une erreur à chaque appel.
    J'utilisais précédemment des tables attachées à cette base Sql et j'étais obligé de passer par GuidFromString et StringFromGuid pour que mes requêtes s'exécutent. J'ai essayé mais là cela ne fonctionne pas.
    Qui peut m'aider ?

  2. #2
    Expert confirmé
    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
    Par défaut
    Bonjour,

    J'ai testé chez moi, ça fonctionne.
    Que dit le message d'erreur ?
    Quel est le type de la variable MonId ?
    J'ai essayé avec Dim MonId() As Byte et Dim MonId As String avec succès.

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Par défaut
    Le message d'erreur est le suivant :
    Une opération OLE-DB en plusieurs étapes a généré des erreurs.

    MonId est récupéré à partir d'une autre requête et est un UID. Il est affecté à un textbox masqué dans un formulaire. Je récupère cette valeur en l'affectant soit à une variable de type string après l'avoir converti par GuidtoString soit à un tableau de type Byte donc sans conversion.
    Si j'utilise une variable de type string j'obtiens la valeur suivante :
    {guid {0E8A6667-CB6C-4A76-AA2D-85EC207512DE}}
    Si je passe GuidFromString de cette variable cela ne marche pas.
    Idem avec le tableau de type Byte.

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3
    Par défaut
    Le message d'erreur est le suivant :
    Une opération OLE-DB en plusieurs étapes a généré des erreurs.

    MonId est récupéré à partir d'une autre requête et est un UID. Il est affecté à un textbox masqué dans un formulaire. Je récupère cette valeur en l'affectant soit à une variable de type string après l'avoir converti par GuidtoString soit à un tableau de type Byte donc sans conversion.
    Si j'utilise une variable de type string j'obtiens la valeur suivante :
    {guid {0E8A6667-CB6C-4A76-AA2D-85EC207512DE}}
    Si je passe GuidFromString de cette variable cela ne marche pas.
    Idem avec le tableau de type Byte.
    J'ai finalement changer le type de paramètre de l'objet commande en adBSTR au lieu de adGuid et créé une fonction qui supprime { guid de ma chaine et maintenant cela fonctionne mais ce n'est pas très propre et je ne comprend pas pourquoi la fonction guidfromstring ne fonctionne pas.

  5. #5
    Expert confirmé
    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
    Par défaut
    Bonjour,

    Juste un témoignage personel :

    Dans le code de l'essai que j'ai fait,
    - Je n'utilise pas les fonctions GuidtoString et StringFromGuid.
       Je pense que VBA fait les conversions adéquates.
    - Je ne définit pas le type du paramètre. Il se met automatiquement avec avec l'appel à
       la méthode .Refresh

    A+

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

Discussions similaires

  1. Temps d'exécution pour une procédure stockée PL/SQL Oracle 9
    Par strompakha dans le forum Administration
    Réponses: 3
    Dernier message: 18/05/2010, 14h09
  2. Exécution d'une procédure stockée sous sql server 2000
    Par amirad dans le forum Développement
    Réponses: 2
    Dernier message: 27/04/2009, 09h50
  3. Réponses: 2
    Dernier message: 30/09/2008, 14h49
  4. Réponses: 0
    Dernier message: 30/09/2008, 01h14
  5. Réponses: 2
    Dernier message: 20/03/2007, 17h00

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