Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/3279126062824/newLayouttecnologia.css |
Portuguese |
Pagetitle | ||||
---|---|---|---|---|
|
Função: FieldBlock
Retorna
...
um
...
bloco
...
de
...
código
...
para
...
um
...
determinado
...
campo
...
da
...
tabela
...
corrente.
Sintaxe
Bloco de código | ||
---|---|---|
| ||
FieldBlock( <cCampo> ) --> bRet cField > )
|
Parâmetros
...
Nome | Tipo | Descrição | Obrigatório | Referência |
---|
...
cField |
...
caractere | Indica o nome do campo que será retornado o bloco de código. | X |
|
Retorno
Nome | Tipo | Descrição |
---|---|---|
bRet |
...
bloco de código | Retorna o bloco de código para o campo especificado |
...
no alias atual. |
Observações
Essa função é utilizada para retornar um bloco de código executável com o campo especificado.
Quando o bloco de código resultante é executado sem parâmetro, recupera o valor armazenado no campo. Mas, quando executado com um valor,
...
define esse valor no determinado campo.
Portanto, o bloco de código retornado é similar a:
Bloco de código | ||||
---|---|---|---|---|
| ||||
&( "{ | Valor |IF IIf( Valor ==NIL Nil, Campo, Campo := Valor ) }" ) |
Sendo:
Campo =
...
Parâmetro da função FieldBlock
...
Valor = Valor executado no bloco de código
Caso haja erro na criação do bloco de código, o programa será encerrado com ocorrência de erro recuperável "CodeBlock definition error" e retornará Nil.
Caso o nome informado não exista no alias aberto, o bloco de código será criado, mas ocorrerá erro na execução do mesmo.
Exemplos
O exemplo abaixo utiliza a RDD "TOPCONN", mas a função pode ser utilizada com qualquer uma das RDDs válidas.
Bloco de código | |||||||||
---|---|---|---|---|---|---|---|---|---|
|
| ||||||||
user function test1()
Local nHandle1 := TCLink( "MSSQL/DSN1", "127.0.0.1", 7890 )
Local cTable1 := "MYTABLE"
Local cRDD := "TOPCONN"
Local aStruct := {}
Local aBlocks := {}
Local aValues := {}
Local nI := 0
Local nJ := 0
Local nLen := 0
Local nRecs := 0
Local xValue
// Cria a tabela
DBCreate( cTable1, { { "CPOC", "C", 10, 0 }, ;
{ "CPON", "N", 3, 0 }, ;
{ "CPOD", "D", 8, 0 }, ;
{ "CPOL", "L", 1, 0 }, ;
{ "CPOM", "M", 20*1024, 0 } }, cRDD )
// Abre a tabela 1 em modo exclusivo criando uma área de trabalho
DBUseArea( .T., cRDD, cTable1, (cTable1), .F., .F. )
// Pega a estrutura da tabela
aStruct := DBStruct()
nLen := Len( aStruct )
// Pega um codeblock para cada campo do tabela passando o nome do campo
for nI := 1 to nLen
AAdd( aBlocks, FieldBlock( aStruct[nI][1] ) )
next nI
// Define os valores dos registros que serão inseridos
AAdd( aValues, { "AAA", 123, Date(), .T., Replicate( "A", 20*1024 ) } )
AAdd( aValues, { "BBB", 321, Date() + 10, .F., Replicate( "B", 20*1024 ) } )
nRecs := Len( aValues )
// Insere os registros
for nI := 1 to nRecs
DBAppend( .F. )
// Faz o Eval do bloco de código informando o valor
// Isso irá fazer a atribuição do valor ao campo
for nJ := 1 to nLen
Eval( aBlocks[nJ], aValues[nI][nJ] )
next nJ
DBCommit()
next nI
// Vai para o primeiro registro
DBGoTop()
while !eof()
// Exibe o conteúdo de cada campo do registro
for nI := 1 to nLen
conout( Eval( aBlocks[nI] ) )
next nI
DBSkip()
enddo
// Fecha a área de trabalho
DBCloseArea()
// Apaga a tabela no SGBD
TCDelFile( cTable1 )
// Desconecta
TCUnlink( nHandle1 )
return
|