Como criar campos em uma tabela que já passou do limite

No artigo de hoje, vamos demonstrar como criar um campo quando uma tabela passa do limite no Protheus.

Digamos que você tem uma tabela, e ela passou de 350 campos, ai você tenta criar mais um campo via Configurador, e aparece uma mensagem dizendo “A quantidade limite de campos foi completada para esta tabela. É necessário revisar a estrutura de dados para adequar a quantidade máxima de 350 campos por tabela.”, conforme print abaixo:

Mensagem dos 350 campos

Mas se nós consultarmos por exemplo, documentações em bancos de dados, como o SQL Server, vemos que o limite de campos de uma tabela é bem superior a esse (nesse caso 1.024 campos).

Limite de campos no SQL Server

No link da Central de Atendimento (mais abaixo em referências), é citado que é devido limitações internas do Protheus. A minha suposição é que deva ser algo de compatibilidade com bancos mais antigos como Ctree ou DBF.

O indicado é você criar uma nova tabela e vincular a sua. Mas existem casos (como a famosa SD1), que apenas 1 campinho a mais ali, iria ajudar bastante em customizações.

Até o momento que estou escrevendo esse artigo (Julho / Agosto de 2023), a X31UpdTable ainda funciona, então para quem é mais habituado, daria para criar o campo na SX3 e rodar a X31UpdTable para efetivar o campo no SQL. Mas o nosso tutorial será diferente, sem utilizar a execução da X31UpdTable.

Mais uma vez pessoal, o indicado é criar uma tabela apartada onde você grave as informações vinculando com a tabela que excedeu os campos. Porém, se você realmente precisar, pode seguir o passo a passo abaixo.

Atenção: Faça o procedimento em modo exclusivo, ou seja, sem ninguém estar com o Protheus aberto!

  1. Abra o APSDU, e abra a tabela SX3 da sua empresa (nesse caso vai ser a SX3990)
  2. Inclua um novo registro no final, aqui iremos chamar de D1_X_TESTE, sendo
  3. Se atente ao contexto (X3_CONTEXT) que tem que ser R (Real)
  4. Os campos internos (X3_USADO, X3_RESERV, etc), você pode copiar de algum outro campo que você tenha criado
  5. E no X3_ORDEM, coloque ele no fim da tabela
  6. No tamanho do campo, deixe ele com 1 caractere a menos, por exemplo, o nosso campo terá tamanho 50, porém iremos deixar 49

Incluindo o campo via APSDU na SX3

  1. Feche o APSDU
  2. Abra o Configurador (SIGACFG), vá em Base de Dados, e abra a tabela para manipulação (nosso caso a SD1)
  3. Vá no campo que você criou, e clique no botão Editar

Acessando o campo via Configurador

  1. Aumente o tamanho do campo, para o tamanho desejado que era no item 3, então vamos aumentar colocando ele em 50

Aumentando o tamanho do campo

  1. Confirme a alteração e efetive no Configurador

Salvando a estrutura

  1. Agora vá no banco de dados, e execute uma query simples, pra ver se o campo foi efetivado

Verificando o campo criado

Referências:

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

2 Responses

  1. Victor Sousa disse:

    Obrigado pela dica Daniel!!!!
    Funcionou perfeitamente!
    Como utilizamos SQL Server, não há problema algum.

Deixe uma resposta

Terminal de Informação