CORRECTIF : ADO supprime des erreurs lors de l'extraction globale en Nonvariant Datatypes

Traductions disponibles Traductions disponibles
Numéro d'article: 274423 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lors de l'extraction de valeurs de l'ensemble de lignes dans les types de données nonvariant, ActiveX Data Objects (ADO) peuvent supprimer les erreurs liées à l'état du jeu d'enregistrements, telles que les notifications que l'enregistrement est verrouillé par un autre utilisateur.

Ce problème se produit dans Microsoft Data Access Components (MDAC) version 2.50.4403.12 (Microsoft Windows 2000/MDAC 2.5 RTM) et 2.51.5303.5 (Windows 2000/MDAC 2.5 SP1). Ce problème ne se produit pas dans la version MDAC 2.60.6526.3 (MDAC 2.6 RTM).

Cause

Un chemin d'accès du code légèrement différent est prise selon si l'application est l'extraction dans les types de données variants. L'utilisation de variantes est encapsulée dans un objet de contexte interne qui permet de renvoyer des informations d'erreur. Nonvariants n'ont pas de ce wrapper de contexte et ne retournent pas d'informations sur l'erreur.

Résolution

Pour résoudre ce problème, procurez-vous le dernier service pack Microsoft Data Access Components 2.5. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
293312Procédure d'information : Pour obtenir le dernier MDAC 2.5 Service Pack
La version anglaise de cette dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. La date et l'heure de création de ces fichiers est exprimées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, il est converti en heure locale. Pour connaître le décalage entre l'heure UTC et l'heure locale, utilisez l'onglet fuseau horaire dans l'outil date et heure du Panneau de configuration.
   Date       Version        Size             File name
   ----------------------------------------------------------
   8/29/2000  2.51.5629.0     20,480 bytes    Msader15.dll
   8/29/2000  2.51.5629.0    487,696 bytes    Msado15.dll
   8/29/2000  2.51.5629.0    172,304 bytes    Msadomd.dll
   8/29/2000  2.51.5629.0     57,616 bytes    Msador15.dll
   8/29/2000  2.51.5629.0    184,592 bytes    Msadox.dll
   8/29/2000  2.51.5629.0     57,616 bytes    Msadrh15.dll
   8/29/2000  2.51.5629.0     94,480 bytes    Msjro.dll
				

SOLUTION DE CONTOURNEMENT

Il n'existe aucune solution de contournement pour ce problème.

Statut

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés au début de cet article. Ce problème a été corrigé dans Microsoft Data Access Components 2.5 Service Pack 2.

Plus d'informations

Procédure pour reproduire le problème

  1. Copiez le code suivant dans un projet Visual Basic :

    RemarqueVous devez modifier l'UID <username>valeur et le PWD = valeur < mot de passe fort > pour les valeurs correctes avant d'exécuter ce code. Assurez-vous que UID possède les autorisations appropriées effectuer cette opération sur la base de données.
    Dim cn As ADODB.Connection, cnOtherUser As ADODB.Connection
    Dim rs As ADODB.Recordset, rsOtherUser As ADODB.Recordset
    Dim strConn As String, strSQL As String
    Dim varData As Variant, intData As Integer
    
    strConn = "Provider=MSDASQL;Driver={SQL Server};Server=YourServer;Database=Northwind;UID=<user name>;PWD=<strong password>;"
    strSQL = "SELECT * FROM Customers"
    
    Set cnOtherUser = New ADODB.Connection
    cnOtherUser.Open strConn
    Set rsOtherUser = New ADODB.Recordset
    rsOtherUser.Open strSQL, cnOtherUser, adOpenKeyset, adLockPessimistic, adCmdText
    rsOtherUser.MoveFirst
    
    Set cn = New ADODB.Connection
    cn.Open strConn
    cn.CommandTimeout = 10
    Set rs = New ADODB.Recordset
    rs.Open strSQL, cn, adOpenKeyset, adLockPessimistic, adCmdText
    If MsgBox("Use Variant?", vbYesNo) = vbYes Then
        On Error Resume Next
        varData = rs(0)
        If Err.Number <> 0 Then
            MsgBox Err.Description
            Err.Clear
            cn.Errors.Clear
        Else
            MsgBox "No error!"
        End If
        On Error GoTo 0
    Else
        On Error Resume Next
        intData = rs(0)
        If Err.Number <> 0 Then
            MsgBox Err.Description
            Err.Clear
            cn.Errors.Clear
        Else
            MsgBox "No error!"
        End If
        On Error GoTo 0
    End If
    rs.Close
    cn.Close
    
    rsOtherUser.Close
    cnOtherUser.Close
    					
  2. Ajouter une référence à Microsoft ActiveX Data Objects 2.5 Library.
  3. Exécutez le code, puis sélectionnez Oui lorsque vous êtes invité à utiliser une valeur de type Variant. Notez qu'un message d'erreur «Délai d'attente expiré» est renvoyée, indiquant que les enregistrements ne pourraient pas être extraites dans le laps de temps spécifié.
  4. Exécutez à nouveau le code et cette fois choisissez non lorsque vous êtes invité à utiliser une valeur de type Variant. Cette fois une erreur est renvoyée pour indiquer qu'il n'existe aucun enregistrement en cours mais rien n'indique que vous a dépassé le délai de votre.

Références

Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
247757CORRECTIF: Fuite de connexion à l'aide de la commande paramétrée dans ADO
264442CORRECTIF : Jeu d'enregistrements ADO perd la propriété de filtre lorsqu'en ordre en cours
264701CORRECTIF : Passage ADO Recordset ByRef réinitialise les informations sur les erreurs

Propriétés

Numéro d'article: 274423 - Dernière mise à jour: dimanche 23 février 2014 - Version: 2.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
Mots-clés : 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbado250fix kbbug kbfix kbmdac250fix kbqfe KB274423 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: 274423
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.

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