begin process at 2012 02 13 23:43:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Base de données

 > 

ADO & DAO

 > 

ADODB avec les procédures stockées


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

ADODB avec les procédures stockées

lundi 14 janvier 2008 à 15:46:03 | ADODB avec les procédures stockées

darb66

Bonjour à tous,

J'ai créé une macro dans Excel pour accéder une base de données SQL Server 2005. Comme le montre mon code ci-dessous, j'utilise les objets ADODB  afin d'appeler une procédure stockée qui me retourne l'équivalent d'une requête "SELECT * FROM MaTable":

Dim f_strConn As String
Dim f_conn As ADODB.Connection
Dim f_cmd As ADODB.Command
Dim f_reco As ADODB.Recordset

f_strConn = "Provider=sqloledb;Data Source=MyServer;Initial Catalog=MyDB;User Id=MyUser;Password=MyPWD;"

Set f_conn = New ADODB.Connection
Set f_cmd = New ADODB.Command
Set f_reco = New ADODB.Recordset
   
f_conn.Open f_strConn


f_cmd.ActiveConnection = f_conn
f_cmd.CommandText = "SP_MyProcedure"
f_cmd.CommandType = adCmdStoredProc
f_cmd.Parameters.Append f_cmd.CreateParameter("@MyYear", _
                                adSmallInt, _
                                adParamInput, _
                                , _
                                2008)
Set f_reco = f_cmd.Execute
Do While Not f_reco.EOF
    '...
Loop

J'obtiens un message d'erreur lors de l'execution du code "Do While Not f_reco.EOF" qui dit: L'opération pour un objet "fermé" n'est pas autorisé. Il me semble pourtant que ma connexion est correctement initialisée (Je l'ai testée avec d'autres requêtes) et que la fonction .Execute devrait bien me retourner un objet de type RecordSet! Est-ce que quelqu'un aurait une idée? Qu'ai-je donc oublié? Merci d'avance pour votre aide...

lundi 14 janvier 2008 à 16:08:48 | Re : ADODB avec les procédures stockées

Exploreur

Membre Club
Salut,

Ben, justement...si ton object est fermé, c'est que tu l'ouvres pas justement...

f_reco.Open TaRequête, TaconnexionBdd

Enfin un truc du genre...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 

lundi 14 janvier 2008 à 16:17:29 | Re : ADODB avec les procédures stockées

darb66

Ta remarque est pertinente si j'utilise une commande de type texte:
f_reco.Open "SELECT * FROM MyTable", f_conn

Cependant j'utilise l'objet ADODB.Command car j'appelle une procédure stockée et lui passe un paramètre:
f_cmd.ActiveConnection = f_conn
f_cmd.CommandText = "SP_MyProcedure"
f_cmd.CommandType = adCmdStoredProc
f_cmd.Parameters.Append f_cmd.CreateParameter("@MyYear", _
                                adSmallInt, _
                                adParamInput, _
                                , _
                                2008)

Comment puis-je faire pour tout de même ouvrir l'objet f_reco ouvert tout en utilisant l'objet f_cmd? Même en appelant "f_reco.Open" tout seul cela ne fonctionne pas
lundi 14 janvier 2008 à 17:21:51 | Re : ADODB avec les procédures stockées

Exploreur

Membre Club
Réponse acceptée !
Re,

Regarde ce fichier en téléchargement si cela peut t'aider...car là je ne vois pas..

A+
Exploreur

 Linux a un noyau, Windows un pépin

 

mardi 15 janvier 2008 à 10:21:58 | Re : ADODB avec les procédures stockées

darb66

Effectivement, l'erreur vennait de la procédure stockée qui contenait la commande Create Table avant le Select. J'ai donc utilisé le code SQL SET NOCOUNT ON - au début de ma Procédure Stockée - qui est mentionné dans le fichier que tu proposes. Merci d'ailleurs pour le lien les infos présentées sont complètes et bien détaillées...


Cette discussion est classée dans : adodb, cmd, conn, procédures, reco


Répondre à ce message

Sujets en rapport avec ce message

Connexion a une base de donnee access ?!? [ par dave ] J'essaye de lire le contenu d'une base de donnee et ca ne marche pas pourquoi ?J'ai bien coche --> Microsoft ActiveX Data Objects 2.1 LibraryPrivate S MySQL & MyODBC [ par ricoux ] Bonjour,Via MyODBC, j'ai créé une table de type:Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim fld As ADODB.Field Dim sql As String<b HELLLLP ! Prb de requete sur base Oracle [ par lapinot ] Lorsque j'exécute le code suivant, jai le message :'ORA-00911 : Caractère non valide'J'ai essayé deux version d'Oracle, les biblis ADO 2.5 et 2.7, rie A L'AIDE ! Prb de requete sur base Oracle [ par lapinot ] Lorsque j'exécute le code suivant, jai le message :'ORA-00911 : Caractère non valide'J'ai essayé deux version d'Oracle, les biblis ADO 2.5 et 2.7, rie mayday mayday !! [ par galldup ] cela fait deux jours que je suis le dessus : J'essaie de lancer une requete VBA depuis accesset je n'arrive pas a me connecter la base de donnees: cel Ado.net [ par PatriceVB ] voici mon code, je ne vois pas où est le problème :Dim conn As New OleDb.OleDbConnection() Dim cmd As New OleDb.OleDbCommand() Dim dtrea Affecter le resultat d'une proc. stockée Sql server a une listbox [ par howard ] Bonjour, Voici une portion de code : Private Sub Bt_Recherche_Click()Dim Conn As ADODB.ConnectionDim Cmd As ADODB.CommandDim Prm_Criteria As ADODB. Pb recordcount [ par zephyrin ] Bonjour,J'utilise VB6, ADO et Oracle 8.Lorsque j'interroge ma BD via une procédure stockée, le recordcount me retourne toujours -1, même si j'ai des e prob avec fichier d'info du groupe de travail [ par euchbit ] Bonjour!Quand j'execute le code suivant :Dim rs As ADODB.RecordsetDim Conn As ADODB.ConnectionSet Conn = New ADODB.ConnectionConn.Open "provider=micro prob avec fichier d'info du groupe de travail [ par euchbit ] Bonjour!Quand j'execute le code suivant :Dim rs As ADODB.RecordsetDim Conn As ADODB.ConnectionSet Conn = New ADODB.ConnectionConn.Open "provider=micro


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,635 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales