Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

Função: DBEVal

Avalia um bloco de código para cada registro que atenda um escopo definido, através dos blocos de condições "For" e "While".

DBEVal ( < bBloco>, [ bFor], [ bWhile], [ nQuantidadeReg], [ nRegistro], [ lRestante] ) --> Nil

NomeTipoDescriçãoObrigatórioReferência
bBlocoBloco de códigoIndica o bloco de código que será executado para cada registro processado. X
bForBloco de códigoIndica o bloco de código que define o escopo dos registros que serão processados.
bWhileBloco de códigoIndica o bloco de código que define até quando os registros serão processados.
nQuantidadeRegNuméricoIndica a quantidade de registro que será processado a partir do registro atual.
nRegistroNuméricoIndica qual registro será avaliado.
lRestanteLógicoIndica que os demais registros serão processados.
Nil (Nulo)
#DEFINE CRLF Chr(13)+Chr(10)#DEFINE TAB  Chr(09)User Function TDN014()Local aNomes := {}, aSobrenomes := {}, aCampos := {}Local cTabela := ProcName(0) + ".dtc", cDriver := "CTREECDX", cMensagem := ""Local nCount := 0, nLoop := 20//+----------------------------------------------------------------------------+//|Define nomes e sobrenomes aleatórios                                        |//+----------------------------------------------------------------------------+  aNomes := {;    "André"    , "Beto"     , "Carolina" , "Daniela"  , "Edson"    , ;    "Flávia"   , "Gioconda" , "Hugo"     , "Igor"     , "Juliana"  , ;    "Karolina" , "Luciana"  , "Manoel"   , "Nádia"    , "Otaviana" , ;    "Paloma"   , "Quênia"   , "Rafael"   , "Samuel"   , "Taís"     , ;    "Ursula"   , "Valmir"   , "Walter"   , "Xanti"    , "Yasmin"   , ;    "Zilá"     ;    }  aSobrenomes := {;    "Antares"     , "Belavicqua"  , "Cardoso"     , "Dantesco"    , ;    "Ermandes"    , "Fiorentino"  , "Gonçalves"   , "Honda"       , ;    "Itacqua"     , "Junior"      , "Kennedy"     , "Lopes"       , ;    "Marcelino"   , "Norma"       , "Oliveira"    , "Pereira"     , ;    "Rodrigues"   , "Silva"       , "Tavares"     , "Uirapuru"    , ;    "Voltaire"    , "Wada"        , "Xavier"      , "Yoshiota"    , ;    "Zatara"      ;    }//+----------------------------------------------------------------------------+//|Define a estrutura da tabela                                                |//+----------------------------------------------------------------------------+  AAdd(aCampos, {"NOME", "C", 250, 0})  AAdd(aCampos, {"DTNASC", "D", 10, 0})  AAdd(aCampos, {"FILHOS", "N", 10, 0})//+----------------------------------------------------------------------------+//|Remove a tabela e o índice (se necessário)                                  |//+----------------------------------------------------------------------------+  If File(cTabela)    FErase(cTabela)  EndIf//+----------------------------------------------------------------------------+//|Cria a tabela e adiciona alguns registros                                   |//+----------------------------------------------------------------------------+  dbCreate(cTabela, aCampos, cDriver)  USE (cTabela) ALIAS TMP EXCLUSIVE NEW VIA cDriver  For nCount := 1 To nLoop    dbAppend(.T.)    TMP->NOME   := aNomes[Randomize(1, Len(aNomes))] + " " + aSobrenomes[Randomize(1, Len(aSobrenomes))]    TMP->DTNASC := Date() - Randomize(20, 40) * 365    TMP->FILHOS := Randomize(0, 5)  Next nCount  USE//+----------------------------------------------------------------------------+//|Exemplifica o uso da função DBEval                                          |//+----------------------------------------------------------------------------+  USE (cTabela) ALIAS TMP EXCLUSIVE NEW VIA cDriver  nCount := 0  dbEval({||nCount++})  cMensagem += "Quantidade de registros: " + cValToChar(nCount) + CRLF  dbGoTop()  nCount := 0  dbEval({||nCount++}, {||FILHOS > 0})  cMensagem += "Registros com filhos: " + cValToChar(nCount) + CRLF  dbGoTop()  nCount := 0  dbEval({||nCount++}, {||Year(Date()) - Year(DTNASC) > 30 .And. FILHOS > 0})  cMensagem += "Registros com mais de 30 anos e com filhos: " + cValToChar(nCount) + CRLF  dbGoTop()  nCount := 0  dbEval({||nCount++}, {||Year(Date()) - Year(DTNASC) > 30 .And. FILHOS > 0}, , 5)  cMensagem += "Os 5 primeiros registros com mais de 30 anos e com filhos: " + cValToChar(nCount) + CRLF  dbGoTop()  nCount := 0  dbEval({||nCount++}, {||Year(Date()) - Year(DTNASC) > 30 .And. FILHOS > 0}, {||FILHOS > 0}, 5)  cMensagem += "Os 5 primeiros registros se com mais de 30 anos e com filhos (a partir do momento que não encontrar filhos, pare a pesquisa): " + cValToChar(nCount) + CRLF  dbGoTop()  nCount := 0  dbEval({||nCount++}, {||Year(Date()) - Year(DTNASC) > 30 .And. FILHOS > 0}, , , 2)  cMensagem += "O registro 2 com mais de 30 anos " + IIf(NToL(nCount), "", "não ") + "possui filhos " + CRLF  dbGoTop()  cMensagem += CRLF + "Base utilizada: " + CRLF  For nCount := 1 To nLoop    cMensagem += "Idade: " + cValToChar(Year(Date()) - Year(TMP->DTNASC)) + " filhos: " + cValToChar(TMP->FILHOS) + " - " + AllTrim(TMP->NOME) + CRLF    dbSkip()  Next nCount  USE//+----------------------------------------------------------------------------+//|Apresenta uma mensagem com os resultados obtidos                            |//+----------------------------------------------------------------------------+Return MsgInfo(cMensagem, "DBEval - Exemplo")

Exemplo da função DBEval()
Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server

  • Sem rótulos