FoxPro/Visual FoxPro - RECONOCER UNA PALABRA QUE SOLO SE DIFERENCIA POR UNA LETRA

 
Vista:

RECONOCER UNA PALABRA QUE SOLO SE DIFERENCIA POR UNA LETRA

Publicado por CESAR (3 intervenciones) el 13/11/2015 22:27:11
hola...si alguien me pudiera ayudar...tengo un combo, en el cual se despliegan unas materias, en el clic programe algo asi:

1
2
3
4
5
6
7
if thisform.combo1.value="matematicas I"
  thisform.text2.value="MAT01"
else
 if thisform.combo1.vaule="matematicas II"
  thisform.text2.value="MAT02"
endif
endif.

El detalle esta que siempre solo me reconoce el dato del primero que le doy, o sea cuando le elijo matematicas II, no me pone el dato de "MAT02" en el text2, siempre me pone el dato de "MAT01". Ya le puse el ALLTRIM para eliminar espacios y nomas no....

Si alguien me pudiera ayudar se lo agradeceria..

Saludos
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

RECONOCER UNA PALABRA QUE SOLO SE DIFERENCIA POR UNA LETRA

Publicado por Mauricio antonio (45 intervenciones) el 13/11/2015 23:01:06
no se si escribiste mal, pero puedes corregirlo
if thisform.combo1.vaule="matematicas II"&&&&& deberia ser value
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: 309
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RECONOCER UNA PALABRA QUE SOLO SE DIFERENCIA POR UNA LETRA

Publicado por SANTIAGO JUAN (551 intervenciones) el 13/11/2015 23:23:57
Me parece que el problema esta en como lo has programado, le dices:

Si el valor 1 = "matematicas I"
entonces valor="mate1"
caso contrario Si el valor 1= "matematicas II"
entonces valor="mate2"

no seria mejor usar una estructura "case"?

do case
case valor 1 = "matematicas I"
valor="mate1"
case valor 1 = "matematicas II"
valor="mate2"
endcase

por otro lado si SET EXACT = OFF siempre en una busqueda te va a encontrar "matematicas I" porque es una cadena que esta contenida en "matematicas II"

si cambias a SET EXACT = ON, entonces te encontrara el valor exacto.

Suerte.
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

RECONOCER UNA PALABRA QUE SOLO SE DIFERENCIA POR UNA LETRA

Publicado por Fidel José (657 intervenciones) el 14/11/2015 15:16:33
Obs1: Si ese código está en el método click del combobox, la referencia es This.Value y no Thisform.combo1.Value
Obs2: Ese código podría llegar a funcionar en casos muy limitados. Sería mejor algo como esto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
*<Combobox.click>
LOCAL ARRAY laMateria(2,2)
LOCAL lnAscan,lcFound
lcFound = ""
 
laMateria[1,1]="matematicas I"
laMateria[1,2]="MAT01"
 
laMateria[2,1]="matematicas II"
laMateria[2,2]="MAT02"
 
lnAscan = ASCAN(laMateria , ALLTRIM(this.Value),1,0,0,7)
IF lnAscan > 0
	lcFound = laMateria[lnAscan + 1]
ENDIF
thisform.text2.Value = lcFound
*</Combobox.click>

Una forma más sencilla y segura de hacer eso es utilizando Addlistitem, con una propiedad del form (cs_combo1) que se utilizará como ControlSource del combobox.
Desde cualquier lugar del formulario, también podrás hacer:
Thisform.cs_Combo1 = "MAT02"
THISFORM.Combo1.refresh && y el combo1 mudará al nuevo valor

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
* Init Combobox
ADDPROPERTY(thisform,"cs_combo1","")    && en cualquier lugar del form tendrás el valor thisform.cs_combo1 (MAT01 / MAT02 / "")
LOCAL i,lcListValue,lcListCode
lcListValue = "(Seleccione Materia),Matemáticas I,Matemáticas II"
lcListCode = " ,MAT01,MAT02"
WITH this
	.BoundColumn=2
	.ControlSource='thisform.cs_combo1'
	FOR i = 1 TO GETWORDCOUNT(m.lcListValue)
		.AddListItem(GETWORDNUM(m.lcListValue,i,CHR(44)),i,1)
		.AddListItem(GETWORDNUM(m.lclistCode,i,CHR(44)),i,2)
	NEXT
	.Requery
	.Refresh
ENDWITH
 
* Click del Combobox
This.Parent.txt_texto1.Value = this.ListItem(this.ListItemId,2)
 
* Supongo acá que el textbox se llama Txt_texto1 y está en el mismo contenedor que el combobox.
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: 62
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

RECONOCER UNA PALABRA QUE SOLO SE DIFERENCIA POR UNA LETRA

Publicado por jose casalino (129 intervenciones) el 16/11/2015 22:30:36
Probaste ponerlo alreves es decir:

1
2
3
4
5
6
7
if thisform.combo1.value="matematicas II"
  thisform.text2.value="MAT02"
else
 if thisform.combo1.value="matematicas I"
  thisform.text2.value="MAT01"
endif
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