REVISIÓN: Error en # eliminado al insertar registros con la clave principal CHAR

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): 264766
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Cuando se inserta un nuevo registro en una tabla ODBC vinculada que tiene un campo de texto de longitud fija (CHAR) como clave principal, # eliminado aparece en todos los campos en el nuevo registro.

Nota Si a continuación, cierre y vuelva a abrir la tabla vinculada, del registro recién insertado aparece y está correctamente insertado.
Causa
Muchos controladores ODBC agrega espacios para (o "rellenar") un campo CHAR cuando el número de caracteres que se insertan es menor que la longitud máxima del campo. Microsoft Jet 4.0 incorrectamente volver lee el valor insertado, relleno y lo compara con el valor original, unpadded. Como los dos valores son diferentes, Jet informa a Microsoft Access que no se encuentra el registro recién insertado.
Solución
Para resolver este problema, instale el service pack más reciente de Jet 4.0. Para obtener información adicional, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
239114Cómo: Obtener el Service Pack más reciente para el motor de base de datos Microsoft Jet 4.0
Solución
Utilice un campo texto de longitud variable (VARCHAR) como clave principal para la tabla.
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 ha corregido en Service Pack 6 (SP6) de Jet 4.0.
Más información

Pasos para reproducir este comportamiento

Puede reproducir este problema mediante la vinculación a una base de datos DB2, Oracle o Microsoft SQL Server. El problema no parece producirse a menos que tiene al menos 60 o más registros en la tabla vinculada.

Si examina una traza ODBC realizada durante la operación de inserción, verá que Jet inserta reselects correctamente el registro, y que no se producen errores en la traza. El problema se produce después Jet recupera el registro y intenta comparar el valor de clave reselected con el valor escrito por el usuario.

Para reproducir este comportamiento, siga estos pasos:
  1. Ejecute el siguiente código de Microsoft Visual Basic para generar la tabla de prueba y registros:
    Sub GenerateTestTable()Dim conn As ObjectDim i As Long, sql as String   Set conn = CreateObject("adodb.connection")   ' Change connection string to point to your SQL Server if needed.   conn.Open "Provider=SQLOLEDB;Server=(Local);Database=Pubs;UID=sa;PWD=;"   On Error Resume Next   conn.Execute "drop table tmp_chartest"   On Error GoTo 0   sql = "create table tmp_chartest(f1 char(5) primary key, f2 char(10))"   conn.Execute sql    For i = 1 To 70        sql = "insert into tmp_chartest (f1,f2) values ('"        sql = sql & Format(i, "000") & "','XXXXXXXXXX')"        conn.Execute sql    Next i    conn.Close    Set conn = NothingEnd Sub					
  2. Inicie Microsoft Access 2000 y vincular a la tabla tmp_chartest que se creó en el paso anterior.
  3. Abra la tabla recién vinculada y desplazarse al último registro de la tabla.
  4. Agregar un nuevo registro con un campo F1 = 071 y campo F2 = XXXXXXXXXX.
  5. Ficha fuera del registro, y verá # eliminado aparece en todos los campos.
eliminado

Propiedades

Id. de artículo: 264766 - Última revisión: 02/23/2014 22:14:23 - Revisión: 3.1

Microsoft Access 2000 Service Pack 1, Microsoft Access 2002 Standard Edition

  • kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 KbMtes
Comentarios