FieldBlock
Retorna um bloco de código para um determinado campo da tabela corrente.
Sintaxe
FieldBlock( < 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:
&( "{ | Valor | IIf( Valor == 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.
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