OnPostEdit, no guarda cambios

OnPostEdit, no guarda cambios

Postby mariordz » Tue Apr 15, 2014 2: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: Select all  Expand view

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
 
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: OnPostEdit, no guarda cambios

Postby FranciscoA » Tue Apr 15, 2014 3:04 pm

Intenta de esta manera:
Code: Select all  Expand view
  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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OnPostEdit, no guarda cambios

Postby mariordz » Tue Apr 15, 2014 5: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
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: OnPostEdit, no guarda cambios

Postby cnavarro » Tue Apr 15, 2014 5:23 pm

Has probado a cambiar el estilo del xbrowse?
Code: Select all  Expand view

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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: OnPostEdit, no guarda cambios

Postby mariordz » Tue Apr 15, 2014 6: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.
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: OnPostEdit, no guarda cambios

Postby cnavarro » Tue Apr 15, 2014 6: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
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: OnPostEdit, no guarda cambios

Postby FranciscoA » Tue Apr 15, 2014 8: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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: OnPostEdit, no guarda cambios

Postby mariordz » Tue Apr 15, 2014 9: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.
User avatar
mariordz
 
Posts: 131
Joined: Tue Dec 26, 2006 4:50 pm
Location: Ciudad de México

Re: OnPostEdit, no guarda cambios

Postby cmsoft » 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
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: OnPostEdit, no guarda cambios

Postby FranciscoA » Wed Apr 16, 2014 2:37 am

Mario, también probé tu código, de la siguiente manera y funciona bien.

Code: Select all  Expand view
//-------------------------
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
User avatar
FranciscoA
 
Posts: 2110
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 67 guests