|
Responder
|
Página 12> |
| Autor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Erick Gamer
Asiduo
Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Tema: Extraer texto de campoEnviado: 17/Septiembre/2019 a las 20:15 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Saludos una vez mas,
Tengo un campo descripciones como la siguiente imagen, de la cual requiero extraer en otra columna parte de ese texto. Los campos mostrados son solo aquellos en los que quiero aplicar la funcion, tengo parte de la funcion con Like, IIF y Mid pero me falta completar la funcion para extraer la información deseada. Extraer: IIf([Descripciones] Like "*GAGE*",Mid([Descripciones],16,6),"") Los primeros nueve registros los extraje con la funcion arriba mencionada, porque la longitud de ellos es constante pero el resto de los registros tienen variantes al principio de la cadena. Hay alguna forma de extraer los textos requeridos. NOTA: Requiero extraer los textos resaltados en color rojo. ![]() Erick Gamer
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Aprendiz de todos, maestro de nadie.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
emiliove
Administrador
Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5704 |
Enviado: 17/Septiembre/2019 a las 21:22 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Hola Erick Puedes usar las funciones de texto para obtener lo que quieres, por ejemplo con InStr puedes sacar en que posición comienza GAGE y sabiendo eso puedes buscar el siguiente espacio en blanco también con InStr y una vez que tienes ambos resultados con Mid obtienes el resultado, teniéndolo a una parte de ellos le quieres quitar GAGE, pero eso te lo voy a dejarte a ti que lo intentes solo te diré con con IIf vas bien. Saludos.
Editado por emiliove - 17/Septiembre/2019 a las 21:23 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Erick Gamer
Asiduo
Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 17/Septiembre/2019 a las 23:15 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Creo ahi va emiliove:
Extraer: IIf([Descripciones] Like "*GAGE*",Mid([Descripciones],InStr(11,[Descripciones],"GAGE")+4)) ![]() Me estoy comiendo el GAGE en los primeros seis registros como lo muestra la imagen. Y como corto el texto marcado en rojo a la derecha, asumo que un Right? Erick Gamer
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Aprendiz de todos, maestro de nadie.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 17/Septiembre/2019 a las 23:39 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
A mi me parece que no es tan sencillo.
Yo he optado por partir la cadena en busca del fragmento que contenga un - Esto me funciona (lo he tratado como si estuviera en una tabla):
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Erick Gamer
Asiduo
Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 17/Septiembre/2019 a las 23:59 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Gracias Xavi por el aporte,
Trate de comentar el codigo con los elementos que entiendo favor de corregirme si estoy mal.
Otra cosa no me corrio la funcion me marco error comentado en el codigo:
Erick Gamer |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Aprendiz de todos, maestro de nadie.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
emiliove
Administrador
Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5704 |
Enviado: 18/Septiembre/2019 a las 00:17 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Con consultas Lo voy a hacer separado para que veas: tenemos la tabla 1
Y sacamos con InStr los dos datos que requerimos el donde inicia GAGE y el del espacio después de los números, después los usamos en Mid y listo SELECT Tabla1.Id, Tabla1.Nombre, InStr([Nombre],"GAGE") AS otro, InStr([otro]+5,[Nombre]," ") AS otro1, Mid([Nombre],[otro],[otro1]-[otro]) AS Obtener, IIf(Len([Obtener])>8,Right([Obtener],Len([obtener])-5),[obtener]) AS Expr1 FROM Tabla1; Obtenemos:
Saludos. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 18/Septiembre/2019 a las 00:26 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Emilio: el quid de la cuestion es que no siempre la palabra GAGE debe ser extraida (o eso entiendo yo del primer post)
Erick Si te marca error es porque tienes un registro dónde el campo Descripciones es nulo. Cambia la línea por esta: arrParts = Split(Nz(rst!Descripciones, ""), " ") rst!Extraer = arrParts(i) Al recorrer el array en busca de un elemento que contenga el caracter "-" y encontrarlo, simplemente almacena ese valor en el campo Extraer de la tabla (he asumido que en la tabla tenemos un campo Descripciones y otro Extraer) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
emiliove
Administrador
Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5704 |
Enviado: 18/Septiembre/2019 a las 00:34 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Hola Xavi En mi ejemplo solo el registro 8 y 9 se extrae el GAGE. como lo quiere Erick Saludos.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 18/Septiembre/2019 a las 00:41 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Sorry! lo lei mal
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
emiliove
Administrador
Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5704 |
Enviado: 18/Septiembre/2019 a las 00:48 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Pero tienes razón, lo vi mal, aparentemente todos comienzan después de GAGE con una G y los que son con numero si va la palabra GAGE, si así es correcto yo revisaría si es numero y actuaria en consecuencia. Edito: Algo así: SELECT Tabla1.Id, Tabla1.Nombre, InStr([Nombre],"GAGE") AS otro, InStr([otro]+5,[Nombre]," ") AS otro1, Mid([Nombre],[otro],[otro1]-[otro]) AS Obtener, IIf(Len([Obtener])>8,Right([Obtener],Len([obtener])-5),[obtener]) AS Expr1, IsNumeric(Mid([obtener],6,1)) AS esnumero, IIf(([esnumero])=0,Right([Obtener],Len([obtener])-5),[obtener]) AS Expr2 FROM Tabla1;
Saludos.
Editado por emiliove - 18/Septiembre/2019 a las 01:14 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Unido: 06/Mayo/2005 Localización: En la dehesa Estado: en línea Puntos: 14428 |
Enviado: 18/Septiembre/2019 a las 09:00 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Yo optaría por otro camino.
- memorizo el literal completo: Xs = Literal - elimino el literal de inicio que no quiero: Xs = replace(xs, "MANDATORY GAGE ", "") Xs = replace(xs, "OPTIONAL INSPECTION GAGE ", "") Xs = replace(xs, "OPTIONAL INSPECTION ", "") importante el blanco final de la cadena a eliminar y hacer los cambios en este orden - nos quedamos con la primera palabra del literal que nos queda: Resultado = split(Xs, " ") (0) Ojo escrito todo ello al vuelo, si se hace con un recordset se puede dejar tal cual, si es con una consulta habría que crear una función Editado por Mihura - 18/Septiembre/2019 a las 09:01 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Erick Gamer
Asiduo
Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 18/Septiembre/2019 a las 16:13 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
He probado las aportaciones publicadas (Xavi, emiliove) y funcionan de maravilla, salvo el codigo de Mihura que no lo he podido adaptar estoy metiendole en un RecordSet obteniendo el siguiente error:
Erick Gamer
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Aprendiz de todos, maestro de nadie.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
emiliove
Administrador
Unido: 16/Junio/2009 Localización: Mexico Estado: Sin conexión Puntos: 5704 |
Enviado: 18/Septiembre/2019 a las 16:54 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Como que te falta hacer todo ya tienes el recordset te vas al primer registro y tienes que tener un campo para rellenar dentro del bucle y guardar el Resultado en él, actualizar la tabla, ir al siguiente registro, etc.... Saludos.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador
Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14926 |
Enviado: 18/Septiembre/2019 a las 17:08 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Con todo respeto el código de Mihura lo has metido con calzador en un procedimiento que no veo yo muy fino...
Consejo (de buen rollo): analiza cada una de las lineas de código que te hemos dado (en cualquiera de las opciones) para entender que hace cada una de ellas. De esa forma verás que lo que haces en tu "mezclado" no tiene coherencia. Un saludo
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Erick Gamer
Asiduo
Unido: 08/Mayo/2016 Localización: Mexico Estado: Sin conexión Puntos: 387 |
Enviado: 18/Septiembre/2019 a las 20:24 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Una mas tomando la idea de Mihura:
rst!Extraer = Split(Xs, " ")(0), me esta devolviendo null y me lanza este error: Error9, SubScript out of range La ayuda de access menciona que "Usted declaró una matriz pero no especificó el número de elementos." Ha hecho referencia a un miembro de la colección inexistente. Intente usar la construcción For Each ... Next en lugar de especificar elementos de índice. Erick Gamer
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Aprendiz de todos, maestro de nadie.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Responder
|
Página 12> |
|
Tweet
|
| Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |