Galera .. estou com uma função aqui .. preciso saber como faço para mudar a linha de um tbrowser conforme a condição de uma outra tabela .... por exemplo estou no cadastro de cliente e quero pintar todos os cliente que tenham conta atrasadas .. até consegui fazer, porem fica muito lento em rede ...
Código: Selecionar todos
local Regra := "CLIENTES_EM_ATRASO() == 'S'"
calias := "cli"
nordem := "clicx_02"
DB_CLI := WIN(03,01,22,78, "* * REGISTRO DE CLIENTES * *", WT_VERM1BRANCO, WD_VERM1BRANCO)
DB_CLIENTE( aCab, aCamp, aPict, cAlias, nOrdem, Regra)
return nil
*----------------------------------------------------------------*
function DB_CLIENTE( aCab, aCamp, aPict, cAlias, nOrdem, Regra )
*----------------------------------------------------------------*
local oTAB, oCol, nKey, nRow, nCol, cTela, cArea
local OLDREC, OBROWSE, OCOLUNA, PESQUISA, v_atraso
select( cAlias )
set order to nOrdem
go top
setcursor(0)
cArea := savescreen( 00, 00, 24, 79 )
X:=aCamp[2]
oTab := TBrowseDB( 05, 02, 21, 77 ) // GERA UM TBROWSE
oTab:colsep := CHR(179)
oTab:headsep := CHR(194)+CHR(196)
oTab:footsep := CHR(193)+CHR(196)
oTab:ColorSpec := "N/W*, W+/B+, R+/W*, R+/N+, GR+/N, B+*/W, R+*/W, GR*/W*"
oTab:SkipBlock := {| nSkip | dbSkipBlock( nSkip, oTab ) }
for i = 1 TO len(aCamp)
if valtype(aCamp[I]) == "B"
oCol:=TBcolumnNew( aCab[I], ( aCamp[I] ) )
oCol:Picture:=aPict[I]
else
oCol:=TBcolumnNew( aCab[I], FIELDWBLOCK( aCamp[I], SELECT()))
oCol:Picture:=aPict[I]
endif
If Regra # Nil
oCol:ColorBlock:={|X| If(&(Regra),{3,4},{1,2})}
EndIf
oTab:addColumn( oCol )
next
nCol_Reg := (oTab:nRight-oTab:nLeft+2) / len(aCamp) // Para iluminar o TBrowser
oTab:Freeze := 2 // Definindo Coluna fixa
oTab:ColPos := 1
do while .T.
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{})
do while !oTab:Stabilize() ; enddo
[b]IF CLIENTES_EM_ATRASO() == 'S' [/b]
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{4,5})
else
oTab:colorRect({oTab:RowPos,1,oTab:RowPos,oTab:ColCount},{2,5})
endif
oTab:hilite()
setpos( nRow, nCol )
//nKey := inkey(0)
nKey := Inkey( 0, HB_INKEY_ALL )
........
// função q vasculha os contas a receber
Código: Selecionar todos
*-----------------------------*
Function CLIENTES_EM_ATRASO() // BUSCA CLIENTES EM ATRASO
*-----------------------------*
LOCAL v_atraso := "N"
IF RECEBER->(ORDSETFOCUS("RECCX_15"),DBSEEK(CLI->cc_codcli))
IF RECEBER->cc_receb = ' ' .and. RECEBER->cd_dtvenc < date()
v_atraso := "S"
ENDIF
ENDIF
return(v_atraso)
se alguém puder me ajudar a dar uma enxugada nisso agradeço! sinceramente não sei se do jeito q fiz é a jeito certo ... localmente funciona bem .. porem em rede fica complicado !! rsrs
Abraço!
Windows 11 + Harbour 3.2 + MINGW64 gcc 14.1.0 + Visual Lib + GTWVG + LETODBF WINDOWNS/LINUX