REVISIÓN: Heterogéneo combinación entre tablas de Jet 3.x y de Jet 4 devuelve sin registros

Seleccione idioma Seleccione idioma
Id. de artículo: 254130 - 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

Cuando realiza una consulta que combina una tabla en una base de datos de Microsoft Access 2000 (Jet 4.0) con una tabla en una base de datos desde una versión anterior de Access (o Jet), obtendrá cero (0) registros devueltos. Este comportamiento se produce sólo con columnas indizadas de texto (VarChar o Char).

Causa

Los datos almacenados en un índice de campo de texto están diferentes en Microsoft Jet 4.0 que en versiones anteriores del motor de base de datos Jet. Por lo tanto, no las comparaciones.

Solución

Para resolver el problema, siga uno de los siguientes:
  • Quite los índices.
  • Participe en un campo numérico, por ejemplo, una columna de identificador.
  • Importar la tabla de la base de datos de Jet 4.0.
  • Actualización a Microsoft Jet 4.0 SP4.
Nota : el optimizador de consultas ya no realiza una combinación de índices en tablas de formatos de base de datos antiguos.

Estado

Este error se ha corregido.

Más información

Pasos para reproducir este comportamiento

  1. En Microsoft Visual Basic 5.0 o 6.0, cree un nuevo proyecto EXE estándar. Se creará Form1 de manera predeterminada.
  2. En el menú proyecto , seleccione referencias y agregue una referencia a las siguientes bibliotecas de tipos: biblioteca Microsoft ActiveX Data Objects 2.1
    Biblioteca de objetos Microsoft DAO 3.6

    El código siguiente tiene secciones para DAO y ADO. Si no tiene ambos escribir comentario disponibles, de las bibliotecas de la sección que no se aplica.

  3. Agregue un botón de comando y el código siguiente al formulario predeterminado:
    Private Sub Command1_Click()
    Dim SQL As String, dbPath As String
      SQL = "SELECT Cust40.* FROM Customers AS Cust40 INNER JOIN [nwind.mdb].Customers AS Cust3x ON Cust40.CustomerID = Cust3x.CustomerID"
    '  SQL = "SELECT Cust40.* FROM Customers AS Cust40 INNER JOIN [nwind.mdb].Customers AS Cust3x ON Cust40.Phone = Cust3x.Phone"
      dbPath = "C:\Program Files\Microsoft Office\Office\Samples\NorthWind.MDB"
    '
    ' DAO Test
    '
    Dim db As dao.Database, rs As dao.Recordset
      Set db = DBEngine(0).OpenDatabase(dbPath)
      Set rs = db.OpenRecordset(SQL)
      If Not rs.EOF Then rs.MoveLast
      Debug.Print "DAO: There are"; rs.RecordCount; "records."
      rs.Close
      db.Close
    '
    ' ADO Test
    '
    Dim cn As ADODB.Connection, rs2 As ADODB.Recordset
      Set cn = New ADODB.Connection
      cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath
      Set rs2 = New ADODB.Recordset
      rs2.Open SQL, cn, adOpenKeyset, adLockReadOnly, adCmdText
      If Not rs2.EOF Then rs2.MoveLast
      Debug.Print "ADO: There are:"; rs2.RecordCount; "records."
      rs2.Close
      cn.Close
    End Sub
    					
    Nota : puede que necesite ajustar las rutas de acceso para el Neptuno.mdb de Microsoft Jet 4.0 y los archivos de Microsoft Jet 3.x nwind.mdb asignarán a la dbPath y SQL variables.

  4. Ejecute la aplicación y haga clic en el comando botón. Los resultados son: si tiene Microsoft Jet 4.0 SP3 o anterior, recibe cero (0) registros de la combinación.

    Si tiene Microsoft Jet 4.0 SP4 o en tiempo de ejecución, recibirá 91 registros de la combinación.

  5. Si ve cero registros, quite comentario de la segunda asignación a la variable SQL. Esto hace que la combinación se produzca en un campo no indizado.
  6. Vuelva a ejecutar la aplicación y debería ver 91 registros devueltos.
Nota : este problema también se puede reproducir en Microsoft Access 2000 al vincular a una tabla de Access 97 y crear una consulta que une la tabla vinculada con una tabla nativa.

Propiedades

Id. de artículo: 254130 - Última revisión: domingo, 23 de febrero de 2014 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Access 2000 Standard Edition
  • Microsoft OLE DB Provider for Jet 4.0
Palabras clave: 
kbnosurvey kbarchive kbmt kbbug kbfix kbjet KB254130 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): 254130

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