Page 1 of 1

Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Wed Oct 24, 2018 2:41 pm
by remtec
Amigos

Muy buen dia.
Tengo un problema, necesito poder modificar una Columna de una DBF en Xbrowse, pero esta deben modificarse solo las que cumplen con un estado de la Fila.

La Columna a modifica es el Campo: "Cod_res ", pero para ello un campo de la DBF llamado "Est_inf", tiene que tener el valor "S". Por lo que solo seran modificadas las lineas que cumplan con la condicion.

Tengo el siguiente codigo, pero me falta modificarlo para que me permita modificar:

Desde ya muchas gracias.

Atte.
Antonio.
Code: Select all  Expand view
 
   DEFINE DIALOG oDlg RESOURCE "#1003"     FONT oFont1   Title " "

   REDEFINE XBROWSE oCust ALIAS "&nro_usu2" FIELDS ;
            Cod_det1,;
            Cod_res,;
            Cod_det2,;
            HEADERS;
            "Detalle Examen",;
            "Resultado Examen" ;
            "Referencias" ;

            PICTURES '@!','@!','@!' ;

            ID 4005 OF oDlg ;
            FONT oFont1;
            FOOTERS LINES CELL
            oCust:bClrStd             := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }
            oCust:bClrSelFocus        := {|| { nRGB(  0,  0,  0), nRGB(137, 247, 33) } }

            oCol := oCust:AddCol()
            oCol:AddResource("#8013")    // Ticket Verde
            oCol:AddResource("#8014")    // Ticket Rojo
            oCol:cHeader = "Est."

            oCol:bBmpData   := { || IIF(&nro_usu2->Est_inf = "S",1,2 )}

            WITH OBJECT oCust:aCols[ 2 ]
                 :nEditType  := EDIT_GET
            END


             
   ACTIVATE DIALOG oDlg CENTERED
 

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Wed Oct 24, 2018 2:52 pm
by VitalJavier
Antonio, yo lo hago pero solo en el Valid, Despues de que escribió

Code: Select all  Expand view

oBrow:aCols[02]:nEditType       := 1
oBrow:aCols[02]:bEditValid      := { | oLeo, oCol | ValidaCaja( oLeo, oCol, oGet ) }


FUNCTION ValidaCaja( oLeo, oCol, oGet )
  LOCAL nRet := .F.
**** Aqui pongo mis validaciones
RETURN nRet
 


Espero y te ayude un poco.

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Wed Oct 24, 2018 3:06 pm
by remtec
Hola Javir.

Muchas gracias por responder.

No tengo mucha experiencia en Fivewin.

La idea es que solo permita editar las Filas que cumplan con la condicion.

Tu indicacion es que en la funcion "ValidaCaja()", valide que el campo Est_inf = "S" ??

Muchos Saludos

Antonio.

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Wed Oct 24, 2018 8:25 pm
by cmsoft
Code: Select all  Expand view

           WITH OBJECT oCust:aCols[ 2 ]
                 :nEditType  := EDIT_GET
                 :bEditWhen := {|| nro_usu2->Est_inf = "S" }
            END

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Wed Oct 24, 2018 8:35 pm
by remtec
Muchas Gracias a Javier y Cesar por responder.

Hoy probare sus soluciones y luego comentare.

Muchos Saludos.

Antonio.

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Thu Oct 25, 2018 2:14 pm
by remtec
Amigos
Muy buen dia.

De las opciones que me dio Javier y Cesar, aplique de loo Cesar, ya que si cumple que se puedan modificar solo las filas que cumplen la condición.

El problema que tengo es que NO Guarda el valor Ingresado, si manteniendo el valor antiguo al perder el foco.

Necesito que pueda Actualizar el valor digitado en el campo, para luego poder guardar la actualizacion en la DBF original.

Dejo el codigo que Aplico.

Esperando poder solucionar el problema, les saluda muy atte.

Antonio.

