Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/3279126062824/newLayouttecnologia.css
Portuguese

Pagetitle

...

DBEval

...

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

DBEval

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
collapsefalse
DBEval( < bBlock >, [ bFirstCondition ], [ bSecondCondition ], [ nCount ], [ nRecno ], [ xRest ] )

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.

 

 

xRest

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
languagecpp
themeEclipse
linenumberstrue
collapsefalse
FUNCTION Example()

  Local cT1 = 'T1'
  Local cT2 = 'T2'
  
  TCLink()
  
  DBCreate("T1", {{"FIELD_NAME", "C", 10, 0}, ;
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
{"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()
Image Removed
Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server
Manipulação do bloco de código

  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

Veja também