Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Information : Message d'erreur «Fonction facultative non implémenté»

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 214459
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.
Résumé
Lorsque vous utilisez ActiveX Data Objects (ADO) pour transmettre des paramètres à une procédure stockée, le message d'erreur suivant peut s'afficher :
Erreur d'exécution '2147217887 (80040e21)' :
[Microsoft][Pilote ODBC SQL Server] Fonctionnalité facultative non implémentée.
Plus d'informations
Cette erreur peut se produire si vous tentez de définir le TYPE d'un paramètre dans la collection de paramètres d'un objet de commande ADODB à un type qui n'est pas pris en charge par le fournisseur de données.

Par exemple, à l'aide de SQL Server 7.0, créer une procédure stockée sur la base de données PUBS :
   CREATE PROCEDURE GetEmployeeInfo (@thedate datetime, @NumEmployees int output)AS        SELECT @NumEmployees =  count(*) FROM EMPLOYEE WHERE hire_date < @thedate   GO				
cette procédure stockée renvoie un paramètre de sortie de type int qui indique le nombre d'employés embauchés avant une date donnée. La date est passée à la procédure stockée en tant que paramètre et le nombre d'employés est passé au programme appelant en tant que paramètre de sortie.

Maintenant créer une application ADO pour utiliser la procédure stockée. L'exemple donné est écrit en Visual Basic.
Private Sub MySubroutine()Dim dbConnection As ADODB.ConnectionDim dbCommand As ADODB.CommandSet dbConnection = New ADODB.ConnectionSet dbCommand = New ADODB.CommandDim DSNNAME As StringDim USERNAME As StringDim PASSWORD As StringDSNNAME = "Pubs"USERNAME = "sa"PASSWORD = ""dbConnection.Open DSNNAME, USERNAME, PASSWORDdbCommand.ActiveConnection = dbConnectionDim TheDate As DateTheDate = NowdbCommand.CommandText = "GetEmployeeInfo"dbCommand.CommandType = adCmdStoredProcdbCommand.Parameters.Append dbCommand.CreateParameter("@thedate", adDBDate, adParamInput, 0, TheDate)dbCommand.Parameters.Append dbCommand.CreateParameter("@NumEmployees", adInteger, adParamOutput, 0)dbCommand.ExecuteDim strTheString As StringstrTheString = "There are " & dbCommand.Parameters("@numemployees") & " employees who were hired before " & TheDateMsgBox strTheString, vbOKOnly, "Demonstration"End Sub				
Lorsque l'exemple de code est exécuté, il donne de cette erreur :
Erreur d'exécution '2147217887 (80040e21)' :
[Microsoft][Pilote ODBC SQL Server] Fonction optionnelle non mis en œuvre.
Cela est dû au fait que SQL Server ne prend pas en charge le type de données adDBDate. Pour corriger ce problème, modifier le type de données du paramètre @ theDate à adDBTimeStamp.

Pour déterminer le nombre, les noms, types et tailles des paramètres nécessaires dans une procédure stockée, utilisez la méthode Parameters.Refresh de l'objet de commande. Vous pouvez appeler cette méthode pendant le développement de votre application pour déterminer la configuration correcte requise pour la procédure stockée, puis supprimez l'appel coûteux à Parameters.Refresh une fois que vous avez collecté les données nécessaires.
base de données

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 214459 - Dernière mise à jour : 08/23/2001 09:52:00 - Révision : 1.0

Microsoft ActiveX Data Objects 2.0, Microsoft ActiveX Data Objects 2.1 Service Pack 2, Microsoft ActiveX Data Objects 2.5, Microsoft ActiveX Data Objects 2.6, Microsoft ActiveX Data Objects 2.7

  • kbmt kbinfo kbstoredproc KB214459 KbMtfr
Commentaires