Power Builder - Ayuda con Datawindows + celdas vacías + colores

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido 1 puesto en Power Builder (en relación al último mes)
Gráfica de Power Builder

Ayuda con Datawindows + celdas vacías + colores

Publicado por Kevin (8 intervenciones) el 29/12/2018 23:22:41
Hola, muy buenas. Tengo un problema:

Un datawindows al que le añado datos, y en el botón "Grabar" haya un código que me permita verificar si hay campos en blanco y que se coloreen esas celdas vacías nada más. He avanzado con el código pero lo único que consigo es colorear toda la columna la cual posee un campo en blanco.

¿Alguien me echa una mano con eso? Gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Integer i, c =1, columnas, fila
String temp, temp2, cols[]
 
columnas = integer(dw_1.object.DataWindow.Column.Count)
fila = dw_1.getrow( )
 
FOR i=1 TO columnas
	dw_1.accepttext( )
	dw_1.setcolumn(i)
	temp = dw_1.Describe("Evaluate('IsNull(" + dw_1.getcolumnname() + ")'," + String(fila) + ")")
	IF temp = "true" THEN
		cols[c] = dw_1.getcolumnname()
		c  = c + 1
	END IF
NEXT
 
FOR i = 1 to c - 1
	dw_1.modify("" + cols[i] + ".Background.Mode=0")
	dw_1.modify("" + cols[i] + ".Background.Color=255~t if( currentrow()=getrow(), rgb(198,214,253))")
NEXT
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
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

Ayuda con Datawindows + celdas vacías + colores

Publicado por Leonardo Daniel A. (481 intervenciones) el 19/01/2019 06:41:43
Hola.. yo no uso el isnull porque es mucho show y mas cuando son campos numericos o fechas... lo que hago es usar la propiedad TAG de cada control y le pongo una "R" para indicar que es requerido

dentro de tu FOR deberas obtener el tipo de dato y segun el preguntar si tiene datos o no

te pongo una parte del codigo, ya que no todo se adapta a lo que necesitas, pero te dara una idea


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
ls_required = adw_a_validar.Describe(ls_nomcol+".Tag")
ls_required = Left( ls_required, 1)
 
 
//if Len( adw_a_validar.Describe(ls_nomcol+".Validation") ) >1 then 
if ls_required = "R" then
    //adw_a_validar.SetColumn(li_cont)
 
    ls_coltype = adw_a_validar.Describe("#"+string(li_cont)+".coltype")
 
    if match( ls_coltype, '(') then  // quitar parentesis ej. char(30)
        ls_coltype = mid(ls_coltype,1, Pos(ls_coltype, '(')-1 )
    end if
 
    choose case ls_coltype
        case "char"
            ls_valstr = adw_a_validar.GetItemString( adw_a_validar.GetRow(), ls_nomcol )
            if f_esta_vacio(ls_valstr) then
                lb_vacio = True
            end if
        case "date"
            ls_valstr = adw_a_validar.GetItemString( adw_a_validar.GetRow(), ls_nomcol )
            if not isDate(ls_valstr) or isNull(ls_valstr) then
                lb_vacio = True
            end if
        case "long", "int", "number"
            ll_valnum = adw_a_validar.GetItemNumber( adw_a_validar.GetRow(), ls_nomcol )
            if ll_valnum  = 0 or isNull(ll_valnum) then
                lb_vacio = True
            end if
        case "decimal"
            ldc_valdc = adw_a_validar.GetItemDecimal( adw_a_validar.GetRow(), ls_nomcol )
            if ldc_valdc = 0 or isNull(ldc_valdc) then
                lb_vacio = True
            end if
    end choose
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