Code: Select all
/*
Duplicación de registro en xBrowse
luego de Agregar o Editar.
*/
// SELECT de Tabla
oQryBD:= ::oConn:RowSet( "SELECT * FROM clientes " + ;
"LEFT JOIN conceptos AS CONC ON CONC.idConcep = clientes.idConcep " + ;
"LEFT JOIN servicios AS SERV ON SERV.idService = clientes.idService " + ;
"WHERE NumeroDocumento LIKE ? and Apellidos LIKE ? and Nombres LIKE ? " + ;
"ORDER BY Apellidos", ;
{ ::cDocumento, ::cApellido, ::cNombre } )
// xBrowse
REDEFINE XBROWSE aO[_oBrw] ID BRW_XBRW OF oDlg AUTOSORT ;
COLUMNS "NumeroDocumento", "Apellidos", "Nombres" ;
HEADERS "DCTO", "Apellidos", "Nombres" ;
OBJECT ::oQryCli
WITH OBJECT aO[_oBrw]
:nColDividerStyle := LINESTYLE_DARKGRAY // Linea Tipo
:l2013 := TRUE
:nStretchCol := STRETCHCOL_LAST
:nMarqueeStyle := MARQSTYLE_HIGHLROWRC // linea señaladora
:lColDividerComplete:= TRUE // Linea de columna hasta final de Brw
:lAllowColHiding := FALSE // Anular menu pop Ocultar/Mostrar columna
:lHScroll := FALSE
:lMultiselect := FALSE // Cuando repsoiciona por busqueda cambia la barra de señalizacion
:SetColor( CLR_BLACK, CLR_BACKAMAR ) // colorea todo el browse
:bClrStd:= {|| {CLR_BLACK, CLR_BACKAMAR} }
:oHeaderFonts:= oSelf:oRutG:hFont["Calibri14"]
// Get de Cabecera
:lGetBar := .T.
:bClrEdits := { || { CLR_BLACK, CLR_BACKBLUE1 } }
:bLDblClick:= {|| Eval( aO[_oBrw]:bKeyDown, VK_F12 ) } //
:bKeyDown := {|nK| if( nK==VK_F12, if( lCaptura, ( Eval( bRetorno ), ( aO[_oBrw]:End(), oDlg:End(), ::oRutG:EndFont() ) ), ), ) }
// Menu Hamburguesa
:nRecSelHeadBmpNo := { 48, 48, { { "L", 0, 2, 16, 16, 2, 1, 2, 14 }, ;
{ "L", 0, 2, 16, 16, 7, 1, 7, 14 }, ;
{ "L", 0, 2, 16, 16,12, 1,12, 14 } } }
:bRecSelHeader:= "Menú"
:bRecSelClick := {|| ::MenuH( aO[_oBrw], oDlg, _MNCLIENTES,, lCaptura ) } // Menu de opciones
// PopUp
:bRClicked:= {|nRow, nCol| if( !lCaptura, ::PopMenu( aO[_oBrw], lCaptura, nRow, nCol ), msgBeep() ) }
END
WITH OBJECT aO[_oBrw]:DCTO
:cHeader:= "Dcto N°"
:nWidth := 110
//:cEditPicture:= PIC_DNI
:bStrData:= {|| Transform( ::oQryCli:NumeroDocumento, if( IsDigit(::oQryCli:NumeroDocumento) .and. Val(::oQryCli:NumeroDocumento)<= 99999999, ;
"@R 99.999.999", ;
if( !IsDigit(::oQryCli:NumeroDocumento), "@!", "@R 99.999.999" )) ) }
:Cargo:= "NumeroDocumento"
:bBarGetAction:= {|| ::SetFilterRegistro( aO[_oBrw], lCaptura ) }
END
WITH OBJECT aO[_oBrw]:Apellidos
:cHeader:= if(lCaptura, "Raz.Social", "Apellidos" )
:nWidth := if( lCaptura, 300, 260 )
:Cargo:= if( lCaptura, "RAZSOC", "Apellidos" )
:bBarGetAction:= {|| ::SetFilterRegistro( aO[_oBrw], lCaptura ) }
:cBarGetPic:= "@!"
END
WITH OBJECT aO[_oBrw]:aCols[3]
:cHeader:= if(lCaptura, "", "Nombres" )
:nWidth := 1
if !lCaptura
:Cargo:= "Nombres"
:bBarGetAction:= {|| ::SetFilterRegistro( aO[_oBrw] ) }
:cBarGetPic:= "@!"
end
END
// Default
aEval( aO[_oBrw]:aCols, { |o,n| IF(o:cargo <> Nil, ( o:uBarGetVal := if( n == 1 .and. !Empty( Token( ::cDocumento,"%" ) ), Token( ::cDocumento,"%" ), ;
if( n == 2 .and. !Empty( Token( ::cApellido,"%" ) ), Token( ::cApellido,"%" ), ;
if( n == 3 .and. !Empty( Token( ::cNombre,"%" ) ), Token( ::cNombre,"%" ), Space( 50 ) ))), ; // o:uBarGetVal:= uValBlank( ::oQryCli:FieldGet( n ) ), ;
o:cBarGetBmp := "bmp_Buscar (24x24)", ;
o:bBarGetValid:= {|| ::SetFilterRegistro( aO[_oBrw], lCaptura ) } ), ) } )
...
// Finb xBrowse
// Menu
METHOD MenuH( oBrw, oDlg, nOpcion, nFolder, lCaptura ) CLASS TBDatos
local oMenu
MENU oMenu POPUP 2015
MENUITEM "Agrega" ;
RESOURCE "bmp_AgrCli (20x20)" ; // EditBaseRecord( [cFieldList], [lNew], [bEdit], [oBrw], [lLock] )
ACTION ::oQryCli:EditBaseRecord( nil, TRUE, { |oRec| ::AgrEdiCliente( oRec, oBrw ) }, oBrw ) // <--- QUE HACE ESTE oBrw
MENUITEM "Edita" ;
RESOURCE "bmp_EdiCli (20x20)" ;
WHEN !::oQryCli:RecCount() == 0 ;
ACTION ::oQryCli:EditBaseRecord( nil, FALSE, { |oRec| ::AgrEdiCliente( oRec, oBrw ) }, oBrw, TRUE ) // <--- QUE HACE ESTE .T.
MENUITEM "Cierra Tabla" ;
RESOURCE "bmp_Salir (20x20)" ;
ACTION oDlg:End()
ENDMENU
return( oMenu )
// Fin
// Evento Guardar
REDEFINE RBBTN ID BTN_GUARDAR OF oDlg TRANSPARENT ;
PROMPT "Guardar" LEFT ;
BITMAP "bmp_Guardar (28x28)" ;
LINECOLORS CLR_BLUE, CLR_HBLUE ;
ACTION ( oCliente:idConcep := hServicios["idConcepto"], ;
oCliente:idService:= hServicios["idService"], ;
if( oSelf:GuardaCliente( oCliente, lAgrega ), ;
( oSelf:cDocumento:= ;
oSelf:cApellido := ;
oSelf:cNombre := "", ;
oSelf:SetFilterRegistro( oBrw ), ; // Re Filtra el Browse - mostrando toda la Tabla
if( lAgrega, ;
( oSelf:oQryCli:SetOrder( "Apellidos" ), ; // Posiciona la barra en el registro Agregado
oSelf:oQryCli:GoTop(), ;
oSelf:oQryCli:Seek( RTrim(oCliente:Apellidos) ) ), ), ;
oDlg:End(), ;
oBrw:SetFocus() ), ;
msgBeep() ) ) )
...
// Fin Dialog Agrega/Edita
// Consultas Filtradas
METHOD SetFilterRegistro( oBrw, lCaptura ) CLASS TBDatos
local oCol, ;
uVal, ;
uValFil:={}
DEFAULT lCaptura:= FALSE
FOR EACH oCol IN oBrw:aCols
uVal := oCol:uBarGetVal
if ValType(uVal)=="C"
aAdd( uValFil, AllTrim( uVal ) )
elseIf ValType(uVal)=="N"
aAdd( uValFil, Str( uVal ) )
elseIf ValType(uVal)=="D"
// PENDIENTE
end
NEXT
if Len(uValFil) > 0
::cDocumento:= if( ::nOpcFil == _QCOMIENCE, '', '%') +uValFil[1]+'%' //, ;
::cApellido := if( ::nOpcFil == _QCOMIENCE, '', '%') +uValFil[2]+'%' //, ;
if !lCaptura
::cNombre := if( ::nOpcFil == _QCOMIENCE, '', '%') +uValFil[3]+'%'
end
if !Empty( ::oQryCli )
if lCaptura
::oQryCli:Requery( { ::cDocumento, ::cApellido } )
else
::oQryCli:Requery( { ::cDocumento, ::cApellido, ::cNombre } )
end
::oQryCli:Refresh()
end
oBrw:Refresh()
end
oBrw:SetFocus()
return( TRUE )
// Fin
Gracias.