Árvore de páginas

Esta função permite ligar/desligar a visibilidade lógica de um campo (ou coluna) de um determinado alias no AdvPL

Sintaxe

 

NIL := DBSetActFld( <cCampos> , <lAtivo> )

Parâmetros

NomeTipoDescriçãoObrigatórioReferênciaObservações
cCamposCaractere

Um ou mais nomes de campos, separados por virgula, para serem habilitados ou desabilitados, ou "*" (asterisco) para referenciar todos os campos.

SNApenas os campos especificados terão seu status de ativo/inativo afetados pela chamada da função. Os status dos demais campos permanece inalterado.
lAtivoLógico

.T. indica que os campos informados estão ativos, visíveis.

.F. indica que os campos informados estão inativos, sem visibilidade.

SN 

Retorno

NomeTipoDescriçãoObservações
NILNulo

Esta função sempre retorna NIL 

A partir da Build 7.00.131227A, com data de geração superior a 05/10/2016, o retorno passa a ser um valor numérico, indicando quantos campos tiveram sua visibilidade afetada ao executar a instrução.

Observações

A visibilidade de campos altera a estrutura lógica do alias na memória. Ao desabilitarmos um campo, ele deixa de ser retornado pela função DbStruct(), deixa de ser contabilizado pela função FCount(), deixa de ser localizado pela função FieldPos(), é como se o campo simplesmente deixasse de existir.

Se um programa AdvPL tentar ler diretamente um campo inativo, usando a sintaxe alias->campo, o campo será lido, mas será gerada uma mensagem de advertência no log de console do TOTVS | Application Server.

Caso a aplicação tente realizar um REPLACE de um campo desabilitado(alterar o conteúdo do campo), a aplicação AdvPL será interrompida com a ocorrência de erro "Invalid Field assign : Field <ccampo> not active", onde cCampo indica o nome do campo que tentou ser acessado. 

Esta função está disponível a partir da build 7.00.131227A , com data de geração superior a  

Exemplo 

user function exemplo()
  TCLink()
  DBUseArea(.T., "TOPCONN", "SA1990", "SA1", .T.)

  Conout(FieldPos("A1_NOME")) // mostra a posicao do campo na estrutura

  DBSetActFld("*",.F.) // desabilita todos os campos
  Conout(FieldPos("A1_NOME")) // o campo não está visível, então mostra 0 (zero)

  DBSetActFld("A1_NOME",.T.) // habilita apenas o campo A1_NOME
  Conout(FieldPos("A1_NOME")) // mostra a posicao do campo na estrutura

  DBSetActFld("*",.T.) // Habilita todos os campos novamente
return

Veja também

DBGetActFld

  • Sem rótulos