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
Nome | Tipo | Descrição | Obrigatório | Referência |
bBloco | Bloco de código | Indica o bloco de código que será executado para cada registro processado. | X | |
bFor | Bloco de código | Indica o bloco de código que define o escopo dos registros que serão processados. | ||
bWhile | Bloco de código | Indica o bloco de código que define até quando os registros serão processados. | ||
nQuantidadeReg | Numérico | Indica a quantidade de registro que será processado a partir do registro atual. | ||
nRegistro | Numérico | Indica qual registro será avaliado. | ||
lRestante | Lógico | Indica 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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas