FoxPro/Visual FoxPro - identificar un numero entre varios

 
Vista:

identificar un numero entre varios

Publicado por chusqui (1 intervención) el 07/02/2013 09:20:56
buenos días mi consulta es la siguiente.
Tengo un reporte con varios text box y quiero que me imprima un segundo text box en funcion del primero. Ejemplo:
text box 1. Contiene un numero por ejemplo 123456789
Pues quiero que el text box 2, se imprima en el reporte si el cuarto número coincide con un 2 (por ejemplo).
Existe la propiedad PRINT WHEN en el text box, pero no logro hacer que se pueda imprimir dependiendo de un numero en concreto. Consigo que se imprima pero coincidiendo el número completo. No sé si me he explicado bien. ¿Me pueden ayudar?.
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

identificar un numero entre varios

Publicado por Fidel (558 intervenciones) el 07/02/2013 15:29:41
No utilizo Reports. Pero siempre te puedes ayudar con una función de usuario.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
LPrintText2=IIF(Coincide(17846512,4)=2,.T.,.F.)
 
***********************************
FUNCTION COINCIDE(xnNumero,xnLugar)
************************************
IF VARTYPE(xnNumero)#"N" .or. VARTYPE(xnLugar)#"N"
	RETURN 0
ENDIF
lcNumero=LTRIM(STR(xnNumero))
lnLen=LEN(lcNumero)
IF xnLugar>lnLen
	RETURN 0
ENDIF
lcSub=SUBSTR(lcNUmero,xnLugar,1)
RETURN VAL(lcSub)
ENDFUNC
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

identificar un numero entre varios

Publicado por chusqui (10 intervenciones) el 07/02/2013 16:44:08
muchas gracias por la rapidez en la respuesta, pero no he podido aplicarlo a mi text box que tengo en el reporte porque la función COINCIDE no me la reconoce...
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
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

identificar un numero entre varios

Publicado por Fidel (558 intervenciones) el 07/02/2013 19:06:47
La función COINCIDE(), no es una función nativa de Visual Fox. Es una función que escribo yo para tu ver si solucionas tu problema y debes agregarla en tu aplicación.

1) Si usas algún archivo prg agreado a tu proyecto, debes copiar la función en él.

2) Si utilizas un main.prg para lanzar la aplicación, puedes ponerla debajo de lo que tienes escrito en el main.prg.

3) Si no utilizas archivos prg, puedes agregar uno a la aplicación, en la ficha "Code". Agregas un archivo de procedimientos, le pegas la función Coincide y lo guardas con un nombre como MyFunc.prg. (En este archivo de procedimientos puedes pegar todas las FUNCTION y PROCEDURE que necesites).

En el arranque de la aplicación, va:
SET PROCEDURE TO \PROGS\MYFUNC.PRG && (siempre que PROGS sea la carpeta correcta)

Una vez hecho eso, puedes llamarla desde cualquier punto de la aplicación como si fuera una función nativa.

Esto es lo que debes pegar en el archivo de procedimientos MyFunc.prg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
***********************************
FUNCTION COINCIDE(xnNumero,xnLugar)
************************************
IF VARTYPE(xnNumero)#"N" .or. VARTYPE(xnLugar)#"N"
	RETURN 0
ENDIF
lcNumero=LTRIM(STR(xnNumero))
lnLen=LEN(lcNumero)
IF xnLugar>lnLen
	RETURN 0
ENDIF
lcSub=SUBSTR(lcNUmero,xnLugar,1)
RETURN VAL(lcSub)
ENDFUNC
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
sin imagen de perfil

identificar un numero entre varios

Publicado por neo (1604 intervenciones) el 07/02/2013 17:32:47
o tambien si siempre vas a validar el 4 digito, puedes substraer el 4 digito del textbox, ejemplo:

Thisform.text1.value=123256789

thisform.text2.value=substr(thisform.text1.value,4,1)

public mi_digito

mi_digito=thisform.text2.value

ya en el print when del report escribe:
mi_digito=2

ó si el reporte lo mandas llamar desde el formulario, puedes escribir:

thisform.text2.value=2


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

identificar un numero entre varios

Publicado por chusqui (10 intervenciones) el 08/02/2013 13:54:57
muchisimas gracias por la aportación, pero tengo un pequeño poblema. Es un programita al que no tengo acceso, sólo puedo abrir el reporte y tocar cosas de él en modo diseño, pero los text box, los label etc... Necesito algo que pueda hacerlo desde el PRINT WHEN del text box. ¿es posible?.
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