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

Traductions disponibles Traductions disponibles
Numéro d'article: 214459 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

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.Connection
Dim dbCommand As ADODB.Command

Set dbConnection = New ADODB.Connection
Set dbCommand = New ADODB.Command

Dim DSNNAME As String
Dim USERNAME As String
Dim PASSWORD As String

DSNNAME = "Pubs"
USERNAME = "sa"
PASSWORD = ""

dbConnection.Open DSNNAME, USERNAME, PASSWORD
dbCommand.ActiveConnection = dbConnection

Dim TheDate As Date
TheDate = Now

dbCommand.CommandText = "GetEmployeeInfo"
dbCommand.CommandType = adCmdStoredProc
dbCommand.Parameters.Append dbCommand.CreateParameter("@thedate", adDBDate, adParamInput, 0, TheDate)
dbCommand.Parameters.Append dbCommand.CreateParameter("@NumEmployees", adInteger, adParamOutput, 0)
dbCommand.Execute

Dim strTheString As String
strTheString = "There are " & dbCommand.Parameters("@numemployees") & " employees who were hired before " & TheDate
MsgBox 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.

Propriétés

Numéro d'article: 214459 - Dernière mise à jour: jeudi 23 août 2001 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbmt kbinfo kbstoredproc KB214459 KbMtfr
Traduction automatique
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
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.
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.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com