Access - Consulta creando Tabla

 
Vista:

Consulta creando Tabla

Publicado por Antoni Masana (5 intervenciones) el 01/02/2010 13:21:20
Hola a todos.

Tengo una tabla que alimento exportando los datos de un fichero de texto. El inicio del registro es de longitud fija y el resto de longitud variable con un punto y coma como separador y su contenido depende del tipo de registro.

Exporto los datos como campos de longitud fija y la parte variable la guardo en un solo campo.

El problema viene cuando realizo una consulta creando una nueva tabla y quiero fraccionar la parte variable y ponerla en diferentes campos.

En la consulta debería poder poner algo así como:

Trozo(registro, separador, campo)

Pero la cosa no es tan simple. Desde SQL quizás se pueda hacer algo, pero no sé el que ni el cómo.

Se agradecen todos las opiniones.

Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta creando Tabla

Publicado por mi menda (1111 intervenciones) el 01/02/2010 21:02:28
Hola:
¿Quieres decir que el archivo de texto es de longitud fija y delimitado por punto y coma a la vez?. Sí explícas con más detalle como es el archivo de texto, quizás te podría ayudar, aunque trabajar con archivos de texto no es mí fuerte, lo he utilizado en contadas ocasiones, y cosas sencillas.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta creando Tabla

Publicado por Antoni Masana (1 intervención) el 02/02/2010 07:07:10
Quizas con un ejemplo quede mas claro.

Este es parte del fichero de texto que incluyo al access:

12625830358847760210010400000000;1YYEYNNY3 ;P;MAV8.07.08;10.80.1.12
12625830362684420210010400000000;1YYEYNNY3 ;B;MAV8.07.08;10.90.1.35
12625830402530050210010400000000;1YYEYNNY3 ;P;MAV8.07.08;10.60.0.23
126258304375265404
12625830473149310210010400000000;1YYEYNNY3 ;P;MAV8.07.08;172.16.0.7
12625830506047670210010400000000;1YYEYNNY3 ;P;MAV8.07.08;10.80.1.13
|------------------------------|

La parte del registro señalara es fija (El original es mas larga) y el resto es variable en funcion de los dos ultimos digitos de la parte fija ( en el ejemplo 02 y 04)

Aunque padezca mentida a alguien se le ha ocurrido que esto es una buena idea. Pues para pasarlo al acces es más bien una pu...

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta creando Tabla

Publicado por mi menda (1111 intervenciones) el 02/02/2010 20:08:05
Hola:
Pues la cosa no es tan complicada
Suponiendo que la parte fija es de 20 caracteres y deba ir al Campo A, y la parte variable deba ir al Campo B, y el campo que contiene los datos se llame Pu, en la consulta en la fila Campos:
A:Izq([Pu];20)
en otra columna
B:Der([Pu];Longitud([Pu]) -20)

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta creando Tabla

Publicado por Antoni Masana (5 intervenciones) el 03/02/2010 08:23:08
Gracias mi menda.

La cosa esta esta complicada para lo que desea el usuario.

Desea que la parte del mensaje varible importartarlo en un solo campo y en el momento de hacer la consulta lo divida en varios campos.

AAAA;BBBB;CCCCC;DDDD
AA;BBBBBBBB;C;DDD
AAAAA;BBBBBB;CCCCCCCC;DDDDDD

¿Como divido estos datos que estan en un campo MENSAJE en varios campos al hacer la consulta de crear tabla?

. . . .

Lo he solucionado importando el fichero ya formateado con separador de campos en todos ellos, le he puesto la barra al la fecha y los dos puntos a la hora, cosa que no sabe hacer el access al importar.

De todas formas tengo un problema más a la ya larga lista de desavencias entre el access y yo mismo.

Si hago la importación del fichero añadiendo los datos a una tabla que ya existe y como este proceso lo he de repetir cada día lo guardo. Al ejecutar las importaciones guardaras ¿Como le digo que me pida el nombre del fichero? ¿Como puedo evitar que se ejecute mas de una vez con el mismo fichero y duplique datos?

Con el EXCEL podia hacer una macro que hiciese una serie de verificaciones antes de importar, pero ¿y con el ACCESS?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Consulta creando Tabla

Publicado por mi menda (1111 intervenciones) el 03/02/2010 11:05:20
Hola
Me parece lógico lo que has hecho, sí un problema se puede solucionar de raíz, hay es donde hay que solucionarlo.
Una importación guardada, ejecuta lo que tiene guardado,obvio, así que también guarda el fichero que debe de importar, para qué te va ha pedir el nombre del fichero!.
Sí el fichero siempre va estar en el mismo directorio y se va ha llamar igual, importar mediante las importaciones guardadas es muy cómodo, sí no es asi, se puede hacer mediante código:

DoCmd.TransferText acImportDelim, , "NombreTabla", "RutacompletaYnombreArchivo", True

Para más información buscalo en la ayuda de Access

Simplemente en un formulario se puede buscar la ruta del archivo a importar y pasar esa ruta al código.
En cuanto a la duplicidad de datos, puedes crear un índice único en la tabla, con los campos que estimes oportunos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar