Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/3279126062824/newLayouttecnologia.css |
Portuguese |
Pagetitle |
---|
...
|
...
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
|
Avalia um bloco de código para cada registro que atenda um escopo definido, através dos blocos da primeira e segunda condição.
Sintaxe
Bloco de código | ||
---|---|---|
| ||
DBEval( < bBlock >, [ bFirstCondition ], [ bSecondCondition ], [ nCount ], [ nRecno ], [ lRest ] )
|
Parâmetros
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
...
bBlock |
...
bloco de código | Indica o bloco de código que será executado para cada registro processado. | X |
...
|
...
bFirstCondition |
...
bloco de código |
...
Primeiro Code Block com condição para inserir registro. |
|
| ||
bSecondCondition | bloco de código | Segundo Code Block com condição para inserir registro. |
|
|
nCount | numérico | Numero maximo de registros a ser processado. |
|
|
nRecno | numérico | Unico registro a ser processado. |
|
|
lRest | lógico | Indica que os demais registros serão processados. |
|
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
uRet | nil | Sempre retorna nulo. |
Exemplos
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
FUNCTION Example()
Local cT1 = 'T1'
Local cT2 = 'T2'
TCLink()
DBCreate("T1", {{"FIELD_NAME", "C", 10, 0}, ;
Nil (Nulo) |//+----------------------------------------------------------------------------+ AAdd(aCampos, {"NOME{"FIELD_TYPE", "C",250 10, 0}) AAdd(aCampos, {"DTNASC", "D", 10, 0 } ) AAdd(aCampos, {"FILHOS", "N", 10, 0})//+----------------------------------------------------------------------------+//|Remove a tabela e o índice (se necessário)"TOPCONN")|//+----------------------------------------------------------------------------+ 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
DBUseArea(.F., 'TOPCONN', cT1, (cT1), .F., .F.)
(cT1)->( DBAppend( .F. ) )
(cT1)->FIELD_NAME := "Jose"
(cT1)->FIELD_TYPE := "string"
(cT1)->( DBCommit() )
(cT1)->( DBAppend( .F. ) )
(cT1)->FIELD_NAME := "Maria"
(cT1)->FIELD_TYPE := "string"
(cT1)->( DBCommit() )
DBCloseArea()
DBUseArea(.F., 'TOPCONN', cT1, (cT1), .F., .F.)
//imprimi 2 vezes o valor "teste" no console
DBEval({ || conout("teste")})
DBCloseArea()
TCUnlink()
RETURN
|