Importar archivo de texto a BD Access

Deseo importar/exportar (los dos) aunque no al mismo tiempo un archivo de texto ".txt", el cual esta separado por comas(,), y anexarlos a dos tablas una tabla tiene los campos (consecutivo, id, valor, dirección) y la segunda tabla tiene los campos (identificación, nombres, apellidos) que tengo en una BD de access. Pero en la primer tabla se debe cumplir

1, La últma línea es un código de control que lleva la cantidad de registros y un valor que se genera de la sumatoria de todos los valores ASCII del archivo, exceptuando la ultima línea (no se importa y me gustaría poder validar que la información recibida es correcta, sobre todo la parte de la suma de los valores ASCII. Todos)

2. El primer campo del archivo de texto siempre es consecutiv y empieza siempre por 1; pero al momento de guardarlo en la BD deseo que ese consecutivo sea igual al ultimo de la tabla de la BD +1. Osea que si llevo 15 registros en la tabla de la base de datos y voy a ingresar 5 más debería ir del 16 al 20.

3. Si algún campo de texto por casualidad es mayor al tamaño del campo de la tabla que de manera automática se recorte al valor máximo del campo

3. Si al momento de ingresar un ID ya existe que "salte" y continué la importación y los mismo para la tabla donde están los datos de la persona.

Como podría lograr esto.

1 Respuesta

Respuesta
1

Ya leí el articulo en cuesti´n pero siguen mis dudas. Eso es para cargar un archivo "sin llevar un control" sobre el mismo. Y lo que deseo es poder controlar la información, por eso lo de leer la ultima línea que es el código de control, que cree el consecutivo dependiendo de la tabla principal y el recorte del tamaño del campo

Ya veo que es otra cosa lo que buscabas e ignoro como hacerlo.

Si veo algo relacionado te lo enviaré. Saludos >> Jacinto

Buscando un poco he encontrado otro ejemplo de comparativa de Importación, que quiza te sea útil.

http://www.mvp-access.es/emilio/Access/Descargas.asp 

Es de Fecha >> 01/14 y su titulo es:

Una comparativa de distintos métodos para Importar Archivos de Texto a Access.

(Ejemplo: 216) Access 2002 (XP) o superior

Además en esa misma Web encontrarás otros ejemplos de Importar_Exportar Texto. Un aludo >> Jacinto

Ok después de mucho ir probando cosas he logrado hacer esto:

1. He creado una tabla "tabla1" con 60 campos numerados del f1 al f60

2. He creado una consulta de actualización donde hago los ajustes excepto NO SE COMO LOGRARLO el de incrementar el consecutivo de "tabla1", pero trayéndome el ultimo consecutivo de la tabla "principal"

3, he creado una tabla de datos anexado para pasar la información de "tabla1" a "principal", PERO me toca modificar manualmente el consecutivo. ¿Cómo lo hago?

Ahora bien he "encerrado" o que he hecho dentro de una sola consulta que me haga todo así queda la consulta:

insert into principal ( consecutivo, prinf2, prinf3, prinf4, prinf5, prinf6, prinf7, prinf8, prinf9, prinf10, prinf11, prinf12, prinf13, prinf14, prinf15, prinf16, prinf17, prinf18, prin19, prin20, prin21, prin22, prin23, prin24, prin25, prin26, prin27, prin28, prin29, prin30, prin31, prin32, prin33, prin34, prin35, prin36, prin37, prin38, prin39, prin40, prin41, prin42, prin43, prin44, prin45, prin46, prin47, prin48, prin49, prin50, prin51, prin52, prin53 )
select nz(dmax("consecutivo","principal"),0)+1 as f1a, left([f2],20) as f2a, cdate([f3]) as f3a, hour(format(left([f4],2)/24)) & ":" & format(right([f4],2)) as f4a, left([f5],80) as f5a, left([f6],8) as f6a, left([f7],30) as f7a, left([f8],6) as f8a, left([f9],8) as f9a, txttipoveh([f10]) as f10a, left([f11],1) as f11a, iif(isnull([f12]),"1",iif("]f12]"="","1",[f12])) as f12a, iif(isnull([f13]),"1",iif([f13]="","1",[f13])) as f13a, iif(isnull([f14]),"2",iif([f14]="","2",[f14])) as f14a, left([f15],15) as f15a, txttipodoc([f16]) as f16a, left([f24],14) as f24a, left([f25],12) as f25a, left([f26],8) as f26a, left([f27],10) as f27a, left([f28],1) as f28a, left([f29],16) as f29a, left([f30],8) as f30a, left([f31],8) as f31a, txttipodoc([f32]) as f32a, left([f33],50) as f33a, left([f34],30) as f34a, left([f35],15) as f35a, left([f36],10) as f36a, left([f37],10) as f37a, left([f38],50) as f38a, left([f39],1) as f39a, left([f40],1) as f40a, left([f41],1) as f41a, left([f42],30) as f42a, left([f43],30) as f43a, left([f44],10) as f44a, left([f45],6) as f45a, left([f46],15) as f46a, left([f47],15) as f47a, left([f48],50) as f48a, left([f49],40) as f49a, left([f50],15) as f50a, left([f51],8) as f51a, left([f52],8) as f52a, left([f53],8) as f53a, left([f54],1) as f54a, left([f55],1) as f55a, left([f56],5) as f56a, left([f57],8) as f57a, left([f58],1) as f58a, left([f59],1) as f59a, left([f60],10) as f60a
from tabla1
where (((left([f15],15))<>""));

Pero como digo no me sirve el autonumérico

Veamos: Supongo que el Consecutivo que tienes en Principal es un Atonumérico.

En ese caso no necesitas tener ningún consecutivo en Tabla1, ni en la Consulta

Ejecuta la consulta que ya tienes pero quitandole:

Dentro del: INSERT INTO Principal(Consecutivo, prinf2 el Campo Consecutivoy la coma.

Dentro del : SELECT Nz(Dmax("Consecutivo","Principal"),0)+1 as f1a, left([f2],20) as f2a, ....... lo que te señalo en Negrita cursiva.

El Campo Consecutivo de Principal se te generará solo, ¿si es Atonumérico y si no lo es >> Que te impide hacerlo?

Si es que necesitas un orden de transferencia de datos, lo citas en la consulta. Ya me contarás. Saludos >> Jacinto

Jacinto en cuanto el autonumérico es un falso autonumérico que se genera y por eso el código dentro de la consulta, y es el que no me genera no se como hacerlo, creía que como esta en la consulta funcionaba pero no.

Por antigüedad de la pregunta y dado que sin ver tu BD, para adecuar el código se me hace bastante dificil solucionar éste tema, te ofrezco dos alternativas.

1.- Que cuelgues tu BD en un enlace donde yo pueda acceder a ella y me lo cites aquí.

2.- Que me la envíes a [email protected]

Doy por sentado que si tienes datos personales en ella los cambiarás dejando los que tu creas pero inventados. Mis saludos >> Jacinto

OK, acabo de enviarte la BD al correo junto con algunos archivos de texto para las pruebas

Carlos: Recibida. La miro y te comento. Saludos >> Jacinto

¡Gracias!, me ha sido de mucha ayuda tus comentarios y aportes a la solución de problema (s) que tengo, me has ayudado dilucidando muchas inquietudes

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas