Autor |
Mensaje |
Miembro
 Constante
  
|
#1 Publicado: 26 Mar 2012 02:53
Hola a todos.
Necesito saber si es posible extraer un carácter concreto de un campo de texto. Es decir tendría un campo "Texto_prueba" con un valor "ABCD" y quiero extraer -con un campo calculado o como sea posible- el 2º carácter empezando por la derecha, en este caso sería la "C".
Texto_pueba = ABCD (extraer 2º por la derecha) Carácter = C
Texto_prueba = 123ABC (extraer 3º por la derecha) Carácter = A
He leido las funciones left, right y middle, pero me obliga a extraer una cadena entera y yo solo quiero extraer 1 carácter.
Agradecería vuestra ayuda, tengo experiencia con Filemaker, pero me he atascado con esto.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Siempre agradecido por vuestra inestimable ayuda.
Mac OSX High Sierra - FM Pro Advanced 16
|
Moderador
Adicto
   
|
#2 Publicado: 26 Mar 2012 07:41 - Editado por: JotaEme
La función Middle tiene 3 parámetros: - Texto - Inicio - Número de caracteres Si el último parámetro es 1 sólo te extraerá un carácter. Por ejemplo: Middle("123ABC";4;1) te extrae 1 carácter empezando en la posición 4 del texto (o campo en su caso) especificado, osea, la "A".
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 8 y Filemaker 11
|
Miembro
 Constante
  
|
#3 Publicado: 26 Mar 2012 13:14
Gracias por tu respuesta, JotaEme, pero creo que no os di toda la información.
Debí deciros que es una prueba para deletrear números, por lo que necesito que busque los caracteres desde la derecha. Ya sé que hay otros hilos en el foro con bases ya hechas para deletrearlos, pero para mí esto es un ejercicio.
Tengo un campo "Texto_prueba" con un número "1234". Como el lenguaje y las matemáticas no suelen corresponderse con exactitud, los números del 1 al 99 los tengo en una tabla con su correspondencia en texto. Para extraer las dos primeras cifras de la derecha (decenas y unidades) he usado el cálculo:
"Right ( Texto_prueba ; 2 )" cuyo resultado es, obviamente, "34"
¿Cual sería el cálculo para conseguir la tercera cifra y la cuarta -o más, si hubiera-? (el 2 y el 1) Hay que tener en cuenta que los número que escribamos en el campo "Texto_prueba" no van a tener una cantidad fija de cifras y no quiero rellenar esas cifras con ceros para que siempre tengan la misma longitud. Vamos, que lo que quiero saber es si hay un cálculo para decirle a Filemaker: "Extrae el 3º carácter empezando por la derecha"
Debe ser una simpleza, pero no doy con la tecla.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Siempre agradecido por vuestra inestimable ayuda.
Mac OSX High Sierra - FM Pro Advanced 16
|
Administrador

|
#4 Publicado: 26 Mar 2012 13:19 - Editado por: jcu
Utiliza la función Middle( texto ; posición inicial ; posición final )
Para las funciones y pasos de guión
Base de conocimiento de Filemaker
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Todo lo que sueñas, se puede diseñar.
FM 11 * VV 6 * PHP 5 * MySQL * Win 8.
|
Miembro
 Constante
  
|
#5 Publicado: 26 Mar 2012 14:44
Hola, jcu.
No lo veo claro. En el último mensaje ponía el ejemplo: "Texto_prueba" = "1234"
y tengo 3 campos calculado que son: D+U (decenas y Unidades) con la fórmula "Right ( Texto_prueba ; 2 )" El resultado es 34 C (centenas) con la fórmula "Middle ( Texto_prueba ; 2 ; 1 )" el resultado es 2 M (millares) con la fórmula "Middle ( Texto_prueba ; 1 ; 1 )" el resultado es 1
pero si el campo "Texto_prueba" = "12345" ya la hemos liado porque cuenta desde la izquierda, por lo tanto, sólo el cálculo right será correcto "45", el resto de campos calculados pierden una posición y las cifras que dan como resultado son erróneas.
¿Podrías escribir la fórmula para esos dos casos?
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Siempre agradecido por vuestra inestimable ayuda.
Mac OSX High Sierra - FM Pro Advanced 16
|
Moderador
Adicto
   
