REVISIÓN: ADO suprime errores al obtener en Datatypes Nonvariant

Seleccione idioma Seleccione idioma
Id. de artículo: 274423 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Síntomas

Al obtener los valores de conjunto de filas en nonvariant tipos de datos, ActiveX Data Objects (ADO) puede suprimir los errores relacionados con el estado del conjunto de registros, como las notificaciones que el registro está bloqueado por otro usuario.

Este problema se produce en Microsoft Data Access Components (MDAC) versión 2.50.4403.12 (Microsoft Windows 2000 y MDAC 2.5 RTM) y 2.51.5303.5 (Windows 2000 y MDAC 2.5 SP1). Este problema no ocurre en versión de MDAC 2.60.6526.3 (RTM de MDAC 2.6).

Causa

Se toma una ruta de código ligeramente diferente dependiendo de si la aplicación está obteniendo en tipos de datos variant. El uso de variantes se ajusta en un objeto de contexto interno que tiene la capacidad para devolver información de error. Nonvariants no tienen este contenedor de contexto y no devuelven información de error.

Solución

Para resolver este problema, obtenga el service pack más reciente para Microsoft Data Access Components 2.5. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
293312INFO: Cómo obtener la más reciente de MDAC 2.5 Service Pack
La versión en inglés de este tiene los atributos de archivo (o posterior) que figuran en la tabla siguiente. Las fechas y horas de estos archivos aparecen en la hora universal coordinada (UTC). La información de los archivos se convertirá a la hora local cuando la vea. Para averiguar la diferencia entre hora UTC y la hora local, utilice la ficha zona horaria de la herramienta fecha y hora en el panel de control.
   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
				

SOLUCIÓN

No se conoce ningún remedio para este problema.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "La información de este artículo se refiere a:" de este artículo. Este problema se corrigió por primera vez en Microsoft Data Access Components 2.5 Service Pack 2.

Más información

Pasos para reproducir este comportamiento

  1. Copie el código siguiente en un proyecto de Visual Basic:

    Nota <username>Debe cambiar el UID <nombredeusuario> valor y el PWD = valor de < contraseña > a los valores correctos antes de ejecutar este código. Asegúrese de que UID tiene los permisos adecuados realizar esta operación en la base de datos.
    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. Agregar una referencia a ActiveX Data Objects 2.5 Library.
  3. Ejecutar el código y elija cuando se le pregunte si desea utilizar un valor de tipo Variant. Tenga en cuenta que se devuelve un mensaje de error "Tiempo de espera agotado", que indica que los registros no podrían ser recuperados en la cantidad de tiempo especificada.
  4. Vuelva a ejecutar el código y esta vez elija no cuando se le pedirá que utilice un valor de tipo Variant. Este error se devuelve que indica que no hay ningún registro actual, pero no hay ninguna indicación que ha excedido el tiempo de espera.

Referencias

Para obtener información adicional, haga clic en los números de artículo correspondientes para verlos en Microsoft Knowledge Base:
247757REVISIÓN: Pérdida de conexión mediante el comando parametrizado en ADO
264442REVISIÓN: Recordset ADO pierde propiedades de filtro cuando se calcula en proceso
264701REVISIÓN: Pasar ByRef de Recordset de ADO restablece la información de error

Propiedades

Id. de artículo: 274423 - Última revisión: lunes, 24 de febrero de 2014 - Versión: 2.2
La información de este artículo se refiere a:
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.5 Service Pack 1
Palabras clave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbado250fix kbbug kbfix kbmdac250fix kbqfe KB274423 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 274423

Enviar comentarios

 

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