Access - Extraer datos de un campo

 
Vista:

Extraer datos de un campo

Publicado por Dani (10 intervenciones) el 28/03/2007 12:22:00
A ver si alguién puede ayudarme:

Necesito extraer los datos de un campo de la tabla en varios campos. El campo es de tipo cadena y está separado por el delimitador "/". Ahí va un ejemplo:

ANTONIO ROJAS MORENO//PILAR BARQUERO/LUCENA,11/29200/ANTEQUERA/MALAGA

¿Hay alguna función que haga esto? He probado con las funciones derecha e izq, pero tengo el problema que el nº de caracteres por campo no es uniforme.

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:Extraer datos de un campo

Publicado por The Emulator (146 intervenciones) el 28/03/2007 15:32:53
Hola

Puedes usar la funcion InStr la cual devuelve la posicion en la que se encuentre un caracter(s) dentro de una cadena.

Ejemplo InStr("Hola","o") al ejecutar esa funcion nos devuelve 2 ya que le estamos diciendo busque en la cadena Hola la vocal o y como esta se encuentra en la posicion 2 eso seria lo que nos devuelve.

Ahora hay que usar sa funcion junto con las funciones de manejo de caracteres Left, Right y Mid con las cuales podemos tomar un numero determinado de caracteres de una cadena.

Asi que aqui hay un ejemplo de como tomar el nombre de la persona con la informacion que dejaste

SELECT Left("ANTONIO ROJAS MORENO//PILAR BARQUERO/LUCENA,11/29200/ANTEQUERA/MALAGA",InStr(1,"ANTONIO ROJAS MORENO//PILAR BARQUERO/LUCENA,11/29200/ANTEQUERA/MALAGA","/")-1 )AS Expr1;


Ten encuenta que aqui solo seria remplazar esa cadena por el nombre del campo y listo cuando la ejecutes tendras el nombe de todas las personas faltaria que hicieras algo parecido para los demas campos a separar cosa que si lo vas a hacer por SQL te vas a dar en la cabeza si lo haces asi ya que seria algo complejo y enredado :-)

Una forma mas facil seria mediante VBA tomar el valor del campo y usas las funciones que te dije antes pero ya en este puedes y descartando los datos que ya has tomado para dejar disponible el proximo campo a tomar y seria algo asi

Dim strCadena As String
Dim strNombre As String
Dim strOtroDato As String
Dim intPosSeparador As Integer

strCadena =RS("TuCampo")

'Buscaos el primer separador para tomar el primer nombre
intPosSeparador =InStr(1,strCadena ,"/")
'Tomamos el primer nombre
strNombre=Left(strCadena , intPosSeparador -1)
'Quitamos de la cadena el primer dato para dejar disponible el siguiente
strCadena=Mid(strCadena,1,intPosSeparador )

'Buscaos el primer separador para tomar el segundo nombre
intPosSeparador =InStr(1,strCadena ,"/")
'Tomamos el primer nombre
strOtroDato=Left(strCadena , intPosSeparador -1)
strCadena=Mid(strCadena,1,intPosSeparador )

'Aqui se repetiria el codigo para tomar los diferentes campos


En el codigo que te di anteriormente tomamos el primer nombre de la cadena y luego tomamos el segundo dato que en este caso no se que es ya que con la informacion que diste de ejemplo supuestamente es un campo vacio.

ANTONIO ROJAS MORENO
VACIO

AQUI HAY UN PROBLEMA Y ES QUE DICES QUE EL SEPARADOR DE CAMPOS ES / pero mirando en la cadena que colocaste de ejemplo hay una fecha 11/29200 y eso tiene un inconveniente ya que como vez el separador es / cada valor de la fecha se tomaria como un campo
11
29
2000

Asi que tienes que buscar la forma de cambiar el formato de la fecha para que sea asi 11-29-2000 o usar otro separador de campos ya sea el tabulador o Punto y como.

Espero que almenos esto te de una idea.

NOTA:
El codigo que te coloque no esta probado por que lo escribi diectamente aqui asi que puede haber algun probema de sintaxis :-)

Saludos
http://www.theemulator.tk
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
Imágen de perfil de Enrique Ramírez
Val: 37
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Extraer datos de un campo

Publicado por Enrique Ramírez (629 intervenciones) el 28/03/2007 16:46:32
Si no has solucionado tu problema escribeme y te enviío un zip con un ejemplo que te hice a ti y a una pregunta del dia de ayer que es el mismo problema que el tuyo....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:Extraer datos de un campo

Publicado por Dani (10 intervenciones) el 29/03/2007 12:52:42
Gracias Enrique.

Mandamé cuando puedas el zip.

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:Extraer datos de un campo

Publicado por Dani (10 intervenciones) el 29/03/2007 09:16:30
En primer lugar gracias por tu ayuda.

Voy a probar el código y ya te diré. Con referencia a la pregunta sobre la fecha, en realidad no es una fecha, sino una dirección y el código postal:
LUCENA,11 (sería la dirección) / 29200 (es el CP.).

De nuevo gracias.

Un saludo.
dani
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:Extraer datos de un campo

Publicado por Carlos lara (1 intervención) el 21/07/2007 19:35:07
Hola.... tengo un ejercicio parecido....

es sólo que debo extrear tres números de un campo, así:

Cada estudiante tiene un código de 10 dígitos (ejmplo: 0864567897), todos empiezan por el 0, y deseo extraer los tres primeros (086 en el ejemplo), ya que esos son iguales al código de otra tabla, la de la carrera que estudia dicha persona, y me sería útil poder extraer esos tres dígitos para sacar toda la información del programa en el cual está matriculado el estudiante...

De antemano le agradezco mucho su colaboración.....
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