Boa tarde a todos
Estou colocando alguns fontes para validar no codeanalyse, pq tenho que passar o dicionario pro branco, mas me deparei com alguns problemas, dentre eles esta o fonte abaixo.
For x := 1 to Len(aCampos)
DbSelectArea("SX3")
DbSetOrder(2)
DbGotop()
If MsSeek(aCampos[x])
If X3USO(X3_USADO)
Aadd(aCabecalho, {;
TRIM(X3_TITULO) ,; //X3Titulo()
X3_CAMPO ,; //X3_CAMPO
X3_PICTURE ,; //X3_PICTURE
X3_TAMANHO ,; //X3_TAMANHO
X3_DECIMAL ,; //X3_DECIMAL
X3_VALID ,; //X3_VALID
X3_USADO ,; //X3_USADO
X3_TIPO ,; //X3_TIPO
})/
X3_ARQUIVO ,; //X3_F3
X3_CONTEXT ; //X3_CONTEXT/
Endif
Endif
Next
Return
Como podem ver usava o SX3 para criar uma matriz. Pergunta alguém teria uma solução pra isso?? Pq o o codeanalyse não tem
José, nesse seu caso pelo que entendi é algum objeto MsGetDados, montando um aHeader. Esse objeto está descontinuado. O ideal é mesmo converter a sua tela para usar objetos MVC ou o FwFormBrowser (tem exemplos aqui no fórum). Sei que é um processo mais trabalhoso, mas o programa vai ter mais longevidade usando componentes mais novos.
Como alternativa até daria para carregar os dados usando uma query, porém não conheço tratamento para o X3Uso() quando for uma query.
Agradeço dr, mas o problema era ter que usar o SX3, pois o codeanalyse da erro se vc usar qualquer tabela do dicionario.
Olá,
Se seu código tinha o intuito de criar o aHeader
de componentes como a MsGetDados
, que trabalha junto com a aCols
, existe uma função específica para isso chamada FillGetDados
, ela tem exatamente essa responsabilidade, de criar as variáveis aHeader
e aCols
respeitando todas as regras de dicionários, como a de campos em uso e recebe uma quantidade vasta de parâmetros para que seja possível restringir campos e todas as peculiaridades que cada rotina possui.
Recomendo você a refatorar o fonte e verificar a possiblidade de convertê-lo para MVC, pois existem inúmeros ganhos, como pontos de entrada, eventos, APIs etc.
Documentação: https://tdn.totvs.com.br/display/public/framework/FillGetDados
Agradeço Daniel pela sua ajuda, mas nesse momento não tenho como rever esses fontes com esses problemas. Por isso usei a solução abaixo.
Bom dia a todos
Em outro forum me passaram essa função GetSx3Cache() a qual funcionou muito bem. Grato pela resposta de todos.