Code: Select all  Expand view
 
             DEFINE DIALOG oDlg1 RESOURCE "#1008"     FONT oFont1   Title " "
             REDEFINE SAY oSay1 ID 608 PROMPT "TIPO DE EXAMENES FECHA " OF oDlg1 FONT oFont4  COLORS RGB(12, 135, 27)

             REDEFINE XBROWSE oBrow ALIAS "&nro_usu5" FIELDS ;
            OemToAnsi(Cod_det1),;
            OemToAnsi(Cod_res),;
            OemToAnsi(Cod_det2);
            HEADERS;
            "Detalle Examen",;
            "Resultado Examen",;
            "Referencias";
            PICTURES '@!','@!','@!';
            ID 609 OF oDlg1 ;
            FONT oFont1;
            FOOTERS LINES CELL
            oBrow:nFreeze:=2
            oBrow:bClrStd             := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }
            oBrow:bClrSelFocus        := {|| { nRGB(  0,  0,  0), nRGB(137, 247, 33) } }
            oBrow:aCols[ 2 ]:lAutoSave  := .T.

            WITH OBJECT oBrow:aCols[ 2 ]
                 :nEditType  := EDIT_GET
                 :bEditWhen := {|| &nro_usu5->Est_inf = "S" }
                 oCol:bOnPostEdit := {|o, v, n| &nro_usu5->Cod_res:=v }
               
            END


           ACTIVATE DIALOG oDlg1 CENTERED
 

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Thu Oct 25, 2018 11:11 pm
by cmsoft
Saca el bonPostEdit y proba, porque le pusiste antes autosave...
Code: Select all  Expand view

            WITH OBJECT oBrow:aCols[ 2 ]
                 :nEditType  := EDIT_GET
                 :bEditWhen := {|| &nro_usu5->Est_inf = "S" }                
            END
 

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Fri Oct 26, 2018 12:09 am
by remtec
Cmsoft

Muchas gracias por tu ayuda.

He realizado los cambios y pruebas, lamentablemente no me resulta la actulizacion del campo " Cod_res "en la DBF, ni pantalla del browse.

Como me recomendaste, aplique el codigo asi:

Saludos
Antonio

Code: Select all  Expand view

             oBrow:nFreeze:=2
             oBrow:bClrStd             := {|| { nRGB(  0,  0,  0), nRGB(255,248,220) } }
             :bClrSelFocus        := {|| { nRGB(  0,  0,  0), nRGB(137, 247, 33) } }
             oBrow:aCols[ 2 ]:lAutoSave  := .T.

            WITH OBJECT oBrow:aCols[ 2 ]
                 :nEditType  := EDIT_GET
                 :bEditWhen := {|| &nro_usu5->Est_inf = "S" }


            END

 

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Fri Oct 26, 2018 12:27 pm
by cmsoft
En los samples de FiveWin tienes un prg testxbr2.prg.
Prueba cambiar la funcion AutoEdit asi, para que se corresponda con tu ejemplo.
Code: Select all  Expand view

STATIC FUNCTION AutoEdit()

   local oChild, oBrw, oCol
   local nFor

   DEFINE WINDOW oChild TITLE "Auto edit browse" MDICHILD OF oWnd

   @ 0,0 XBROWSE oBrw OF oChild ALIAS "CUSTOMER";
    COLUMNS "FIRST","LAST","MARRIED","SALARY";
    LINES CELL

   WITH OBJECT oBrw:aCols[4]
      :nEditType     := EDIT_GET
      :bEditWhen     := {|| customer->married}
      :lAutoSave     := .T.
   END
   oBrw:CreateFromCode()
   oChild:oClient := oBrw

   ACTIVATE WINDOW oChild ON INIT oBrw:SetFocus()

RETURN NIL
 

Veo que usas un & pero no se bien para que es, como viene antes tu .prg
Espero te sirva.
Saludos

Re: Favor AYUDA con Editar Columna en XBROWSE

PostPosted: Fri Oct 26, 2018 1:09 pm
by remtec
Hola Cesar.

Muy agradecido por tu ayuda.

Ya habia revisado la opcion que mi indicas, creo que el ejemplo no es para ser usado con recursos, uso recursos RES, con pelles. No me gusta trabajar con coordenadas, no se realmente la diferencia entre ambas, mas alla de la que te comento.

Tu obervacion en relacion al signo & , &nro_usu5-> antes de esta variable, es porque trabajo con DBF de paso, que genero por cada usuario, para este tipo de procesos, al usarlo con este signo, no me debo preocupar del nombre de la DBF en uso. No se si habra otra forma mas moderna, pero la uso desde clipper.

Como puedes ver, aunque que pense que era algo simple al usar Xbrowse y actualizar campos de DBF, hoy se me ha transformado en algo muy complicado por el tiempo que me ha tomado, pensando ademas, que son varias las rutinas que debo actualizar con este metodo.

Muchos Saludos

Antonio.