Page 1 of 1
Favor AYUDA con Editar Columna en XBROWSE
Posted: 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
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
Posted: 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
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
Posted: 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
Posted: Wed Oct 24, 2018 8:25 pm
by cmsoft
Code: Select all
WITH OBJECT oCust:aCols[ 2 ]
:nEditType := EDIT_GET
:bEditWhen := {|| nro_usu2->Est_inf = "S" }
END
Re: Favor AYUDA con Editar Columna en XBROWSE
Posted: 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
Posted: 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
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
Posted: Thu Oct 25, 2018 11:11 pm
by cmsoft
Saca el bonPostEdit y proba, porque le pusiste antes autosave...
Code: Select all
WITH OBJECT oBrow:aCols[ 2 ]
:nEditType := EDIT_GET
:bEditWhen := {|| &nro_usu5->Est_inf = "S" }
END
Re: Favor AYUDA con Editar Columna en XBROWSE
Posted: Fri Oct 26, 2018 12:09 am
by remtec
Cmsoft
Muchas gracias por tu ayuda.
He realizado _ 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
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
Posted: 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
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
Posted: 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.