J'ai une base de données Access 2003 qui se connecte à une boîte SQL Server 2008 via ODBC. Les tables de SQL Server sont connectées en tant que tables liées dans Access. J'ai une procédure stockée sur le serveur SQL que j'essaye d'exécuter via le code ADO. Le problème que j'ai est que Access ne peut pas sembler trouver la procédure. Que dois-je faire dans Access pour pouvoir exécuter cette procédure stockée? Quelques faits ...Comment exécuter une procédure stockée à partir d'Access à l'aide de tables liées
La procédure stockée en question accepte un paramètre qui est un nombre entier. La procédure stockée renvoie un jeu d'enregistrements que j'espère utiliser comme source de données pour un contrôle ListBox.
Voici mon code ADO dans Access ...
Private Sub LoadUserCaseList(userID As Integer)
Dim cmd As ADODB.Command
Set cmd = New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "uspGetUserCaseSummaryList"
Dim par As New ADODB.Parameter
Set par = cmd.CreateParameter("userID", adInteger)
cmd.Parameters.Append par
cmd.Parameters("userID") = userID
Dim rs As ADODB.Recordset
Set rs = cmd.Execute()
lstUserCases.Recordset = rs
End Sub
L'erreur que je reçois est « le moteur de base de données Microsoft Jet ne peut pas trouver la table d'entrée ou de la requête "uspGetUserCaseSummaryList".
Excellente réponse! Merci beaucoup. Une question. Comment suggéreriez-vous de stocker les informations de chaîne de connexion sur le serveur SQL afin que les modifications ne doivent être effectuées qu'au même endroit? Une chose que j'aime à propos des tables liées est que j'ai une macro nommée "Refresh Connection" qui appelle un sous-programme qui réinitialise les informations de connexion ODBC pour toutes les tables (basculer entre les environnements de test et de production). Ce serait génial si je pouvais faire la même chose pour les informations de connexion ADO sans que les utilisateurs entrent dans le code. – webworm
En supposant que vous possédez des propriétés de connexion stockées dans une table, vous pouvez créer des enregistrements distincts pour les propriétés de connexion test et prod. Avoir votre macro Refresh Connection marquer l'enregistrement approprié comme actif. Créez ensuite une fonction, GetConnectionString, qui lit l'enregistrement de connexion active et construit votre chaîne de connexion. Ensuite, le code ci-dessus pourrait être changé en cnn.ConnectionString = GetConnectionString. BTW, vous pouvez préférer utiliser une connexion de confiance afin que vous puissiez éviter de traiter avec ID utilisateur et mot de passe. – HansUp
Merci encore. Excellente solution – webworm