Power Builder - Validacion en itemchanged

 
Vista:

Validacion en itemchanged

Publicado por Pablo (35 intervenciones) el 05/10/2007 21:15:21
Gracias por la aclaracion del cambio de contraseña amigo Leopoldo, tengo otra consulta, estoy con un sistema contable y en un itemchanged de carga de libro diario hago la validacion para que en el caso de que la cuenta elegida sea no acentable me arroje un mensaje de advertencia, pero tambien tengo una otra opcion de busqueda que al presionar una tecla me abre una ventana emergente para que pueda buscar la cuenta de forma mas detallada y una vez que el usuario elige esa cuenta hago un CloseWithReturn para que me retorne en la ventana de diario con la cuenta elegida, pero el PROBLEMA es qeu si busco la cuenta de esa forma el itemchanged no me valida si la cuenta elegida es no acentable. Desearia saber si conocen alguna forma o evento que pueda resolver mi problema

GRACIAS Y SALU2 A TODOS!!!!
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

Respuesta...

Publicado por Leopoldo Taylhardat (710 intervenciones) el 06/10/2007 14:47:47
Saludos...

Tu problema es con el evento Itemchanged!.... en este evento en verdad no cambia los datos previamente almacenados, solo activa a la aplicación indicando 'ATENION! HUBO CAMBIOS EN LOS DATOS...!!!!!', los datos en la columna en verdad aparecen NO ALTERADOS! hasta que se relaicen todos los eventos que corresponden con el proceso de cambios...

Para poder validar el valor ingresado, debes usar la variable 'DATA'... es decir cuando tu trascribes EN CUALQUIER COLUMNA!!!, el dato trascrito se almacena (temporalmente) en esa variable (no hay que definirla, es una variable definida por la aplicación!)... debes tomar esa variable para poder validad desde el itemchanged.
Nota: la variable data es tipo string, por lo tanto tienes que convertirla al tipo que necesites manejar...

Ejemplo...
Transcribes en la columna cuenta que es de tipo long...
long ll_cuenta, ll_cuenta_valida

ll_cuenta=long(data)

select nro_cuenta into :ll_cuenta_valida from cuentas where nro_cuenta=:ll_cuenta;

IF ll_cuenta=ll_cuenta_valida THEN
MessageBox('Atención!','Cuenta existe!!!'
ELSE
MessageBox('Atención!','Cuenta No existe!!!'
END IF

espero que te sirva...
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
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Sugerencia adicional

Publicado por Antonio (1271 intervenciones) el 08/10/2007 03:38:09
Hola Pablo:

Quiero entender que cuando haces el CloseWithReturn, recuperas el dato que selecciono y despues lo colocas de esta manera:

SetItem ( datawindow,row,'campo',ls_valor)

por eso no te valida...

Te suguiero lo siguiente:

1) Despues de recuperar los datos y colocarlos en el datawindow con setitem(), agrega el AcceptText(datawindow)

por ejemplo:

SetItem ( datawindow,row,'campo',ls_valor)
AcceptText(datawindow)

2) Antes de colocar el dato en el datawindow con setitem(), haces una validación previa del dato recuperado:

Select from tabla
into: variable
from tabla
where ( tabla.campo =: dato_recuperado ) ;

3) En lugar de abrir una ventana, mejor trabaja haciendo que en el campo donde ingresas la información, sea atraves de un DropDownDw, esto lo puedes hacer entrando al painter del datawindow y entras a las propiedades del campo y seleccoinas la opcion de Edit, ahi selecciona la opcion de DropDownDw en Style Type...

ahor bien, dependiendo de como valides la información es como te resultaran bien las cosas.

Espero te sirva amigo...
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

RE:Sugerencia adicional

Publicado por alberto (73 intervenciones) el 08/10/2007 20:21:31
El AcceptText no tiene tiene ninguna relevancia cuando utilizas el método SetItem.
Si quieres puedes usar el AcceptText luego de un SetText.
SetItem no.
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

RE:Sugerencia adicional

Publicado por Edmundo (2 intervenciones) el 12/09/2008 20:45:02
disculpen qe m meta pero.
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

RE:Sugerencia adicional

Publicado por Edmundo (2 intervenciones) el 12/09/2008 20:50:32
Disculpen que me meta pero tengo un caso similar en el que dependiendo de lo que escriba en el DW me filtra otro Dw que esta en otra ventana, esta de tipo Response! y en esa selecciono un renglon, entonces lo que yo quiero es que lo que yo seleccione me sobreescriba en un campo de el DW desde el cual mande llamar la ventana en el evento ITEMCHANGED, no se que estoy haciendo mal, ya le puse el dato con un dw_1.SetText(dato) y ni asi me lo pone...
El motivo por el que no use un DropDownDW es porque de este campo se filtra el DW de la otra ventana y lo hace con un LIKE cosa que el DDDW no lo hace...
Espero haberme explicado....
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