Page 1 of 1

xBrowse duplica el renglon al editar

Posted: Tue Oct 20, 2015 8:57 am
by devtuxtla
Hola FiveWinners

Cuando estoy editando en xBrowse una columna tipo combobox, me duplica el renglon y la edicion se realiza en el siguiente renglon duplicado, ya verifique la información y el registro en la tabla no esta duplicado.
utilizo la version FW 14.09

Gracias por su ayuda

Este es el codigo que utilizo

Code: Select all | Expand


REDEFINE XBROWSE oBrw ID 2001  OF oDlg LINES  ALIAS Alias()  //;
ADD COLUMN  TO oBrw DATA  N02_DIA_ASISTENCIA((cNAlias)->EM_FECHA) ;
HEADER "Día de " + CRLF + "Asistencia" ;
SIZE 80

ADD COLUMN  TO oBrw DATA  (cNAlias)->EM_FECHA ;
HEADER "FECHA " + CRLF + "Asistencia" ;
SIZE 80

ADD COLUMN  TO oBrw DATA  (cNAlias)->NA_HORA01 ;
HEADER "Hora de " + CRLF + "Entrada" ;
SIZE 60

ADD COLUMN  TO oBrw DATA  (cNAlias)->NA_HORA02 ;
HEADER "Hora de " + CRLF + "Salida" ;
SIZE 60
   
ADD COLUMN  TO oBrw DATA  (cNAlias)->NA_HORA03 ;
HEADER "Hora de " + CRLF + "Entrada" ;
SIZE 60

ADD COLUMN  TO oBrw DATA  (cNAlias)->NA_HORA04 ;
HEADER "Hora de " + CRLF + "Salida" ;
SIZE 60

ADD COLUMN  TO oBrw DATA  (cNAlias)->NA_HORAST ;
HEADER "Horas " + CRLF + "Trabajadas" ;
SIZE 60

ADD COLUMN oCCHK TO oBrw DATA (cNAlias)->NA_ASISTE  ;
TITLE "Asistio" COLOR ncolor5, nColor4  ;
ALIGN LEFT  ;
SIZE 80

ADD COLUMN oCALIF TO oBrw DATA (cNAlias)->EM_CALIFIC ;
HEADER "Asistencia" ; //+ CRLF + "Calificada" ;
SIZE 200

ADD COLUMN oActual TO oBrw DATA  (cNAlias)->NA_TIPMOV ;
HEADER "SeCalificó" ;
SIZE 120          

ADD COLUMN oComb TO oBrw DATA  (cNAlias)->NA_TIPMOV ;
HEADER "Movimiento" ;
SIZE 120 EDITABLE   ;
WHEN N20_CAMBIAR_MOVTO(cNAlias, @aMOVTOS, @oBrw)  

 
WITH OBJECT oBrw:Movimiento
      :nEditType        := EDIT_LISTBOX
      // :aEditListTxt    := ArrTranspose( aMOVTOS ) [ 1 ]
      :aEditListBound  := ArrTranspose( aMOVTOS ) [ 1 ]
      :aEditListTxt := aMOVTOS
END

ADD COLUMN oPERMI TO oBrw DATA (cNAlias)->NA_TPERMIS ;
HEADER "Tipo Permiso" ;
SIZE 200

oComb:bOnPostEdit := {|o, v, n| iif( n != VK_ESCAPE, ( NW_REPLACE("NA_TIPMOV", v, .F., cNAlias ), N20_CAMBIAR_DIA(@cNAlias, @oBrw, oDlg), oBrw:REFRESH()  ), ) }

oBrw:bClrStd        = { || { If( (oBrw:cAlias)->NA_TIPMOV="Retardo:", RGB( 255,255,200 ), CLR_BLACK), RGB( 232, 255, 232 ) } }
oBrw:Asistencia:bClrStd = { || { If( AT("Retardo:",(oBrw:cAlias)->EM_CALIFIC)>0, CLR_HRED, CLR_BLACK), RGB( 232, 255, 232 ) } }

oBrw:bClrSel = { || { If( ( oBrw:cAlias )->( Deleted() ), CLR_HRED, CLR_WHITE ), RGB( 0x33, 0x66, 0xCC ) } }

 


y esta es la imangen

Image

Re: xBrowse duplica el renglon al editar

Posted: Tue Oct 20, 2015 1:54 pm
by Antonio Linares
Puedes probar este ejemplo con tu versión de FWH y comprobar si se produce el error ?

Aqui funciona bien con FWH 15.09

Code: Select all | Expand

