BOGUE: «erreur de syntaxe dans INSERT INTO...» sur Recordset.Update ADO

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

Symptômes

Lorsque vous appelez la méthode AddNew, puis appelez la méthode Update d'un objet Recordset, l'erreur suivante est renvoyée :
Fournisseur Microsoft OLE DB pour pilotes ODBC erreur '80040e21'
[Microsoft][Pilote ODBC Microsoft Access 97] Erreur de syntaxe dans INSERT INTO instruction.
À l'aide de la version4.00.4202.00 de pilote ODBC Microsoft Access ou une version ultérieure, le message d'erreur est :
Erreur d'exécution '-2147467259(80004005) ' :
[Microsoft][Pilote ODBC Microsoft Access]Erreur de syntaxe dans l'instruction INSERT INTO.

Cause

Cette erreur se produit si les conditions suivantes sont remplies :
  • Le CursorType est adOpenForwardOnly (0).
  • La CursorLocation est adUseServer.
  • Un champ en cours de mise à jour a un espace dans le nom du champ.
  • Vous utilisez le pilote Microsoft Access ODBC.
Appeler les méthodes AddNew et Update, sur un curseur côté serveur, Forward-Only, est une opération qui n'est pas valide. ActiveX Data Objects (ADO) compense cette faille de code en générant une instruction INSERT pour effectuer l'opération. Lorsque ADO génère l'instruction INSERT, il ne délimitez pas les noms de champ. Par conséquent, les noms de champ contenant un espace génèrent une erreur de syntaxe.

Par exemple, une instruction INSERT correcte serait comme suit :
   INSERT INTO Table ([field with space]) Values(value)
				
ADO génère le code suivant :
   INSERT INTO Table (field with space) Values(value)
				

Résolution

Voici plusieurs résolutions possibles :
  • N'utilisez pas d'espaces dans les noms de champs dans votre base de données.
  • Utilisez une CursorLocation d'adUseClient (3).
  • N'utilisez pas un CursorType d'adOpenForwardOnly (0), tels qu'adOpenKeyset (1), adOpenDynamic (2) ou adOpenStatic (3).
  • Effectuer l'opération en générant votre propre instruction INSERT, avec des délimiteurs sur les noms de champ au lieu d'utiliser les méthodes AddNew et Update.
  • Utilisez le fournisseur OLE DB pour Jet version 3.51 ou 4.0 au lieu du fournisseur Microsoft OLE DB pour ODBC et le pilote ODBC Microsoft Access.

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés au début de cet article.

Propriétés

Numéro d'article: 189220 - Dernière mise à jour: mercredi 2 mars 2005 - Version: 2.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Data Access Components 1.5
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
  • Pilote ODBC pour Access 3.5 de Microsoft
  • Pilote ODBC pour Access 4.0 de Microsoft
Mots-clés : 
kbmt kbbug kbdatabase kbdriver kbjet KB189220 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: 189220
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.

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