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 :

Utilisation des procedures stockées en VBA


Sujet :

VBA Access

  1. #1
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut Utilisation des procedures stockées en VBA
    Bonjour à tous.

    Je début une application Access connecté à une BD SQLServer. Je suis donc en fase de test des procédures stockés. J'ai trouvé et adapté un bout de code qui me permet de récupérer le résultat d'une Procedure Stocké mais j'ai pas tout compris. Voici mon appel de procedure
    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
    Public Sub ExempleAppelPS()
    'on apppel une procédure stoké en lui chargeant un paramêtre et on affect le résultat à un RS
    Dim cmd As ADODB.Command
    Dim rs As ADODB.Recordset
    Dim p1 As ADODB.Parameter
    Set cmd = New ADODB.Command
    cmd.ActiveConnection = CurrentProject.Connection
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "PS_NomIngre_PoidNor_CommentaireNor"
     
    Set p1 = cmd.CreateParameter("@NumSel", adInteger, adParamInput)
     
    cmd.Parameters.Append p1
    p1.Value = 1
     
    Set rs = cmd.Execute
     
    MsgBox rs.RecordCount
    End Sub
    Voici ma procedure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    CREATE PROCEDURE [dbo].[PS_NomIngre_PoidNor_CommentaireNor] 
    	-- Add the parameters for the stored procedure here
    	@NumSel int
    AS
    BEGIN
    	-- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
     
        -- Insert statements for procedure here
    	SELECT i.NomIngre, n.PoidNor, n.CommentaireNor
        FROM TL_FormSel_Ingre_NORMAUX n JOIN Ingredients i ON i.PK_NumIngre =  n.FK_NumIngre
        WHERE n.FK_NumFormSel = @NumSel ;
    END
    VOICI MES QUESTIONS :
    1-La fonction Parmeter.Append ... que fait elle éxactement?
    2-Si à l'appel de la procedure, quand je défini le paramêtre, je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set p1 = cmd.CreateParameter("@NumSel1", adInteger, adParamInput)
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set p1 = cmd.CreateParameter("@NumSel", adInteger, adParamInput)
    ça fonctionne...pourquoi? (dans ma procedure le paramêtre s'appel @NumSel)

    3-Existe-t'il un moyen d'appeler la procedure sans faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set p1 = cmd.CreateParameter("@NumSel", adInteger, adParamInput)
     
    cmd.Parameters.Append p1
    p1.Value = 1
    Merci d'avance à tous pour vos réponses.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    la fonction append ajoute un élément à une collection.
    Tu ne peux donc pas créer plusieurs fois un paramètre avec le nom @NumSel.

    Pour utiliser ce parametre, il faut lui affecter une valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set p1 = cmd.parameter("numSel")
    p1.value = ...
    sans certitude sur la syntaxe

  3. #3
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Merci pour la réponse.

    Sinon la seul amélioration que j'ai trouvé c'est d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set p1 = cmd.CreateParameter("@NumSel", adInteger, adParamInput,,1)
     
    cmd.Parameters.Append p1
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set p1 = cmd.CreateParameter("@NumSel", adInteger, adParamInput)
     
    cmd.Parameters.Append p1
    p1.Value = 1

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Je ne comprend pas pourquoi tu veux absolument créer un paramètre supplémentaire alors qu'il existe déja dans ta procédure stockée ???

  5. #5
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    En fait je ne sais pas comment appeler la procedure et affecter une valeur au paramêtre sans faire les ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set p1 = cmd.CreateParameter("@NumSel", adInteger, adParamInput,,1)
     
    cmd.Parameters.Append p1

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 427
    Points : 520
    Points
    520
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set p1 = cmd.parameters("@numSel")
    p1.value = ...
    Logiquement comme ça.
    Tu accèdes au paramètre @numsel de la collection Paramètres de la procédure. Puis tu lui affectes une valeur (integer)
    Et tu exécutes la procédure.

  7. #7
    Membre actif Avatar de tribaleur
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2006
    Messages
    401
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2006
    Messages : 401
    Points : 237
    Points
    237
    Par défaut
    Et bin merci grandement pour tes réponses.

    J'avais pas pensé à faire comme ça...

    Encore merci

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

Discussions similaires

  1. Impossible de créer des procedures stockée ==> ERREUR 106
    Par JMS_PCO dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 27/02/2006, 17h33
  2. [EXCEL][VBA] Utilisation des formules Excel en VBA
    Par Amanck dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 15h08
  3. Autorisations des procedures stockées
    Par Devilcat20 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 19/08/2005, 09h14
  4. [CR][VB6] Utilisation des procédures stockées
    Par couledoux dans le forum SDK
    Réponses: 3
    Dernier message: 10/03/2005, 14h29
  5. 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

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