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.
Obrigado pela dica Daniel!!!!
Funcionou perfeitamente!
Como utilizamos SQL Server, não há problema algum.
Opa, nós que agradecemos pelo comentário Victor.
Um grande abraço.
Pessoal, pode ser que muita gente já tenha conhecimento, mas como para mim, o conteúdo que o Dan posta é referência, venho expor que alguns anos a TOTVS implementou uma solução para o limite de campos na SD!, porém só para a SD1 (pelo menos até onde tenho conhecimento). Foi uma colega de trabalho que descobriu a documentação. Seque o link: https://tdn.totvs.com/pages/releaseview.action?pageId=699820173
Bom dia Rafael, tudo joia?
Primeiramente obrigado pelo carinho e gentileza no feedback, é muita bondade sua.
Queremos agradecer também pelo compartilhamento do link e da explicação.
Tenha uma ótima e abençoada quarta feira.
Um forte abraço.