Comment faire pour exécuter la procédure stockée à partir de l'Accès à l'aide de tables liées
J'ai une base de données Access 2003 qui se connecte à un Serveur SQL server 2008 box via ODBC. Les tables de SQL Server sont connectés comme les tables liées à l'Accès. J'ai une procédure stockée sur le Serveur SQL que je suis en train de l'exécuter via le code ADO. Le problème que j'ai est que l'Accès ne semble pas à trouver la procédure. Que dois-je faire à l'intérieur d'un Accès pour pouvoir exécuter cette procédure stockée? Quelques faits ...
La procédure stockée en question accepte un paramètre qui est un entier. La procédure stockée renvoie un jeu d'enregistrements dont je suis l'espoir de l'utiliser comme source de données pour un contrôle ListBox.
Voici mon code ADO dans l'Accès ...
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 j'obtiens est "la base de données microsoft jet moteur ne peut pas trouver l'entrée de la table ou de la requête "uspGetUserCaseSummaryList".
OriginalL'auteur webworm | 2010-06-15
Vous devez vous connecter pour publier un commentaire.
CurrentProject.Connexion la connexion à votre base de données Access. Vous pouvez le vérifier en faisant cela, dans la fenêtre exécution:
Vous avez besoin pour créer un nouveau ADODB.Objet de connexion avec une chaîne de connexion qui pointe vers votre instance de SQL Server. Votre ADODB.Objet de commande de la connexion.
Modifier: Vous pouvez éliminer le ADODB.Objet de commande, et l'utilisation de la méthode Execute de la connexion de retour des dossiers à partir de votre procédure stockée. Cet exemple utilise une procédure stockée qui attend 3 paramètres.
Vous pouvez trouver un exemple de chaîne de connexion qui correspond à vos besoins, à ConnectionStrings.com
En supposant que vous avez les propriétés de connexion stockées dans une table, vous pouvez créer des dossiers distincts pour le test et prod propriétés de la connexion. Votre Actualisation de la Connexion macro de marque de l'enregistrement approprié comme active. Puis de créer une fonction, GetConnectionString, qui se lit à la connexion active d'enregistrer et de créer votre chaîne de connexion. Ensuite, le code ci-dessus peut être modifié à cnn.ConnectionString = GetConnectionString. BTW, vous pouvez préférer utiliser une connexion de confiance de sorte que vous pouvez éviter de traiter avec ID d'Utilisateur et le Mot de passe.
Je vous remercie encore. Excellente solution.
Il peut être plus pratique pour stocker l'ensemble de la chaîne de connexion comme un champ dans votre table de connexions. Ensuite, votre GetConnectionString fonction peut juste récupérer la totalité de la chaîne stockée.
Je pensais que je pourrais avoir une table qui est gardé local pour le fichier MDB et, dans ce tableau, j'aurais plusieurs connexions des chaînes de caractères. L'un pour la Production, l'autre pour le Tester et puis je voudrais créer deux macros, "se Connecter à la Production" et "se Connecter à un Test". Chaque macro marquer comme active la connexion en chaîne où il pourrait ensuite être lu par tout le code qui doit établir une connexion.
OriginalL'auteur HansUp