Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Desorden en registros BD Access

Estas en el tema de Desorden en registros BD Access en el foro de Bases de Datos General en Foros del Web. Saludos. Mi problema es que al insertar registros en una BD Access 97, estos se encuentran desordenados al realizar actualizaciones, y necesito saber qué herramientas ...
  #1 (permalink)  
Antiguo 13/12/2011, 10:29
Avatar de cchaparro  
Fecha de Ingreso: febrero-2009
Ubicación: Medellín
Mensajes: 80
Antigüedad: 15 años, 1 mes
Puntos: 2
Desorden en registros BD Access

Saludos.

Mi problema es que al insertar registros en una BD Access 97, estos se encuentran desordenados al realizar actualizaciones, y necesito saber qué herramientas se pueden aplicar para eliminar posibles residuos, indexaciones, todo eso. Ya hice la reparación/compactación pero no sirvió.

Les explico un poco más:
Es un programa en Visual Basic 6 del que no tengo el código fuente. Tiene una tabla "terceros" de clientes, con sus direcciones, teléfonos, etc. Esta tabla obtiene los datos de un archivo de Excel exportado desde otra aplicación. Yo convierto Excel a formato .csv; por código PHP, elimino todos los registros de "terceros", ubico cada campo del archivo .csv en archivos de texto independientes (campo1.txt, campo2.txt, etc); leo estos archivos y voy insertando cada campo uno por uno en Access.

Todo funciona perfectamente y los registros se insertan bien, pero por algún motivo al utilizar el programa hace esto:
Alberto
Alicia
Alonso
Barrera
Beto
Carlos
César
Cueto
Alejo
Alfonso
...............

en lugar de ponerlos alfabéticamente, los "desordena/trastoca"; la BD original sin tocar, tiene los datos perfectamente ordenados; pero cuando aplico la actualización sucede esto.

Hace varios años, me pasó algo así en un programa que hice en Visual Basic 6, pero lo resolví por el fuente, los ordené bajo código y no tuve más problemas; sin embargo, los registros se insertaban como "desordenados", y siempre observé que Access los insertaba "como le da la gana", y no los mantenía en un orden siquiera de inserción; por ejemplo, insertaba un nuevo registro, el 88, y resulta que me aparecía como el 54, por ahí donde Access quería.

Pienso que en esta ocasión está sucediendo tal vez lo mismo, y no se qué hacer; yo elimino siempre todos los registros primero, luego inserto uno por uno, y no mantiene siquiera el orden de inserción, pues con eso me bastaría. La aplicación como digo la BD anterior lo tenía ordenado todo. Si tuviera acceso al código fuente ya lo habría solucionado, pero no es posible esta opción.

En PHP utilizo algo así:
-----------------------------------------------------------------------------------------------------
// Se define la cadena de conexión
$dsn = "DRIVER={Microsoft Access Driver (*.mdb)};
DBQ=$db";
// Se realiza la conexón con los datos especificados anteriormente
$conn = odbc_connect( $dsn, '', '' );
if (!$conn) { exit( "Error al conectar: " . $conn);
}

// Se eliminan todos los registros de lista de terceros
$sql = "DELETE * FROM terceros";
// Se ejecuta la consulta
$rs = odbc_exec( $conn, $sql );


$sql = "INSERT INTO terceros (idtercero,nombres,contacto,tipo,direccion) VALUES ('$campo1','$campo2','$campo3','$campo4','$campo5' )";
$rs = odbc_exec( $conn, $sql );


// Se cierra la conexión
odbc_close( $conn );
-----------------------------------------------------------------------------------------------------

Bueno, ojalá alguien pueda ayudarme con esto; básicamente es la ordenación en Access lo que necesito, saber cómo elimino residuo o cosas similares para dejarla digamos optimizada; probé consultas SQL de optimización, incluso en lugar de DELETE quise utilizar TRUNCATE pero Access no me deja optimizar desde SQL vía PHP. El problema creo está en Access, en la tabla.

Si alguien conoce bien las BD Access, ojalá pueda ayudarme con alguna herramienta de optimización o limpieza para ensayar.

Gracias a todos y un cordial saludo.
  #2 (permalink)  
Antiguo 14/12/2011, 21:48
Avatar de cchaparro  
Fecha de Ingreso: febrero-2009
Ubicación: Medellín
Mensajes: 80
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Desorden en registros BD Access

Saludos.

Encontré la solución, la pongo por si alguien la necesitara.

1.- Abro la BD en Access 2003, pero sin convertirla.
2.- Hago la actualización vía PHP.
3.- Entro en Access 2003 por Herramientas-Utilidades-Compactar/Reparar BD.
.... y listo, todo funciona en orden correctamente.

El asunto estaba en tener abierta la BD todo el tiempo mientras se realizaba el proceso de actualización; y al final, compactarla y repararla pero con Access 2003, con Access 97 no funcionaba.

Gracias de todas formas y espero esto le sirva a otras personas.

Etiquetas: access, bd, desorden, php, registros, sql, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:53.