Sobre XBrowse y Filtro

Post Reply
VitalJavier
Posts: 188
Joined: Mon Jun 10, 2013 6:40 pm

Sobre XBrowse y Filtro

Post by VitalJavier »

Que tal, Buen dia a Todos

Alguien tendrá alguna idea por que me sucede esto :
Como explicarles

n_Precio := Aquí ago un calculo del precio

Tengo un xBrowse de la tabla TABPESOS y en una de las columnas tengo esto :

oBrowPso:aCols[05]:bStrData := {|| n_Precio * TABPESOS->PESO }


Cuando entro de inicio se ejecuta el filtro y si el filtro no tiene datos, me pone vacio
el xbrowse (hasta ahi todo bien), pero cuando quiero cambiar ese filtro (con la tecla F10 cambio el filtro)
me sigue poniendo cero en la columna [5], auque tenga datos.


Alguien que ya le haya pasado ???


Pongo un poco del fuente para que lo vean :

Code: Select all

FUNCTION BuscaPesadasVenta(oDlg,oGet)
    LOCAL aField := Array(5)
    PRIVATE oBrowPso, oTimerPso, lMedias := .F., oMT
    IF !RETORNA_SYSP("BUSCA_PESADA")
        RETURN .T.
    ENDIF
    IF Empty((cFile)->ARTICULO) .OR. !Empty((cFile)->NCAJA)
        RETURN .T.
    ENDIF
    SELECT TABPESOS
    OrdSetFocus("NUMERO")
    DbGoTop()
    ADSClearAOF()
    cCad := "TABPESOS->ARTICULO='"+AllTrim((cFile)->ARTICULO)+"' .AND. TABPESOS->PESO>=17" 
    IF !ADSSetAOF(cCad)
        ?"No se realizo el filtro...",cCad
    ENDIF
    DbGoBottom()
        QuitaTeclas()
        lMedias := .F.
        SETKEY( VK_F10, { || Actual_Peso_F10() } ) 
        SELECT ARTICULOS
        OrdSetFocus("ARTICULO")
        DbGoTop()
        DbSeek(TABPESOS->ARTICULO)
        n_Precio := RetornaPrecioArti1()
        aField[01] := "OPCION"
        aField[02] := "NUMERO"
        aField[03] := "PESO"
        aField[04] := "ARTNOMBRE"
        aField[05] := "IMPORTE"
        DEFINE DIALOG oDlgPso RESOURCE "UTILERIAS_009" TITLE "Selecciona Pesada del Producto" OF oDlg ICON "AASESORES" TRANSPARENT
            oDlgPso:lHelpIcon := .F.
            oDlgPso:bKeyDown  := {|nKey| IIF(nKey=27,oDlgPso:End(),.F.)}
            DEFINE TIMER oTimerPso INTERVAL 1000 ACTION oBrowPso:Refresh() OF oDlgPso
            oBrowPso := TxBrowse():New(oDlgPso)
                PoneFormasBrowse(oBrowPso)
                oBrowPso:oFont                          := aLetras[07]              
                oBrowPso:cAlias                             := "TABPESOS"
                oBrowPso:SetRDD(,,aField)               
                oBrowPso:aCols[05]:bStrData         := {|| n_Precio * TABPESOS->PESO }
                oBrowPso:aCols[01]:cHeader          := "Selec"
                oBrowPso:aCols[02]:cHeader          := "Numero"
                oBrowPso:aCols[03]:cHeader          := "Peso"
                oBrowPso:aCols[04]:cHeader          := "Nombre"
                oBrowPso:aCols[05]:cHeader          := "Importe"
                oBrowPso:aCols[03]:nWidth               := 80
                oBrowPso:aCols[04]:nWidth               := 180
                oBrowPso:aCols[05]:nWidth               := 90
                oBrowPso:aCols[05]:cEditPicture         := "999.9999"               
                oBrowPso:bKeyDown                       := {|nKey| ValidaKeySelPeso(nKey)}
                oBrowPso:CreateFromResource( 101 )
        ACTIVATE DIALOG oDlgPso CENTER ON INIT (oTimerPso:Activate(),oMT := PoneTitulo1(oDlgPso,"Cajas Enteras","",.F.,.F.),oBrowPso:Refresh())
        oTimerPso:End()
        SETKEY( VK_F10, { || .T. } ) 
    ADSClearAOF()
    SELECT (cFile)
    PoneTeclas(oDlg,oGet)
    oBrow:SetFocus()
RETURN .T.

FUNCTION Actual_Peso_F10()
    IF lMedias
        oMT:aText[1,3] := "Cajas Enteras"
        oMT:Refresh()       
        lMedias := .F.
        SELECT TABPESOS
        OrdSetFocus("NUMERO")
        DbGoTop()
        ADSClearAOF()
        cCad := "TABPESOS->ARTICULO='"+AllTrim((cFile)->ARTICULO)+"' .AND. TABPESOS->PESO>=17" 
        IF !ADSSetAOF(cCad)
            ?"No se realizo el filtro...",cCad
        ENDIF
        DbGoBottom()
    ELSE
        oMT:aText[1,3] := "Medias Cajas"
        oMT:Refresh()       
        lMedias := .T.
        SELECT TABPESOS
        OrdSetFocus("NUMERO")
        DbGoTop()
        ADSClearAOF()
        cCad := "TABPESOS->ARTICULO='"+AllTrim((cFile)->ARTICULO)+"' .AND. TABPESOS->PESO>=0 .AND. TABPESOS->PESO<=15" 
        IF !ADSSetAOF(cCad)
            ?"No se realizo el filtro...",cCad
        ENDIF
        DbGoBottom()
    ENDIF
    oBrowPso:GoBottom() 
    oBrowPso:SetFocus()     
    oBrowPso:Refresh()
RETURN .T.


 
Post Reply