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

Votre navigateur n’est pas pris en charge

Vous devez mettre à jour votre navigateur pour utiliser le site.

Mettre à jour vers la dernière version d’Internet Explorer

PROBLÈME : ASP renvoie une erreur 'L'opération doit utiliser une requête qui peut être mise à jour'

Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Symptômes
Lorsque vous utilisez des objets ADO (ActiveX Data Objects) avec une page ASP (Active Server Pages), l'erreur commune suivante peut s'afficher :
Erreur '80004005' du fournisseur Microsoft OLE DB pour les pilotes ODBC
[Microsoft][Pilote ODBC pour Microsoft Access 97] L'opération doit utiliser une requête qui peut être mise à jour.
Cause
Cet article explique les quatre causes principales de cette erreur et les solutions de contournement correspondantes. Bien que cet article fasse référence à des bases de données Microsoft Access, les informations fournies ici s'appliquent également à d'autres types de bases de données.
Résolution
Cette erreur s'affiche principalement lorsque votre script tente d'exécuter une MISE À JOUR ou une autre action qui modifie les informations de la base de données. L'erreur se produit parce que les objets ADO ne sont pas en mesure d'écrire dans la base de données pour l'une des raisons suivantes :

  1. La raison plus commune est que le compte Invité Internet (IUSR_MACHINE) qui appartient par défaut au groupe "Tout le monde", n'est pas autorisé en écriture sur le fichier de la base de données (.mdb). Pour corriger ce problème, utilisez l'onglet Sécurité d'Internet Explorer afin d'adapter les propriétés de ce fichier pour que le compte Invité Internet dispose des autorisations appropriées.

    REMARQUE : lors de l'utilisation de bases de données Microsoft Access avec des objets ADO, il est également nécessaire d'autoriser en écriture le répertoire contenant le fichier .mdb pour le compte Invité Internet. C'est pourquoi Jet crée un fichier .ldb permettant de gérer le verrouillage de la base de données. Vous devez également autoriser le dossier "Temp" en lecture/écriture car Jet peut également y créer des fichiers temporaires.
  2. La deuxième cause probable de cette erreur provient de la base de données qui n'a pas été ouverte avec le MODE d'écriture approprié. Si vous effectuez une ouverture (Open) sur l'objet Connection, vous utilisez la propriété Mode pour indiquer les autorisations sur la connexion comme indiqué ci-après :
          SQL = "UPDATE Products Set UnitPrice = 2;"      Set Conn = Server.CreateObject("ADODB.Connection")      Conn.Mode = 3      '3 = adModeReadWrite      Conn.Open "myDSN"      Conn.Execute(SQL)      Conn.Close						
    REMARQUE : par défaut, la propriété Mode est définie avec la valeur 0 (adModeUnknown), ce qui autorise généralement les mises à jour.
  3. Autre cause de cette erreur, il est possible que le paramètre "Lecture seule" soit activé dans la page Options pour ce nom de la source de données dans le Gestionnaire ODBC.
  4. Le dernier problème et sa solution de contournement concernent la source de données SQL. L'erreur peut provenir d'instructions SQL qui bouleversent l'intégrité référentielle de la base de données. Voici quelques exemples de requêtes dont l'exécution échoue le plus souvent :
    • Les groupes les plus simples concernés sont ceux que vous ne pouvez pas modifier : les requêtes d'action d'analyse croisée, directes SQL, d'union ou de mise à jour (ou de création de table) dont la propriété UniqueValue est définie avec la valeur Oui.

    • Une autre cause très classique est lorsque la jointure comprend des tables ODBC liées dont les index ne sont pas uniques. Dans ce cas, il n'existe aucun moyen pour SQL de garantir l'unicité des enregistrements dans une table dont la valeur des champs sera modifiée par la requête.

    • La solution de contournement d'une cause est fiable. Si vous tentez de mettre à jour un champ de jointure du côté "un" d'une requête "un à plusieurs", cette opération échoue à moins que vous n'activiez des mises à jour en cascade. Vous déléguez ainsi l'intégrité référentielle au moteur JET.
Statut
Ce comportement est voulu par la conception même du produit.
Propriétés

ID d'article : 175168 - Dernière mise à jour : 10/04/2004 14:51:00 - Révision : 4.0

  • Microsoft Active Server Pages 4.0
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
  • Microsoft ActiveX Data Objects 2.0
  • Microsoft ActiveX Data Objects 2.1
  • Microsoft ActiveX Data Objects 2.1 Service Pack 2
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.7
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
  • kberrmsg kbdatabase kbprb KB175168
Commentaires
>