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.
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
— VINICIUS GATI 28 de Apr de 2023Vinicius, 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
— VINICIUS GATI 28 de Apr de 2023