Função Processa


Régua de processamento simples, com apenas um indicador de progresso, utilizada no processamento de rotinas. Exemplo de como fazer barra de progresso, para ilustrar processos mais longos. Para isto, use as funções Processa, Procregua e Incproc.

#include "rwmake.ch"

user function fFuncao1()
    cRBSFQSQL := changequery("SELECT COUNT(A1_COD) AS NREGISTRO FROM SA1010 WHERE A1_NOME LIKE 'A%'")
    dbusearea(.t., 'TOPCONN', tcgenqry(,,cRBSFQSQL), 'TMPSA1', .f., .t.)
    if .not. TMPSA1->(eof())
        processa( {|| u_fFuncao2( TMPSA1->NREGISTRO ) }, "Titulo", "Processando aguarde...", .f.)
    endif
    dbclosearea("TMPSA1")
return nil


user function fFuncao2(nRegistros)
    local cRegistros := ""
    procregua(nRegistros)

    cRBSFQSQL := changequery("SELECT A1_COD, A1_NOME FROM SA1010 WHERE A1_NOME LIKE 'A%'")
    dbusearea(.t., 'TOPCONN', tcgenqry(,,cRBSFQSQL), 'TMPSA2', .f., .t.)

    if .not. TMPSA2->(eof())
        do while .not. TMPSA2->(eof())
            cRegistros := cRegistros + TMPSA2->A1_COD + " | " + alltrim(TMPSA2->A1_NOME) + chr(10)
            incproc("Concatenando...")
            TMPSA2->(dbskip())
        enddo

        @ 0, 0 to 300, 550 dialog oDial title "RESULTADO"
        oRBSFMemo := tMultiget():new(5,5,{|u|if(pcount()>0,cRegistros:=u,cRegistros)},oDial,260,100,,,,,,.t.,,,,,,.t.)
        @ 110, 240 bmpbutton type 1 action close(oDial)
        activate dialog oDial centered
    endif

    dbclosearea("TMPSA2")
return nil