Power Builder - Problema con ItemChanged

 
Vista:
Imágen de perfil de Leonardo Daniel A.
Val: 821
Oro
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Problema con ItemChanged

Publicado por Leonardo Daniel A. (481 intervenciones) el 07/06/2017 06:33:06
Hola tengo un DW con el evento ItemChanged donde debo validar 2 datos capturados por separado, al capturar el codigo debo buscar ese codigo y llenar los datos del DW, si no existe envia un mensaje diciendo que no existe ese codigo y mando limpiar algunas columnas del DW, esto funciona perfecto cuando el dato capturado es numerico, pero cuando el dato es String no lo hace correctamente.....


si no uso return no hace el proceso, si uso 1 o 2 busca y muestra, si no encuentra marca que no lo encontro, y marca error de formato de dato en la columna.. y limpia las columnas....... o busca y encuentra, busca y no funciona, busca algo que no existe y marca que no existe ( ya no marca error de formato de datos ), pero tampoco limpia los datos


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
accepttext( )
choose case dwo.name
	case "no_camion"
		long ll_camion
		ll_camion = long( data )
		this.ib_modificado = true
		wf_datos_camion( ll_camion )  // se encarga de buscar y llenar o limpiar
		return 2
	case "num_economico"
		string ls_numeco
		ls_numeco = data
		this.ib_modificado = true
		wf_datos_caja( ls_numeco )    // se encarga de buscar y llenar o limpiar
		return 1
end choose
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

Problema con ItemChanged

Publicado por unnick (8 intervenciones) el 05/07/2017 12:45:12
Lo que te ocurre por lo que pones, es que independientemente de lo que hace cada una de las funciones "wf_datos_camion" y "wf_datos_caja", siempre estas saliendo con return 2 para "no_camion" y con return 1 para "num_economico".

En el itemchanged siempre se debe salir con Return 0 para que se acepte el valor y continue el proceso normal.

Return 1 lo que hace es rechazar el valor que ha recibido y no permite cambiar el foco a otro campo de la dw.
Return 2 lo que hace es rechazar el valor que ha recibido y permite cambiar el foco a otro campo de la dw.

Lo que tienes que hacer es detectar como termina cada una de las funciones, bien o mal y en función de eso poner "return 0" si todo esta bien, o return 1 o retrun 2 en función de que quieras rechazar el valor introducido y cambiar o no cambiar de campo en la dw.

Yo haría lo siguiente:

li_error = wf_datos_camion( ll_camion ) // la función en cuestión debe devolver un valor 0, 1, 2 dependiendo de como termine
return li_error

De esta forma la función te devuelve el resultado de si es correcto (0) o si existe un problema ( 1, 2) y te funcionara siempre.
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