Como separar entre caracteres en access?

Tengo una BD access a la que me llegan registros desde un correo, con datos de longitud variable, delimitados cada uno por un ;|; y queria saber como dividir cada uno de los datos en campos distintos, he intentado separarlos por funciones de agregado en consulta, pero no se como hacerlo correctamente, la tabla a la que llegan los registros solo tiene un campo en el que se recibe todo junto así:

Federico;|;García;|;Paredes;|;sdfsa;|;.l´ñlk;|;ññlkñlk;|;ñlkñ´lkñ;|;ñlkñ´lk;|;ñlkñ´lk;|;ñlkñ´lk;|;ñlkñ´lk;|;ñlk´ñlk;|;ñlkñ´lkñ;|;ñjñlkjlk;|;lñkjlñkjlkñ;|;lkjlkjñl;|;lklkñjñlk;|;lkjñlkjlñj;|;9999;|;jjjj;|;9999;|;jjjj;|;9999;|;jjjj;|;9999;|;jjj;|;9999;|;jjjj9;|;999j;|;999j;|;999j;|;999j;|;999j;|;99999j;|;jjj9;|;jjjj;|;9999;|;jjjjj;|;99999;|;jjjj;|;9999;|;jjjj;|;9999;|;jjjj;|;9999;|;jjjj9;|;9999;|;jjj;|;9999;|;jjjj;|;9999;|;jjjj;|;99999;|;jjjj;|;9999;|;jjjj;|;9999;|;jjjj;|;9999;|;jjj;|;jjjj;|;9999;|;jjjj;|;9999;|;jjjj;|;9999;|;jjjj;|;999;|;jjj999;|;66667;|;777;|;7777;|;6666;|;TTT;|;TYYY;|;TTTT;|;YYY;|;YYY;|;YTTT;|;YYY;|;TT;|;TT;|;;|;6;|;6;|;66;|;T;|;T;|;T6;|;6T;|;6T;|;6T;|;6T;|;6;|;6T;|;6;|;6T6;|;TT6;|;6T;|;6T;|;6T;|;T6;|;6T;|;6T;|;6T;|;6T;|;6T6;|;6;|;T6T;|;6T;|;6T;|;6T;|;T;|;T;|;TT;|;T6;|;6T;|;gGgGghHhH;|;;|;G;|;G;|;;|;;|;;|;HH;|;G;|;G;|;G;|;G;|;G;|;G;|;G;|;G;|;;|;H;|;HG;|;GH;|;GHHG;|;HG;|;HG;|;HG;|;HG;|;HGHG;|;GH;|;HG;|;HG;|;HG;|;HG;|;HG;|;HGGYYUY;|;

Tengo otra tabla en la que tengo que incluir las posiciones de cada uno de estos campos separados.

1 Respuesta

Respuesta
1

Para hacer eso vas a tener que usar código sí o sí, creando una matriz de tipo texto y usando la función Split para separar tu cadena e ir rellenando la matriz. Luego traspasas cada elemento de la matriz al campo correspondiente.

En "abstracto", la idea es esta:

Dim miMatriz() As String

Dim miCadena As String

Dim rst As DAO.Recordset

Dim i As Integer

miCadena=DLookup("Campo","Tabla")  'Suponiendo que sólo tengas el campo una vez en la tabla al importarlo

miMatriz=Split(miCadena,"|")

'coges la tabla de destino

Set rst=CurrentDb.OpenRecordset("Tabla2")

rst.AddNew

For i=LBound(miMatriz) to UBound(miMatriz) 'Recorres la matriz

rst(i)=miMatriz(i)  'Añades los elementos a los campos en el mismo orden

Next i

rst.Update

rst.close

Set rst=Nothing

Este código lo puedes poner en un botón en un formulario.

Genail, pero al llegar a la línea rst(i)=miMatriz(i) devuelve error 3421 en tiempo de ejecución, ¿a qué puede ser debido?

que con las prisas te puse mal el código (pensé que el delimitador era simplemente | y no el ;|;..

Te adjunto un mini-ejemplo con el código correcto, y modificado ligeramente por si tus campos de destino no son todos de texto (como supuse en un principio)

http://www.filebig.net/files/HKg9kkFr74 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas