Power Builder - Campos requeridos

 
Vista:
sin imagen de perfil

Campos requeridos

Publicado por Beto (71 intervenciones) el 12/01/2012 15:10:00
Amigos del foro estoy tratando de validar campos de un DW utilizando esta función:

http://www.lawebdelprogramador.com/foros/Power_Builder/628674-Validar_campos_vacios_en_un_datawindow.html

Pero no me valida nada.

Función:

global type f_checkrequired from function_object
end type

forward prototypes
global function integer f_checkrequired (datawindow adw_control)
end prototypes

global function integer f_checkrequired (datawindow adw_control);/////////////////////////////////////////////////////////////////
// /
// This function ensures that no required column in a /
// DataWindow control is empty (contains NULL). It takes /
// one argument: the DataWindow control. /
// /
// Return values: /
// /
// * -1 if validation fails /
// * 1 if required columns are filled in /
// /
/////////////////////////////////////////////////////////////////

integer li_colnbr = 1
long ll_row = 1
string ls_colname, ls_textname

///////////////////////////////////////////////////////////////
// /
// Make sure the last entry in the DataWindow control is /
// accepted before proceeding. /
// /
///////////////////////////////////////////////////////////////

IF adw_control.AcceptText() = -1 THEN

adw_control.SetFocus()
RETURN -1

END IF

///////////////////////////////////////////////////////////////
// /
// Now we can examine the required columns in each row of /
// the DataWindow control. /
// /
// The following function starts at row 1, column 1 in the /
// DW's primary buffer. Then it looks through each row /
// until it finds a required column that is empty. /
// /
///////////////////////////////////////////////////////////////

IF adw_control.FindRequired( primary!, ll_row, li_colnbr, &
ls_colname, true ) < 0 THEN

// If the search can't be done due to some error,
// then quit this script.

RETURN -1

END IF

///////////////////////////////////////////////////////////////
// /
// The preceding function updates the ll_row variable with /
// the number of the first row in which a required column was /
// found empty (or 0 if all rows were OK). Here's a test /
// to see if such a row was found. /
// /
///////////////////////////////////////////////////////////////

IF ll_row <> 0 THEN

// Get the text of that column's label.

ls_textname = ls_colname + "_t.Text"
ls_colname = adw_control.Describe(ls_textname)

// Tell the user which column to fill in.

MessageBox("Falta Valor Requerido","Por favor ingrese un valor para '" &
+ ls_colname +"', Fila " + string (ll_row) + ".", stopsign! )

// Make the problem column current.

adw_control.SetColumn(li_colnbr)
adw_control.ScrollToRow(ll_row)
adw_control.SetFocus()

RETURN -1

END IF

///////////////////////////////////////////////////////////////
// /
// If every column in every row checked out OK... /
// /
///////////////////////////////////////////////////////////////

RETURN 1
end function
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: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Campos requeridos

Publicado por JeinnerH (646 intervenciones) el 12/01/2012 16:10:28
Lo que hace esta función es buscar el primer campo que esté marcado como requerido y que esté nulo, en ese caso, muestra un mensaje.

Pero debe ser llamada en algún momento, directamente, para que valide la información en el DW. Por ejemplo, en el momento donde se presione el botón Salvar, de la ventana.

Para que funcione entonces debes marcar el campo Required en la carpeta de Edit en las propiedades de cada campo.

Ahora bien, la propiedad required también te puede producir que se genere un mensaje en ingles, cuando se va a intentar salvar, si no se ha llamado primero la función de validación que intentes utilizar y quedan campos inválidos.

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
sin imagen de perfil

Campos requeridos

Publicado por Beto (71 intervenciones) el 12/01/2012 18:29:39
Llamo a la funcion con esta linea if f_checkrequired (dw_1) = -1 then return y los campos tienen activa la propiedad Requerid, mis campos son de tipo DDDW, RadioButton y CheckBox, puede ser ese un inconveniente?
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: 37
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

Campos requeridos

Publicado por JeinnerH (646 intervenciones) el 12/01/2012 20:30:37
La función FindRequiredque intentas utilizar te va a regresar el nombre del campo en donde se presenta un valor nulo.

Si el un RadioButton o CheckBox, ya por omisión tienen un valor, no van a estar en nulo, por tanto, los campos pasan la validación. Esto es sólo para campos cuyo valor sea nulo y son requeridos.

Si lo que necesitas es validar la información general del DW, para que contenga valores específicos, entonces debes validar campo por campo de forma manual.

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