Olá gostaria de saber como posso em advpl sabe se o campo S_T_A_M_P está na base de dados pois o fieldpos não funcionou
Att.
Olá gostaria de saber como posso em advpl sabe se o campo S_T_A_M_P está na base de dados pois o fieldpos não funcionou
Att.
Vinicius, você pode usar a função TcSqlExec para executar um comando SQL buscando o campo. Caso o comando dê erro, você saberá que aquele campo não existe.
Exemplo:
nResult := TcSqlExec('SELECT TOP 1 S_T_A_M_P_ FROM ' + RetSqlName('SF1'))
If(nResult < 0)
ConOut('Campo S_T_A_M_P_ não existe na tabela ' + RetSqlName('SF1') + '.')
Else
ConOut('Campo S_T_A_M_P_ existe na tabela ' + RetSqlName('SF1') + '!')
EndIf
preciso de uma solucao interna mesmo da totvs, não posso fazer 1 versão para cada banco pra verificar isso, quem sabe não tem alguma fw da vida
Olá,
O campo S_T_A_M_P_ é um campo reservado do DBAccess, por isso o FieldPos não enxerga o mesmo, ele segue o mesmo conceito do campo R_E_C_N_O_.
Um possibilidade é utilizar a função TCStruct, que retorna a estrutura real da tabela do SGBD, permitindo assim você ver todos os campos da tabela, inclusive os campos reservados.
A TCStruct é semelhante a DBStruct, a diferença é que a DBStruct baseia-se na workarea padrão do Protheus, já a TCStruct lê diretamente o banco.
Documentação: https://tdn.totvs.com/display/tec/TCStruct
Boas práticas sobre essa coluna que tem diversos links sobre essa implementação:
https://tdn.totvs.com/pages/viewpage.action?pageId=563943271
obrigado daniel