FoxPro/Visual FoxPro - mensaje de error en combobox

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

mensaje de error en combobox

Publicado por maxi (10 intervenciones) el 11/05/2016 18:32:08
buenas gente yo necesitaria un poco de ayuda por que tengo un combobox que al apretar el boton procesar me tiene que hacer un par de calculos pero en el caso de que no seleccione nada que me tire un mensaje de error
el problema es que sino selecciono nada me hace el calculo como si hubiera elegido la primera opcion


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
If thisform.combo1.Value= " "
=MESSAGEBOX("no selecciono ningun tipo de llamado")
 
endif
 
DO case
 
	CASE thisform.combo1.Value="Local"
	xtip=1
	CASE thisform.combo1.value="DDN"
	xtip=2
	CASE thisform.combo1.Value="DDI"
	xtip=3
OTHERWISE
xtip=4
ENDCASE
 
 
IF xtip=4
	SELECT COUNT(*) AS CANT, SUM(PULNOV) AS CANTPUL,;
SUM(PULNOV*PRETAB) AS IMPORT;
FROM NOVEDADE, ABONADO, TABLAP;
WHERE NOVEDADE.NRONOV=ABONADO.NROABO AND;
NOVEDADE.TARNOV=TABLAP.CODTAB;
INTO CURSOR TMP2
ELSE
SELECT COUNT(*) AS CANT, SUM(PULNOV) AS CANTPUL,;
SUM(PULNOV*PRETAB) AS IMPORT;
FROM NOVEDADE, ABONADO, TABLAP;
WHERE NOVEDADE.NRONOV=ABONADO.NROABO AND;
NOVEDADE.TARNOV=TABLAP.CODTAB AND TARNOV=XTIP;
INTO CURSOR TMP2
ENDIF
	thisform.text1.Visible= .T.
	thisform.text2.Visible= .T.
	thisform.text3.Visible= .T.
	thisform.text1.Value=tmp2.cant
	thisform.text2.value=tmp2.CANTPUL
	thisform.text3.value=tmp2.import
	thisform.Refresh
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

mensaje de error en combobox

Publicado por Eduardo Ureña (19 intervenciones) el 11/05/2016 22:46:17
A ver si entendí.

Si el combobox esá vacío debe sólo dar un mensaje de error y listo.

Si eso es así, yo lo haría con el if

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
If thisform.combo1.Value= " "
=MESSAGEBOX("no selecciono ningun tipo de llamado")
 
else
 
DO case
 
	CASE thisform.combo1.Value="Local"
	xtip=1
	CASE thisform.combo1.value="DDN"
	xtip=2
	CASE thisform.combo1.Value="DDI"
	xtip=3
OTHERWISE
xtip=4
ENDCASE
 
 
IF xtip=4
	SELECT COUNT(*) AS CANT, SUM(PULNOV) AS CANTPUL,;
SUM(PULNOV*PRETAB) AS IMPORT;
FROM NOVEDADE, ABONADO, TABLAP;
WHERE NOVEDADE.NRONOV=ABONADO.NROABO AND;
NOVEDADE.TARNOV=TABLAP.CODTAB;
INTO CURSOR TMP2
ELSE
SELECT COUNT(*) AS CANT, SUM(PULNOV) AS CANTPUL,;
SUM(PULNOV*PRETAB) AS IMPORT;
FROM NOVEDADE, ABONADO, TABLAP;
WHERE NOVEDADE.NRONOV=ABONADO.NROABO AND;
NOVEDADE.TARNOV=TABLAP.CODTAB AND TARNOV=XTIP;
INTO CURSOR TMP2
ENDIF
	thisform.text1.Visible= .T.
	thisform.text2.Visible= .T.
	thisform.text3.Visible= .T.
	thisform.text1.Value=tmp2.cant
	thisform.text2.value=tmp2.CANTPUL
	thisform.text3.value=tmp2.import
	thisform.Refresh
endif
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

mensaje de error en combobox

Publicado por Fidel José (657 intervenciones) el 11/05/2016 23:26:14
Lo que es importante que veas es que no pones una forma de atajar el flujo.
Las alternativas son varias:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
*1)
If thisform.combo1.Value= " "
	=MESSAGEBOX("no selecciono ningun tipo de llamado")
	RETURN
ENDIF
 
*2)
If thisform.combo1.Value= " "
	=MESSAGEBOX("no selecciono ningun tipo de llamado")
ELSE
	* Acá va el resto de procedimiento
 
ENDIF
 
 
*3) Esta me gusta porque es más fácil de leer y de adaptar a un control de errores TRY/CATCH/ENDTRY
 
