Where no assistente de crud vazio no script de atualização

Contexto

Para otimizar o desenvolvimento na plataforma LATROMI, implementamos o Assistente de CRUD, um recurso que permite selecionar tabelas e mapear campos de forma intuitiva.

Embora a ferramenta facilite as operações de criação e atualização, identificamos um ponto de atenção: ao configurar uma atualização, se o campo identificador não for explicitamente definido na lista de campos, a cláusula WHERE da instrução SQL será gerada vazia — mesmo que o identificador já esteja definido na aba de parâmetros. Consequentemente, ao executar o objeto gerado pelo assistente, o sistema retornará uma exceção de sintaxe, impedindo a conclusão da operação.

Como simular

Para simular esse é necessário ter uma tabela criada para usar no Assistente de CRUD:

  1. Selecione a tabela alvo.
  2. Informe as colunas da consulta.
  3. Informe as colunas do formulário, porém remova os campos PKs.
  4. Avança e edite o formulário gerado.
  5. Abra o comando SQL de atualização gerado.

Solução

Com base no comportamento observado, a falha provavelmente reside na lógica de criação da coleção WHERE no projeto core. Atualmente, a construção dessa cláusula parece depender da lista de campos, quando o correto seria utilizar a lista de parâmetros como base.

1. Correção Principal: Ajustar a lógica de construção da coleção WHERE para que utilize exclusivamente a lista de parâmetros como referência para a geração das condições.

2. Validação e Correção Secundária (Fluxo de Segurança): Considerando os cenários de uso do Assistente de CRUD, é necessário validar o comportamento do sistema após a correção principal caso o usuário não configure uma lista de parâmetros. Se o resultado for a geração de um comando UPDATE com WHERE vazio ou totalmente ausente, deve-se implementar o seguinte fluxo de proteção:

O Assistente deve emitir um alerta informando que a configuração resultará em um comando de atualização incorreto, oferecendo ao usuário a opção de prosseguir ou cancelar:

  • Opção “Sim” (Prosseguir): O assistente deve converter a operação para um formulário exclusivamente de Criação (Insert), ignorando a atualização.
  • Opção “Não” (Cancelar): O usuário permanece na tela de configuração para realizar os ajustes necessários e corrigir a lista de parâmetros.

Esta abordagem garante que o desenvolvedor tenha total controle sobre o comportamento do objeto gerado, evitando exceções em tempo de execução.