Selecionar campos para enviar no comando update

Estou trabalhando em um formulário baseado em uma tabela que tem mais de 40 campos.
Vários desses campos são desabilitados para atualização.
Mesmo assim, quando eu pressiono o botão para Salvar Alterações, ele coloca todos os campos no comando update. Até mesmo aqueles que não podem ser alterados e estão desabilitados para alteração.
Não tem alguma forma de dizer para o scriptcase não incluir esses campos no comando UPDATE? Eu pensei em desclicar o flag “Atualização” do campo lá em “Editar Campos”. Mas se eu fizer isso, o campo nem aparece na tela quando estou alterando.
Alguém conhece uma forma de configurar os campos que são enviados no comando UPDATE?

Via SC não tem como. Uma possibilidade seria você criar um botão do tipo PHP pra substituir o botão SALVAR e colocar o UPDATE como você deseja. Mas por que você quer que o UPDATE somente salve alguns campos?

1 Curtida

Uma das razões é que em algumas tabelas eu tenho auditoria onde fica a informação de alteração do campo. Daí eu não queria que ficasse registrado que o usuário alterou todos os campos da tela, quando na verdade ele alterou apenas um campo, por exemplo.
Entendi a solução. Talvez eu tenha que fazer isso mesmo.

Olá, @mauricio_cardoso

Tudo tranquilo?

@Kleyber deu uma ótima sugestão.

Mas se ainda assim isso não resolver seu problema, uma alternativa seria a manipulação da lista de campos do update. Pra isso, você precisaria gerar uma aplicação de formulário e então verificar o código-fonte da aplicação na pasta “/app”, que é uma pasta que armazena tudo que foi gerado pelo projeto, inclusive o código-fonte.

Lá, você deve procurar pelo comando update para entender como ele esta montando a query e tratando a lista de campos.

A propósito, publicamos um artigo mostrando como funciona a estrutura de pastas do Scriptcase. Se quiser, dá uma conferida: :smile:

Uma vez entendendo como o update está sendo feito, você pode trabalhar no tratamento dessa modificação no Scriptcase, no evento BeforeUpdate e com a macro sc_exec_sql, por exemplo.

Outra alternativa seria trabalhar com campos virtuais no lugar dos campos que você não quer alterar. Bastaria fazer um lookup para exibir os valores dos campos desejados e desabilita-los depois.

Se precisar de uma ajuda estamos aqui.

Grande abraço!!

1 Curtida

Avaliar o código fonte não vai ajudar você a mudar o comportamento da aplicação de formulário. Não perca seu tempo com isso.

Mesmo não usando o botão salvar do formulário e criando um botão próprio para salvamento o formulário irá ler todos os campos e criará atributos e tratamentos internamente para todos eles.

Minha sugestão.

Criar app de controle com campos desejados para update.
No evento onvalidate success vc realiza seu update ou insert.
No evento onload caso seja edição você le os campos desejados através da macro sc_lookup e alimenta os campos criados manualmente.
Crie uma grid em cima dessa tabela e link os registros a controle passando como parâmetro o id do registro. Na grid crie um botão de ligação para novo registro passando 0 com parâmetro de id.
Na controle, evento onload vc avalia se [var_id] == 0 é inserção, caso contrário é edição.

2 Curtidas