LOCAL lcCmbValor,xTip,lnTally
lcCmbValor = TRIM(thisform.combo1.Value)
DO CASE
 	CASE EMPTY(m.lcCmbValor)
 		xTip = null
 
	CASE m.lcCmbValor = "Local"
		xtip = 1
 
	CASE m.lcCmbValor = "DDN"
		xtip = 2
 
	CASE m.lcCmbValor = "DDI"
		xtip = 3
 
	OTHERWISE
		xtip = 4
ENDCASE
 
IF ISNULL(xtip)
	MESSAGEBOX("no selecciono ningun tipo de llamado")
ELSE
	IF xtip=4
		SELECT COUNT(*) AS CANT, SUM(PULNOV) AS CANTPUL,;
			SUM(PULNOV*PRETAB) AS IMPORT;
			FROM NOVEDADE, ABONADO, TABLAP;
			WHERE NOVEDADE.NRONOV=ABONADO.NROABO AND;
			NOVEDADE.TARNOV=TABLAP.CODTAB;
			INTO CURSOR TMP2
		lnTally = _tally
	ELSE
 
		SELECT COUNT(*) AS CANT, SUM(PULNOV) AS CANTPUL,;
			SUM(PULNOV*PRETAB) AS IMPORT;
			FROM NOVEDADE, ABONADO, TABLAP;
			WHERE NOVEDADE.NRONOV=ABONADO.NROABO AND;
			NOVEDADE.TARNOV=TABLAP.CODTAB AND TARNOV=XTIP;
			INTO CURSOR TMP2
		lnTally = _tally
	ENDIF
ENDIF
IF !EMPTY(m.lnTally)
	WITH thisform
		.text1.Visible= .T.
		.text2.Visible= .T.
		.text3.Visible= .T.
		.text1.Value=tmp2.cant
		.text2.value=tmp2.CANTPUL
		.text3.value=tmp2.import
	ENDWITH
ENDIF

Nota final: He omitido este Thisform.Refresh porque en general, desde VFP6 en adelante, no es necesario ni aconsejable.
1) Si no tienes controles liados por ControlSource (se ve que trabajas asignado por Value), el Refresh no hará nada, o si hay muchos controles, un rápido flash del formulario
2) Si trabajas con controles liados por ControlSource, crea un método en el formulario y ataca el Refresh de cada control que lo necesite.
En algunos casos, resulta necesario poner un flag como parámetro para evitar el refresh de algunos objetos y permitir el de otros.
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

mensaje de error en combobox

Publicado por neo (1604 intervenciones) el 12/05/2016 20:27:52
Saludos Max!

podrías utilizar la propiedad listindex del combo para saber si el usuario seleccionó del combo o no. (siguiendo el segundo ejemplo de Fidel....

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
If thisform.combo1.Listindex= 0
 
	=MESSAGEBOX("no selecciono ningun tipo de llamado")
 
ELSE
 
xtip=Thisform.combo1.ListIndex
 
 
IF xtip=4
 
	SELECT COUNT(*) AS CANT, SUM(PULNOV) AS CANTPUL,;
 
SUM(PULNOV*PRETAB) AS IMPORT;
 
FROM NOVEDADE, ABONADO, TABLAP;
 
WHERE NOVEDADE.NRONOV=ABONADO.NROABO AND;
 
NOVEDADE.TARNOV=TABLAP.CODTAB;
 
INTO CURSOR TMP2
 
ELSE
 
SELECT COUNT(*) AS CANT, SUM(PULNOV) AS CANTPUL,;
 
SUM(PULNOV*PRETAB) AS IMPORT;
 
FROM NOVEDADE, ABONADO, TABLAP;
 
WHERE NOVEDADE.NRONOV=ABONADO.NROABO AND;
 
NOVEDADE.TARNOV=TABLAP.CODTAB AND TARNOV=XTIP;
 
INTO CURSOR TMP2
 
ENDIF
 
	thisform.text1.Visible= .T.
 
	thisform.text2.Visible= .T.
 
	thisform.text3.Visible= .T.
 
	thisform.text1.Value=tmp2.cant
 
	thisform.text2.value=tmp2.CANTPUL
 
	thisform.text3.value=tmp2.import
 
	thisform.Refresh
endif


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

mensaje de error en combobox

Publicado por victor arujo (3 intervenciones) el 13/05/2016 02:01:21
soy nuevo en visual foxpro 9.0 necesito ayuda una profesora me esta pidiendo que haga un programa donde solo pueda introducir las letras de las vocales y si introduzco cualquier otra letra o numero que me muestre un mensaje que diga "erro o letra no permitida" me serviria mucho tu ayuda lo mas pronto posible gracias
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