cProd := "SELECT productos.cod_producto, productos.producto, productos.precio_venta1, productos.unidad, productos.saldo, productos.cod_proveedor, productos.cod_marca, productos.cod_grupo, productos.codbar1, productos.codbar2, productos.observaciones, proveedor.razon_social, marca.detalle AS marca, grupo.detalle AS grupo "
cProd += "FROM productos "
cProd += "LEFT JOIN proveedor ON productos.cod_proveedor = proveedor.ruc_dni "
cProd += "LEFT JOIN marca ON productos.cod_marca = marca.codigo "
cProd += "LEFT JOIN grupo ON productos.cod_grupo = grupo.codigo "
cProd += "ORDER BY productos.producto"
/*
oProd := oCn:Call( "proc001" ) // lista de productos
oProd := oCn:Execute( "CALL proc001", .t. ) // lista de productos
oProd := oCn:RowSet( "CALL proc001", .t. )
xbrowse(oProd)
*/
eProd := {|| oProd := SQLQry(oCn, oProd, cProd) }
EVAL(eProd)
.....
...
REDEFINE XBROWSE oLbx ;
DATASOURCE oProd ; /// AUTOCOLS ; AUTOSORT LINES ;
FASTEDIT LINES ;
FONT oFont1 ; //
ON CHANGE (oApp:cSeek := "", oSay:Refresh(), cObser := MyCampo(oProd, "observaciones"), oObser:Refresh(), RRefresh(oDat) ) ; //, EVAL(eImg) ) ;
ON DBLCLICK (lOk := .t., oDlg:End()) ;
ID 121 OF oDlg
oCol := oLbx:AddCol()
oCol:bStrData := { || oProd:producto }
oCol:cHeader := "Producto/Servicio"
oCol:bClrStd := { || { IF(oProd:saldo <= 0, CLR_GRAY, CLR_BLUE), CLR_WHITE } }
oCol:nDataStrAlign := AL_LEFT
oCol:nWidth := 480
....
.....
REDEFINE BTNBMP oBusca1 ;
PROMPT "Producto" ;
ACTION (FiltrarTx(oProd, 1, cFiltro), oLbx:Refresh(), oLbx:SetFOcus() ) ;
ID 112 OF oDlg
oBusca1:cToolTip := "Filtrar por Nombre de Producto"
//---------------------------------------------------------------------------------------------------------------------------------------------------
Function FiltrarTx(oProd, nModo, cFiltro)
cFiltro := ALLTRIM(cFiltro)
If nModo = 1
oProd:SetFilter("producto LIKE '%" + cFiltro + "%'")
EndIf
IF nModo = 2
oProd:SetFilter("codbar1 LIKE '%" + cFiltro + "%' OR observaciones LIKE '%" + cFiltro + "%'")
Endif
Return(oProd)