utilisation d'une procedure stockée TSQL depuis access - VB/VBA/VBS - Programmation
Marsh Posté le 03-04-2008 à 20:09:45
J'ai pas tout pigé ton problème à vrai dire...
Ta fonction "Function cnip_parametreRequeteSqlDirecte" affecte une commande à ton objet "cat.Procedures(reqSqlDirect)" sans l'exécuter.
C'est pas ça le souci ?
J'ai l'impression qu'il te manque juste une instruction "cat.Procedures(reqSqlDirect).Execute" à la fin de ta fonction.
Marsh Posté le 04-04-2008 à 17:33:01
je crois que c'est bien cela qu'il manque mais je l'ajoute simplement à la fin comme ceux-ci:
Public Function cnip_parametreRequeteSqlDirecte(ByVal reqSqlDirect As String, ByVal strSql As String)
Dim cat As New ADOX.Catalog
Dim cmd As ADODB.Command
cat.ActiveConnection = CurrentProject.Connection
Set cmd = cat.Procedures(reqSqlDirect).Command
cmd.CommandText = strSql
Set cat.Procedures(reqSqlDirect).Command = cmd
cat.Procedures(reqSqlDirect).Execute
End Function
car il me donne un erreur comme quoi "Membre de méthode ou de données introuvable"
est-ce que je dois faire qqch comme "set cat.Procedures(reqSqlDirect).Execute= cmd" ???
je suis dsl mais je ne comprend pas très bien ses objets ADO :S
Marsh Posté le 04-04-2008 à 18:07:57
et est-ce que tu sais comment je peux recuperer la valeur de retour d'une procedure stockée, car ma procedure stockée sur mon srv sql reçoit une variable optionel passé par référence donc "OUTPUT" et j'aimerais la recuperer depuis access:
Call cnip_parametreRequeteSqlDirecte("HorairesCopie_CopieUneSemaine_Optimized_180208", "EXEC HorairesCopie_CopieUneSemaine_Optimized_180208 @NumFormation=" & NumFormation & ", @dateDebutSource='" & dateDebutSemaineSourceFormate & "', @dateDebutCible='" & dateDebutSemaineCibleFormate & "', @compteurNbPeriodesVides= " & compteurNbPeriodesVides)
voilà, j'aimerais que compteurNbPeriodesVides soit affecté par la procédure stockée mais cela n'est pas affecté :S
Marsh Posté le 04-04-2008 à 20:32:14
En fait, je connais pas du tout le modèle objet de données d'Access, notamment cet ADOX.Catalog
A mon avis, il faut faire un cat.Execute en lui passant en paramètre de quoi retrouver la procédure à exécuter du coup, mais j'ai aucune idée de comme il faut faire.
Marsh Posté le 04-04-2008 à 20:32:47
PS : T'auras plus de chances si ton sujet est déplacé dans la catégorie VB/VBA, là c'est pas du SGBD à proprement parler...
Marsh Posté le 04-04-2008 à 20:43:40
ok merci! je vais le déplacer :S
euh.. si je trouve comme on fait
Marsh Posté le 31-03-2008 à 17:11:06
Bonjour à tous!
d'abord merci d'avance de votre aide!
voilà mon problème:
je realise une copie des horaires depuis access et pour cela j'utilise de procedures stockées qui se trouvent sur mon serveur SQL donc, elles sont codées en TSQL.
pour l'appel de ses procedures j'utilise une fonction en VBA(module Access) qui va affecter une requête sur access pour executer la procedure stockee.
voila le problème est quand je clique sur le bouton de copie, la requête contient les bons valeurs mais cela ne s'execute pas... et ça fonctionne quand je clique la 2eme fois sur le bouton :S
un peu de code:
requête sur access "HorairesCopie_CopieUneSemaine_Optimized_180208" (contient l'appel de la procedure qui se trouve sur mon srv):
EXEC HorairesCopie_CopieUneSemaine_Optimized_180208 @NumFormation=4003 , @dateDebutSource='28.01.2008', @dateDebutCible='04.02.2008'
fonction access de copie(appel fonction qui va affecter la requête):
Call cnip_parametreRequeteSqlDirecte("HorairesCopie_CopieUneSemaine_Optimized_180208", "EXEC HorairesCopie_CopieUneSemaine_Optimized_180208 @NumFormation=" & NumFormation & " , @dateDebutSource='" & dateDebutSemaineSourceFormate & "', @dateDebutCible='" & dateDebutSemaineCibleFormate & "'" )
fonction
Public Function cnip_parametreRequeteSqlDirecte(ByVal reqSqlDirect As String, ByVal strSql As String)
'Appel : depuis toute fonction ou évenement en ayant besoin (quasi toujours depuis les fonctions de création de critères de filtre)
'Description : Permet de modifier une requête SQL Directe.
Dim cat As New ADOX.Catalog
Dim cmd As ADODB.Command
cat.ActiveConnection = CurrentProject.Connection
Set cmd = cat.Procedures(reqSqlDirect).Command
cmd.CommandText = strSql
Set cat.Procedures(reqSqlDirect).Command = cmd
End Function
la fonction sur mon srv s'appelle aussi HorairesCopie_CopieUneSemaine_Optimized_180208 et elle fonctionne correctement
je ne comprend pas pourquoi cela fonctionne quand on clique 2 fois de suite sur le bouton de copie qui se trouve sur un formulaire et pas dès la 1ere fois
je vous remercie!!!
et j'att vos nouvelles avec impatience!
merci!
Cristina
Message édité par roblescriso le 04-04-2008 à 20:45:17