Power Builder - Preguntar si un datawindow tiene campos vacios.

 
Vista:

Preguntar si un datawindow tiene campos vacios.

Publicado por jorge (1 intervención) el 28/02/2006 05:03:03
Hola, tengo un datawindow tipo freeform, como puedo hacer para saber si hay campos en blanco del datawindow, y si es que hay campos en blancos que no se pueda hacer un update al datawindow.
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

RE:Preguntar si un datawindow tiene campos vacios.

Publicado por Jesús (18 intervenciones) el 28/02/2006 09:37:55
Tienes varias alternativas. La que yo te recomiendo es ésta:

En cada campo obligatorio de la datawindow, debes marcar las propiedades "Required" y "Empty String is NULL" de la solapa "Edit" (en las propiedades de la columna).

Si haces esto, para averiguar si hay algún campo obligatorio que tiene un valor nulo puedes utilizar la función FindRequired. Consulta la ayuda para obtener más información de la función FindRequired y sus parámetros.

Por ejemplo, en el script que valida los datos, puedes poner algo parecido a esto:

string ls_nombre_columna
integer li_num_columna
long ll_fila

// Comprobar si hay algún valor nulo en un campo obligatorio
if dw_ejemplo.FindRequired(Primary!, ll_fila, li_num_columna, ls_nombre_columna, FALSE) > 0 then
// Si se ha encontrado un nulo, mostrar el mensaje
if ll_fila > 0 then
MessageBox('Error', 'El valor del campo ' + ls_nombre_columna + 'es obligatorio', StopSign!)
return -1
end if
else
// Actualizar
end if
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

RE:Preguntar si un datawindow tiene campos vacios.

Publicado por Antonio (1271 intervenciones) el 28/02/2006 13:38:30
Hola Jorge:

Nuestro buen amigo Jesús tiene raz+on, en cada campo debes poner cual será obligatorio..

Ademas, en cada campo que será obligatorio debes ponerle un texto en la propiedad de "tag", éste texto servirá para mostrarle al usuario el campo que requiere información.

Hecho esto, te doy un código para validar cada campo del datawindow:

Crea un boton que diga "Guardar", en éste botón crea un evento llamado "ue_valida" y dentro del evento "ue_valida" pon éste código que validará cada campo (uno por uno):

long row = 1
integer colnbr = 0
string colname,ls_msge,ls_campo
is_conti = 'S' // esta variable es de instancia para validar si hay campo vacios
AcceptText ( dw_tu_datawindow )

Do While row <> 0
colnbr++
if FindRequired( dw_tu_datawindow,Primary!, &
row, colnbr, &
colname, false ) < 0 then exit

if row <> 0 then
ls_campo = Describe(dw_tu_datawindow+'.tag')
ls_msge = ls_msge+'~n'+'* '+ls_campo
is_conti = 'N'
end if
loop

if is_conti = 'N' then MessageBox('Campos requeridos ...',ls_msge,StopSign! )

luego en el evento "Clicked" del botón pon éste código:

if is_conti = 'S' then
if MessageBox('Confirmar ...','¿ Deseas guardar los datos ?',Question!,YesNo!,1 ) = 1 then
udpate( dw_tu_datawindow)
end if
end if

SetFocus ( dw_tu_datawindow )

Nota:

Recuerda poner en el evento "itemerror" de dw_tu_datawindow éste código:

string ls_campo
ls_campo = Describe(this,dwo.Name+'.tag')
MessageBox('Dato Requerido..',ls_campo,Stopsign! )
return 1

y en el evento de "itemchanged" pon éste código:

if dwo.name = 'nomb_campo' then
if data <> '' then return 1
end if

Aqui debes validar cada campo en el evento "itemchanged"

Espero te sirva amigo....

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

Seme olvido este paso

Publicado por Antonio (1271 intervenciones) el 28/02/2006 13:41:03
Se me olvido indicarte éste paso ponerlo en el vento Clicked de botón "Guardar", debes llamar al evento 'ue_valida':

TriggerEvent ( this, 'ue_valida' )
if is_conti = 'S' then
if MessageBox('Confirmar ...','¿ Deseas guardar los datos ?',Question!,YesNo!,1 ) = 1 then
udpate( dw_tu_datawindow)
end if
end if

SetFocus ( dw_tu_datawindow )

suerte 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

Preguntar si un datawindow tiene campos vacios.

Publicado por Jorge Contreras (2 intervenciones) el 27/07/2017 01:44:46
Hola buen dia. Los mas rapido y sencillo es una funcion pequeña como esta en el evento click de tu boton antes de hacer update tu DW:
b para el bucle
cntrld para que si un campo esta vacio se vuelva 0 y no continue con el UPDATE
1
2
3
4
5
6
7
8
9
10
11
12
13
int b, cntrld
cntrld = 1
for b = 1 to dw_1.rowcount() step 1  // COMPRUEBA CADA LINEA DEL DW
	if isnull(string(dw_1.getitemnumber(b, "destino"))) then // SI VE QUE ESTA VACIO ESE CAMPO DE ESA LINEA SE VUELVE 0
		cntrld = 0
	end if
next
if cntrld = 0 then // SI ES 0 SIGNIFICA QUE HAY UN CAMPO QUE FALTA RELLENAR
	messagebox("ERROR", "FALTA RELLENAR DESTINO DEL PRODUCTO")
	return
else
	ACTUALIZA DW
end if
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