FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour OnPostEdit, no guarda cambios
Posts: 131
Joined: Tue Dec 26, 2006 04:50 PM
OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 02:07 PM
Buenos días compañeros del foro, estoy experimentando la edición de datos directamente en un xbrowse, cuando construyo el xbrowse tengo una columna que ya tiene valores y que pueden ser editados por el usuario, se edita el valor, pero al darle enter no guarda los cambios, ni en el xbrowse, ni en el DBF, ¿Alguna idea de que me este faltando?

Saludos.

Code (fw): Select all Collapse
function resulrep
    Public oDlg, oBrw
    Public oBtn1, oBtn2, oBtn3
    ciccc="S"
    do while ciccc="S"
    close all
    USE &dbtmp1 shared new alias repos
    DEFINE DIALOG oDlg resource "dlgverdb3" of oVentprinc title "Consulta de incidencias de recursos humanos" font oFont1g
    redefine say prompt"Lista de incidencias existentes, elige el criterio de consulta" ID 0 of oDlg
    define font oFont1  name "TIMES NEW ROMAN" size 0,-12 bold
        oBrw := TXBrowse():New( oDlg )
        oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
    oBrw:nColDividerStyle := LINESTYLE_INSET
    oBrw:nRowDividerStyle := LINESTYLE_INSET
    oBrw:lColDividerComplete := .t. //completa pintado hasta el footer cuando lineas no llenan todo el browse
    oBrw:nHeaderHeight := 22 //Altura cabeceras de col
    oBrw:lRecordSelector := .t. //poner o no, COL de la flechita de la izq
    oBrw:bClrHeader := {|| { nRGB(152, 251, 152), nRGB(47, 79, 79) } }//{|| { nRGB(140, 0, 0), nRGB(229,0,0) } } // VERDECITO
    oBrw:bClrFooter := oBrw:bClrHeader
    oBrw:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
    oBrw:bClrSel := {|| { nRGB( 0, 0,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco
    oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(248,195, 34) } } // para barra de linea selecc cuando el control tiene el foco
        oBrw:nRowHeight := 19

    oCol = oBrw:AddCol()
    oCol:bStrData = { || (repos->codigo) }
        oCol:nDataStrAlign := 0
    oCol:cHeader = "Código"
    oCol:nWidth = 100
    oCol:oHeaderFont := oFont1
    oCol:bClrHeader := { || {  65535, nRGB(47, 79, 79) } }

    oCol = oBrw:AddCol()
    oCol:bStrData =  { || repos->descrip }
    oCol:nDataStrAlign := 0
        oCol:cHeader = "Descripción"
    oCol:nWidth = 220
    oCol:oHeaderFont := oFont1
    oCol:bClrHeader := { || {  65535, nRGB(47, 79, 79) } }

    oCol = oBrw:AddCol()
    oCol:bStrData = { || transform(repos->solicita,"###,###.##") }
        oCol:nDataStrAlign := 0
    oCol:cHeader = "Solicitados"
    oCol:nWidth = 90
    oCol:bEditValue = { || repos->solicita }
    oCol:cEditPicture := "@Z 999,999.99"
    oCol:nEditType := EDIT_GET
    oCol:bOnPostEdit = { | oCol, xVal, nKey | If( nKey == VK_RETURN, (DBRLOCK(), (repos->solicita := xVal), DBUNLOCK()) ,) }
    oCol:bLClickHeader:= {|| oBrw:Gotop() }
      
    oBrw:SetRDD()
    
    oBrw:CreatefromResource(2)

    redefine button oBtn1 ID 3 of oDlg action msgalert("Boton 1","1")
        redefine button oBtn2 ID 4 of oDlg action msgalert("Boton 2","2")
    REDEFINE Button oBtn3 ID 5 OF oDlg action (ciccc:="N",oDlg:end())
        activate dialog oDlg centered
   enddo
return
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 03:04 PM
Intenta de esta manera:
Code (fw): Select all Collapse
   oCol = oBrw:AddCol()
   // oCol:bStrData = { || transform(repos->solicita,"###,###.##") }
    oCol:nDataStrAlign := 0
    oCol:cHeader = "Solicitados"
    oCol:nWidth = 90
    oCol:bEditValue = { || repos->solicita }
    oCol:cEditPicture := "@Z 999,999.99"
    oCol:nEditType := EDIT_GET
   // oCol:bOnPostEdit = { | oCol, xVal, nKey | If( nKey == VK_RETURN, (DBRLOCK(), (repos->solicita := xVal), DBUNLOCK()) ,) }
    oCol:bOnPostEdit = { | oCol, xVal, nKey | If( nKey == VK_RETURN, (DBRLOCK(), repos->solicita := xVal, DBUNLOCK()) ,) }
    oCol:bLClickHeader:= {|| oBrw:Gotop() }
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 131
Joined: Tue Dec 26, 2006 04:50 PM
Re: OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 05:10 PM

Muchas gracias por tu respuesta, desafortunadamente el comportamiento sigue siendo el mismo, la única diferencia es que con estos cambios no se ven los datos de la columna "solicitados" (creo que porque son datos numéricos en el DBF) hasta que le doy doble click a la celda para editarlos, de todas formas lo edito y me guarda cero en el DBF.

Alguna otra sugerencia será bienvenida.

Gracias

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 05:23 PM
Has probado a cambiar el estilo del xbrowse?
Code (fw): Select all Collapse
oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW

Para la edicion
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 131
Joined: Tue Dec 26, 2006 04:50 PM
Re: OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 06:43 PM

Gracias Cristóbal, pero el problema no es la edición (si tengo la línea como sugieres), el problema es que no salva los valores digitados por el usuario, puse un msgalert(xval,xval) y me muestra el dialogo con el valor cero, pero si edito el valor ya existente en esa celda y le doy enter no me salva el valor cero, leí que al querer salvar compara el valor en el DBF contra el valor en el xbrowse y solo lo cambia si detecta alguna diferencia, lo que no se es porque no guarda el valor que se digito y me guarda un cero.

Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 06:56 PM

Te he entendido
Lo que he querido decir es que si has probado a cambiar ese estilo de linea que tienes definido en el XBrowse

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo

El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 08:32 PM
mariordz wrote:...no se ven los datos de la columna "solicitados" (creo que porque son datos numéricos en el DBF)


Efectivamente, si los datos en la columna son numericos, y el valor de estos es 0, no se verán porque así tienes definido el PICTURE:
oCol:cEditPicture := "@Z 999,999.99" //no mostrará valores en 0
oCol:cEditPicture := "@ 999,999.99" //muestra valores en 0

Por otra parte, y perdona la pregunta... ¿Para qué usas Do While... Enddo ?
Saludos.
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 131
Joined: Tue Dec 26, 2006 04:50 PM
Re: OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 09:23 PM

Francisco, aunque en este caso en especial no es necesario el uso del do while-enddo, copie parte de un código que había escrito (en el que no necesitaba editar los datos) y lo use como "template" para usarlo aquí, en el otro programa donde lo usaba me era útil, ya que mostraba una serie de datos de los cuales podía filtrar e imprimir, así, cada vez que se generaba un reporte el sistema volvía a mostrar la lista completa para generar un nuevo filtrado, en caso de que el usuario así lo necesitara.

Saludos.

Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: OnPostEdit, no guarda cambios
Posted: Tue Apr 15, 2014 10:36 PM

Hola Mario:
Yo reproduje el código en mi equipo (solo la parte del xBrowse) y funciona bien la rutina que colocaste. Lo hice desde codigo en lugar desde recurso por causas obvias. Pero tal vez tengas algo que ver el recurso, o las variables globales que tengas definidas. Busca el hilo por ahí.
Espero serte de ayuda

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: OnPostEdit, no guarda cambios
Posted: Wed Apr 16, 2014 02:37 AM
Mario, también probé tu código, de la siguiente manera y funciona bien.

Code (fw): Select all Collapse
//-------------------------
function resulrep
local dbtmp1 := "dbhola"
    local oDlg, oBrw, oCol
    local oBtn1, oBtn2, oBtn3

    USE &dbtmp1 shared new alias repos
    DEFINE DIALOG oDlg resource "BROWSITO" of oWnd title "Consulta de incidencias de recursos humanos" 

    oBrw := TXBrowse():New( oDlg )
    oBrw:nMarqueeStyle := MARQSTYLE_HIGHLROW //barra selectora
    oBrw:nColDividerStyle := LINESTYLE_INSET
    oBrw:nRowDividerStyle := LINESTYLE_INSET
    oBrw:lColDividerComplete := .t. //completa pintado hasta el footer cuando lineas no llenan todo el browse
    oBrw:nHeaderHeight := 22 //Altura cabeceras de col
    oBrw:lRecordSelector := .t. //poner o no, COL de la flechita de la izq
    oBrw:bClrHeader := {|| { nRGB(152, 251, 152), nRGB(47, 79, 79) } }//{|| { nRGB(140, 0, 0), nRGB(229,0,0) } } // VERDECITO
    oBrw:bClrFooter := oBrw:bClrHeader
    oBrw:bClrStd := {|| { nRGB( 0, 0, 0), nRGB(255,248,220) } } // colores para lineas normales
    oBrw:bClrSel := {|| { nRGB( 0, 0,255), nRGB(241,222,088) } } // para barra de linea selecc cuando el control no tiene el foco
    oBrw:bClrSelFocus := {|| { nRGB( 0, 0, 0), nRGB(248,195, 34) } } // para barra de linea selecc cuando el control tiene el foco
    oBrw:nRowHeight := 19

    oCol = oBrw:AddCol()
    oCol:bStrData = { || (repos->codigo) }
    oCol:nDataStrAlign := 0
    oCol:cHeader = "Código"
    oCol:nWidth = 100
    oCol:bClrHeader := { || {  65535, nRGB(47, 79, 79) } }

    oCol = oBrw:AddCol()
    oCol:bStrData =  { || repos->descrip }
    oCol:nDataStrAlign := 0
    oCol:cHeader = "Descripción"
    oCol:nWidth = 220
    oCol:bClrHeader := { || {  65535, nRGB(47, 79, 79) } }

    oCol = oBrw:AddCol()
    oCol:nDataStrAlign := 0
    oCol:cHeader = "Solicitados"
    oCol:nWidth = 90
    oCol:bEditValue = { || repos->solicita }
    oCol:cEditPicture := "@Z 999,999.99"
    oCol:nEditType := EDIT_GET
    oCol:bOnPostEdit = { | oCol, xVal, nKey | If( nKey == VK_RETURN, (DBRLOCK(), (repos->solicita := xVal), DBUNLOCK()) ,) }
    oCol:bLClickHeader:= {|| oBrw:Gotop() }
      
    oBrw:SetRDD()
    
    oBrw:CreatefromResource(118)

    redefine button oBtn1 ID 304 of oDlg action msgalert("Boton 1","1")
    redefine button oBtn2 ID 305 of oDlg action msgalert("Boton 2","2")
    REDEFINE Button oBtn3 ID 306 OF oDlg action (oDlg:end())
    activate dialog oDlg centered
repos->(dbclosearea())
return nil
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql

Continue the discussion