Erro no CodeAnalyse

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.