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 nLen := 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 do registro AAdd( aValues, { "AAA", 123, Date(), .T., Replicate( "B", 20*1024 ) } ) // Insere um registro DBAppend( .F. ) // Faz o Eval do bloco de código informando o valor // Isso irá fazer a atribuição do valor ao campo for nI := 1 to nLen Eval( aBlocks[nI], aValues[nI] ) next nI DBCommit() // Vai para o primeiro registro DBGoTop() // Exibe o conteúdo de cada campo do registro for nI := 1 to nLen conout( Eval( aBlocks[nI] ) ) next nI // Fecha a área de trabalho DBCloseArea() // Apaga a tabela no SGBD TCDelFile( cTable1 ) // Desconecta TCUnlink( nHandle1 ) return