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:
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).
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!
- Abra o APSDU, e abra a tabela SX3 da sua empresa (nesse caso vai ser a SX3990)
- Inclua um novo registro no final, aqui iremos chamar de D1_X_TESTE, sendo
- Se atente ao contexto (X3_CONTEXT) que tem que ser R (Real)
- Os campos internos (X3_USADO, X3_RESERV, etc), você pode copiar de algum outro campo que você tenha criado
- E no X3_ORDEM, coloque ele no fim da tabela
- No tamanho do campo, deixe ele com 1 caractere a menos, por exemplo, o nosso campo terá tamanho 50, porém iremos deixar 49
- Feche o APSDU
- Abra o Configurador (SIGACFG), vá em Base de Dados, e abra a tabela para manipulação (nosso caso a SD1)
- Vá no campo que você criou, e clique no botão Editar
- Aumente o tamanho do campo, para o tamanho desejado que era no item 3, então vamos aumentar colocando ele em 50
- Confirme a alteração e efetive no Configurador
- Agora vá no banco de dados, e execute uma query simples, pra ver se o campo foi efetivado
Referências:
Bom pessoal, por hoje é só.
Abraços e até a próxima.