#INCLUDE "FiveWin.ch"
#INCLUDE "XBrowse.ch"

function Main()

   local oWnd, aLin := {}, i, oBrw, oBtn

   for i := 1 TO 6
      AAdd( aLin, { i, "Description " + Str( i ), Replicate( Chr( 64 + i ), 2 ) } )
   next

   SetGetColorFocus()
   DEFINE WINDOW oWnd

   @ 10,10 XBROWSE oBrw OF oWnd ;
      AUTOCOLS ;
      HEADERS 'Cod', 'Description', 'Cd' ;
      ARRAY aLin ;
      CELL LINES

   WITH OBJECT oBrw
      // pajama colors code
      // KeyNo() can be used for Arrays, RDD, ADO and all datasources
      :bClrStd    := { || If( oBrw:KeyNo() % 2 == 0, ;
                         { CLR_BLACK, RGB( 224, 236, 255 ) }, ;
                         { CLR_BLACK, RGB( 189, 211, 253 ) } ) }
      :bPopUp     := { || PopMenu( oBrw ) }
   END

   WITH OBJECT oBrw:Cod
      :nEditType     := EDIT_GET
      :bEditValid    := { | oGet, oCol | Valida( oGet, oCol ) }
   END

   oBrw:Description:nEditType := EDIT_GET

   WITH OBJECT oBrw:Cd
      :nEditType        := EDIT_LISTBOX
      :aEditListBound   := ;
      :aEditListTxt     := { "AA", "BB", "CC", "DD", "EE", "FF", "GG", "HH" }
   END

   // Note: bOnPostEdit codeblocks are automatically constructed by SetArray() method

   oBrw:CreateFromCode()
   oWnd:oClient   := oBrw

   ACTIVATE WINDOW oWnd

RETURN NIL

STATIC FUNCTION Valida( oGet, oCol )

   local nVal := 0

   if oGet:Value() > 6
      MsgAlert( "Must be lower than 7" )
      if MsgGet( "New value", "Enter number between 1 and 6", @nVal )
         if nVal > 0 .and. nVal < 7
            oGet:VarPut( nVal )
            oCol:PostEdit()
            return .T.
          endif
      endif
      return .F.
    endif

return .T.

function PopMenu( oBrw )

   local oMenu

   MENU oMenu POPUP 2007
      MENUITEM "Add" ACTION ( AAdd( oBrw:aArrayData, ;
         { Len( oBrw:aArrayData ) + 1 , "New item    " + Str( Len( oBrw:aArrayData ) + 1 ), ;
         Replicate( Chr( 64  + Len( oBrw:aArrayData ) + 1 ), 2 ) } ), oBrw:Refresh() )
      MENUITEM "Delete" ACTION ( ADel( oBrw:aArrayData, oBrw:nArrayAt ), ASize( oBrw:aArrayData, Len( oBrw:aArrayData ) - 1 ), oBrw:Refresh() )
      MENUITEM "Select 3rd Row" ACTION ( oBrw:GoTop(), oBrw:nArrayAt := 3, oBrw:nRowSel := 3, oBrw:Refresh() )
      MENUITEM "Delete All" ACTION ( ASize( oBrw:aArrayData, 0 ), oBrw:Refresh() )
      MENUITEM "Report" ACTION oBrw:Report()
      MENUITEM "Excel"  ACTION oBrw:ToExcel()
   ENDMENU

return oMenu

//------------------------------------------------------------------//

 

Re: xBrowse duplica el renglon al editar

Posted: Tue Oct 20, 2015 6:06 pm
by devtuxtla
Hola Antonio.

Gracias por responder.

Ya hice la prueba con el codigo, y no, no lo duplica.

Te comento que que estoy utilizando tablas con indices CDX.

Alguna idea adicional ?

Saludos

Re: xBrowse duplica el renglon al editar

Posted: Tue Oct 20, 2015 7:34 pm
by Antonio Linares
Puedes construir FWH\samples\FiveDBU.prg y ver si tambien falla ? gracias

Re: xBrowse duplica el renglon al editar (RESUELTO)

Posted: Wed Oct 21, 2015 8:47 pm
by devtuxtla
Hola Antonio.

Muchas gracias por la sugerencia.

El problema radicaba en el indice compuesto, al corregir el error de crear un indice donde se combina una dato numerico mas una fecha en formato DTOC, ocurre el error.
Cambie el indice a la composicion de dato numerico mas fecha en formato DTOS y todo bien.

Saludos

Re: xBrowse duplica el renglon al editar

Posted: Wed Oct 21, 2015 8:48 pm
by Antonio Linares
muy bien! :-)