|
#6 Publicado: 26 Mar 2012 16:02 - Editado por: JotaEme
No se si te valdrá pero puedes probar con: - Centenas--> If(length(Texto_prueba)>2;Middle(Texto_prueba;leng th(Texto_prueba) -2;1);"") - Millares--> If(length(Texto_prueba)>3;Middle(Texto_prueba;leng th(Texto_prueba) -3;1);"")
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 8 y Filemaker 11
|
Administrador

|
#7 Publicado: 26 Mar 2012 16:04
Supongamos que tengo un campo total_caracteres que es igual al número de caracteres que componen el campo Texto_prueba
Este campo D+U (decenas y Unidades) con la fórmula "Right ( Texto_prueba ; 2 )" no varía, da igual el número de caracteres.
Este otro C (centenas) con la fórmula "Middle ( Texto_prueba ; 2 ; 1 )" tampoco depende del número de caracteres.
Este M (millares) sí cambia
if ( total_caracteres =4 ; Middle ( Texto_prueba ; 1 ; 1 ) ; if ( total_caracteres =5 ; Middle ( Texto_prueba ; 1 ; 2 ) ; "Otro"))
Si tienes más caracteres puedes ampliar la fórmula.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Todo lo que sueñas, se puede diseñar.
FM 11 * VV 6 * PHP 5 * MySQL * Win 8.
|
Miembro
 Constante
  
|
#8 Publicado: 26 Mar 2012 19:07
Bueno, pues lo hemos solucionado todo y nada.
Me explico. Yo ya había solucionado el problema usando las funciones "Ceilling", "Floor" e "Int" (cada una de ellas es una solución por sí mísma). Tanto JotaEme como jcu han encontrado caminos distintos para solucionar el mismo problema. Eso es lo maravilloso de Filemaker. Me han encantado vuestras soluciones y estoy deseando llegar a casa para probarlas, pero ya intuyo que van a funcionar bien. La de JotaEme me cuesta un poquito más entenderla.
Yo quería saber si había una función que diera esa orden directamente, pero veo que hay que ir con rodeos para atacar este problema. Mi solución era dividir las centenas por cien y redondear, los millares por mil y redondear, y así sucesivamente.
Os voy a adjuntar mis archivos por si queréis echarles un vistazo.
Muchísimas gracias, he aprendido más este fin de semana que en todos los años que llevo haciendo el indio con FM. Magnífico foro.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Siempre agradecido por vuestra inestimable ayuda.
Mac OSX High Sierra - FM Pro Advanced 16
|
Miembro
 Constante
  
|
#9 Publicado: 26 Mar 2012 19:12
Perdón le di a enviar sin terminar.
Para los que descarguen los archivos, verán que hay otros campos al final para escribir como palabras los campos (cifras) que extrajimos. Obviamente, está sin terminar, falta alguna tabla más, pero los subo para que se pueda ver la definición de campos.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Siempre agradecido por vuestra inestimable ayuda.
Mac OSX High Sierra - FM Pro Advanced 16
|
Miembro
 Constante
  
|
#10 Publicado: 26 Mar 2012 19:50
Hola, jcu.
He llegado a un hilo del foro, del año 2003, en el que el usuario toti colgaba un archivo para convertir numero a texto. Allí daba la dirección de su página para descargarlo y chequearlo. Lamentablemente, la página ya no está activa. ¿Por uno de esto casuales no tendrás una copia de ese archivo? Es que he visto que tú lo descargaste, y me gustaría ver cómo lo hizo toti.
Gracias.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Siempre agradecido por vuestra inestimable ayuda.
Mac OSX High Sierra - FM Pro Advanced 16
|
Administrador

|
#11 Publicado: 26 Mar 2012 20:45
En las descargas, sección trucos, tienes varios que lo hacen. Creo que el de Toti lo modifiqué y es uno de ellos, pero no estoy seguro.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Todo lo que sueñas, se puede diseñar.
FM 11 * VV 6 * PHP 5 * MySQL * Win 8.
|