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

MS SQL Server Discussion :

Pb Procedure Stockée sous SQL SERVEUR et ACCESS


Sujet :

MS SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut Pb Procedure Stockée sous SQL SERVEUR et ACCESS
    Bonjour,
    1°) Lorsque j'exécute un Procedure stockée SQL Serveur sous Access il me met le message d'erreur suivant :
    Une requete SQL Directe avec la propriété ReturnRecords ayant la valeur True n''a pas renvoyé d'enregistrements.

    Voila mon code
    DECLARE @vartest varchar(7)
    SET @vartest = '2004-02'
    EXECUTE test @proc_test="'&@vartest&'"

    2°) Mon deuxième problème c'est que lorsque je lance la procedure stockée il me lance une fenetre pour choisir le nom DSN (mon lien ODBC) peut on l'enlever avec un bout de code si oui comment.

    Pouvez-vous m'aidez merci

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Tu dois nous poster tout ton script.
    1-Ton Create Procedure
    2-Ton EXEC

    Merci.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut Pb Procedure Stockée sous SQL SERVEUR et ACCESS
    Voila ma procedure Stockée mais elle est bonne car quand je met
    EXECUTE test @proc_test="2004-02" elle marche

    c'est quand je met
    DECLARE @vartest varchar(7)
    SET @vartest = '2004-02'
    EXECUTE test @proc_test="'&@vartest&'"

    elle ne fonctionne plus en fait je veux récupérer la valeur d'un champ dans un formulaire mais ça ne fonctionne pas même si je met forms!nom!champ à la place de '2004-02'


    CREATE PROC test
    @proc_test char(10)
    AS
    SELECT Commandes.Commande, Articles.Article, Articles.Designation, Commandes.QteCommande, Commandes.DateLivraisonEsperee,
    [Suivi QS].[OK Liv], Commandes.CodeFournisseur, [Suivi QS].QS, RIGHT(Commandes.DateCommande, 4)
    + '-' + SUBSTRING(Commandes.DateCommande, 4, 2) AS mois
    FROM Articles INNER JOIN
    Commandes ON Articles.Article = Commandes.CodeArticle INNER JOIN
    [Suivi QS] ON Commandes.Commande = [Suivi QS].[N°Commande]
    WHERE (RIGHT(Commandes.DateCommande, 4) + '-' + SUBSTRING(Commandes.DateCommande, 4, 2) = @proc_test)
    GO

  4. #4
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE @vartest varchar(7) 
    SET @vartest = '2004-02' 
    EXECUTE test @vartest
    Et ca marche !!!!

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    non ça ne marche pas c'est exactement ça que je faisais ça me met le message suivant

    Une requete SQL Directe avec la propriété ReturnRecords ayant la valeur True n''a pas renvoyé d'enregistrements

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    ça marche sous sql serveur mais pas sous ACCESS

    DECLARE @vartest varchar(7)
    SET @vartest = '2004-02'
    EXECUTE test @proc_test=@vartest

    ça me met le message d'erreur ReturnsRecords à True alors qu'il est à true

  7. #7
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Et que te donne ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DECLARE @vartest varchar(7),@sql varchar(8000)
    SET @vartest = '2004-02'
    set @sql='test ' + @vartest 
    EXECUTE @sql

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    ça me donne impossible de trouver la procedure stockée test 2004-02

  9. #9
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DECLARE @vartest varchar(7),@sql varchar(8000) 
    SET @vartest = '2004-02' 
    set @sql='test ''' + @vartest + '''' 
    EXECUTE @sql
    Ca commence à me faire rire !!!

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  10. #10
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut ACCESS et SQL Server
    Bonjour,

    Je ne voudrais pas m' imposer dans votre débat, cependant pour répondre à tes premières questions, dans access pour ma part je crée toujours une requête sqldirect avec la chaine de connection enregistrer (login et password) et ensuite grace à la collection Querydefs, j'en change la source par Programation. Ainsi cette requête "MaSqlDirect" peux me servire a récuperer des donnée ou executer des actions.
    Exemple

    Set Monresulat = Currentdb.openRecordset("MasqlDirect",dbopensnapshot)
    OU
    Currentdb.execute "MasqlDirect"

    Avant ces lignes j'ai modifié le contenu de MasqlDirect grace à:
    Currentdb.QueryDefs("MasqlDirect").Sql="Select * from MaTable"
    OU
    Currentdb.QueryDefs("MasqlDirect").Sql="MaProc '2004-02'"
    OU
    Currentdb.QueryDefs("MasqlDirect").Sql="MaProc '" & Forms![Monform]![MonChamp] & "'"
    Etc ...
    "openRecordset" est utilisé pour récuperer un recordset même s'il sagit d'une procédure stockée
    et
    "Execute" uniquement pour les requêtes action.

    En esperant que cela réponde à tes besoins.

    Si je n'ai pas été assez clair n'hésite pas me recontacter.

    @+
    @+


    Pensez au tag

  11. #11
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut ACCESS et SQL Server
    Bonjour,

    Je ne voudrais pas m' imposer dans votre débat, cependant pour répondre à tes premières questions, dans access pour ma part je crée toujours une requête sqldirect avec la chaine de connection enregistrée (login et password) et ensuite grace à la collection Querydefs, j'en change la source par Programation. Ainsi cette requête "MaSqlDirect" peux me servire a récuperer des donnée ou executer des actions.
    Exemple

    Set Monresulat = Currentdb.openRecordset("MasqlDirect",dbopensnapshot)
    OU
    Currentdb.execute "MasqlDirect"

    Avant ces lignes j'ai modifié le contenu de MasqlDirect grace à:
    Currentdb.QueryDefs("MasqlDirect").Sql="Select * from MaTable"
    OU
    Currentdb.QueryDefs("MasqlDirect").Sql="MaProc '2004-02'"
    OU
    Currentdb.QueryDefs("MasqlDirect").Sql="MaProc '" & Forms![Monform]![MonChamp] & "'"
    Etc ...
    "openRecordset" est utilisé pour récuperer un recordset même s'il sagit d'une procédure stockée
    et
    "Execute" uniquement pour les requêtes action.

    En esperant que cela réponde à tes besoins.

    Si je n'ai pas été assez clair n'hésite pas me recontacter.

    @+
    @+


    Pensez au tag

  12. #12
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut ACCESS et SQL Server
    Bonjour,

    Je ne voudrais pas m' imposer dans votre débat, cependant pour répondre à tes premières questions, dans access pour ma part je crée toujours une requête sqldirect avec la chaine de connection enregistrée (login et password) et ensuite grace à la collection Querydefs, j'en change la source par Programation. Ainsi cette requête "MaSqlDirect" peux me servire a récuperer des donnée ou executer des actions.
    Exemple

    Set Monresulat = Currentdb.openRecordset("MasqlDirect",dbopensnapshot)
    OU
    Currentdb.execute "MasqlDirect"

    Avant ces lignes j'ai modifié le contenu de MasqlDirect grace à:
    Currentdb.QueryDefs("MasqlDirect").Sql="Select * from MaTable"
    OU
    Currentdb.QueryDefs("MasqlDirect").Sql="MaProc '2004-02'"
    OU
    Currentdb.QueryDefs("MasqlDirect").Sql="MaProc '" & Forms![Monform]![MonChamp] & "'"
    Etc ...
    "openRecordset" est utilisé pour récuperer un recordset même s'il sagit d'une procédure stockée
    et
    "Execute" uniquement pour les requêtes action.

    En esperant que cela réponde à tes besoins.

    Si je n'ai pas été assez clair n'hésite pas me recontacter.

    @+
    @+


    Pensez au tag

  13. #13
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut ACCESS et SQL Server
    Bonjour,

    Je ne voudrais pas m' imposer dans votre débat, cependant pour répondre à tes premières questions, dans access pour ma part je crée toujours une requête sqldirect avec la chaine de connection enregistrée (login et password) et ensuite grace à la collection Querydefs, j'en change la source par Programation. Ainsi cette requête "MaSqlDirect" peux me servire a récuperer des donnée ou executer des actions.
    Exemple

    Set Monresulat = Currentdb.openRecordset("MasqlDirect",dbopensnapshot)
    OU
    Currentdb.execute "MasqlDirect"

    Avant ces lignes j'ai modifié le contenu de MasqlDirect grace à:
    Currentdb.QueryDefs("MasqlDirect").Sql="Select * from MaTable"
    OU
    Currentdb.QueryDefs("MasqlDirect").Sql="MaProc '2004-02'"
    OU
    Currentdb.QueryDefs("MasqlDirect").Sql="MaProc '" & Forms![Monform]![MonChamp] & "'"
    Etc ...
    "openRecordset" est utilisé pour récuperer un recordset même s'il sagit d'une procédure stockée
    et
    "Execute" uniquement pour les requêtes action.

    En esperant que cela réponde à tes besoins.

    Si je n'ai pas été assez clair n'hésite pas me recontacter.

    @+
    @+


    Pensez au tag

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup je vais tester

  15. #15
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut Requête SQL Direct
    Excuse moi j'ai oublié un point important que je viens d'utiliser dans mon Dev,
    Pense aussi à changer la propriété "returnsrecords" de ta requête, True pour récuperer des enregistrements et false pour executer une requête action.
    Voila une petite procédure jointe pour préparer idéalement tes requêtes.

    @+


    Sub PrepareSqlDirect(psQueryName As String, psClauseSql As String, pbReturnRecord As Boolean)
    With CurrentDb.QueryDefs(psQueryName)
    .SQL = psClauseSql
    .ReturnsRecords = pbReturnRecord
    End With
    End Sub
    @+


    Pensez au tag

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Je ne sais pas comment déclarer "Monresultat", je ne sais pas manipuler ses objets Recordsets, et QueryDefs

    Il me met un message d'erreur : type incompatible

    Dim Monresulat As Recordsets
    CurrentDb.QueryDefs("ps_test").SQL = "test '2004-02'"
    Set Monresulat = CurrentDb.OpenRecordset("ps_test", dbOpenSnapshot)

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Je ne sais pas comment déclarer "Monresultat", je ne sais pas manipuler ses objets Recordsets, et QueryDefs

    Il me met un message d'erreur : type incompatible

    Dim Monresulat As Recordsets
    CurrentDb.QueryDefs("ps_test").SQL = "test '2004-02'"
    Set Monresulat = CurrentDb.OpenRecordset("ps_test", dbOpenSnapshot)

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Sub PrepareSqlDirect(psQueryName As String, psClauseSql As String, pbReturnRecord As Boolean)
    With CurrentDb.QueryDefs(psQueryName)
    .SQL = psClauseSql
    .ReturnsRecords = pbReturnRecord
    End With
    End Sub

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Sub PrepareSqlDirect(psQueryName As String, psClauseSql As String, pbReturnRecord As Boolean)
    With CurrentDb.QueryDefs(psQueryName)
    .SQL = psClauseSql
    .ReturnsRecords = pbReturnRecord
    End With
    End Sub

  20. #20
    Membre éclairé
    Avatar de Didier L
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2004
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2004
    Messages : 503
    Points : 806
    Points
    806
    Par défaut SQL Direct
    Dans ton exemple tu doit avoir :

    Dim Monresulat As Recordsets

    PrepareSqlDirect "ps_test", "test '2004-02'", True
    Set Monresulat = CurrentDb.OpenRecordset("ps_test", dbOpenSnapshot)

    Dans le cas ou "Ps_test" est bien une requête SQL direct
    Que " test '2004-02' " correspond bien à ta procédure stockée
    Et que dans Les référence des modules ACCESS tu travaille bien avec Microsoft DAO 3.6 Object Library
    @+


    Pensez au tag

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Procedure stocké sous sql server management studio
    Par isaac.kanyinda dans le forum Administration
    Réponses: 5
    Dernier message: 16/05/2012, 10h39
  2. Procédure stockée sous SQL Server et MS access
    Par mfofana dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 02/04/2011, 00h15
  3. Grosse Base Access à passer sous SQL Serveur
    Par Guillaumed67 dans le forum Développement
    Réponses: 3
    Dernier message: 19/02/2010, 09h02
  4. Procédure stocké VB.net sous SQL Serveur 2005
    Par champmart dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/05/2009, 12h41
  5. Réponses: 3
    Dernier message: 23/04/2009, 09h24

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