UPDATE | Início Anterior Próximo

WIEvent UPDATE

O componente WIEvent SELECT consiste na definição de um comando de atualização a ser executado pelo SGBD sendo que o resultado dessa consulta será retornado ao cliente (browser) para manipulação. Para solicitar a execução de um WIEvent e posteriormente manipular os resultados dessa execução o desenvolvedor deverá utilizar os métodos de um objeto WIEvent que deverá ser instanciado na página. Para saber maiores detalhes sobre o funcionamento do WIEvent como um todo clique aqui.
O Auto-Commit indica se um grupo de instruções SQL serão executadas individualmente ou executadas agrupadamente em uma única transação.
Se este campo estiver marcado então todas as instruções serão executados individualmente, ou seja, a execução de uma instrução não influenciará na execução da outra.
Caso o campo não esteja marcado as instruções serão agrupados em uma única transação a ser enviada ao SGBD e ao término da transação um commit será executado para persistir todas as alterações, se ocorrer algum erro durante o processamento da transação um rollback será automaticamente executado revertendo as tabelas para o estado em que se encontravam antes do início da execução da transação.
Um detalhe a ser levado em consideração é que o suporte ao controle de transações depende exclusivamente do sistema gerenciador de banco de dados e/ou da versão do driver JDBC que estejam sendo usados portanto assegure-se disso antes de desabilitar o check-box Auto-Commit.
O campo Banco de Dados indica o identificador de um dos servidores de bancos de dados definidos para o projeto que será usado para executar o comando.
O campo Condição contém a expressão condicional a ser testada para saber se o componente deverá ser processado. Para saber maiores detalhes sobre as possíveis construções de condições clique aqui.
O campo Condição Para Cada Linha define a condição a ser testada antes de que cada iteração do evento Update Múltiplo seja realizada. Caso o desenvolvedor tenha definido o campo Quantidade com 10 então durante as 10 iterações essa condição será testada.
Se este campo for deixado em branco e o desenvolvedor queira utilizar o recurso de update múltiplo a condição será avaliada como FALSE e o Update não será realizado em nenhuma das iterações. Então caso se queira que sempre todos os Updates sejam executados coloque TRUE como sendo a condição desse campo.
O campo Descrição serve para que o desenvolvedor da aplicação escreva um breve comentário sobre a ação a ser executada pelo componente em questão.
O campo Filtrar define quais os caracteres que deverão ser filtrados do conteúdo das variáveis de sessão do WebIntegrator que estão sendo referenciadas no campo SQL antes da execução do comando. O objetivo é impedir que certos caracteres sejam passados para o comando a ser executado pelo banco de dados evitando assim que o resultado do comando não seja intencionalmente alterado.
Como exemplo suponha que haja a instrução SELECT * FROM tabCadastros WHERE nome LIKE |tmp.nome|% AND publico = 1 e o usuário da aplicação ao preencher o formulário coloque no campo correspondente à variável tmp.nome um valor como % OR nome = . Se o campo Filtrar não estiver definido com os caracteres % e o WebIntegrator irá processar a seguinte instrução SELECT * FROM cadastros WHERE nome LIKE % OR nome = % AND publico = 1 retornando como resultado todos as linhas da tabela.
O campo Identificador serve para que o desenvolvedor entre com um identificador único para o componente de página ou de projeto que está sendo definido. Será através desse identificador que o componente e/ou seus valores serão referenciado nas páginas do projeto.
A depender do componente que se estiver definindo para que o mesmo seja referenciado numa página será necessário o acréscimo de um prefixo como é o caso dos componentes Grid e Combo, nesses dois casos é obrigatório o uso dos prefixos grid. e combo. antes dos respectivos identificadores para que o conteúdo correto seja exibido.
O campo Mensagem OK define a mensagem que será gravada no objeto definido no campo Resposta (objeto) caso o evento tenha sido executado com sucesso. Quando se usa o recurso de update múltiplo é gerada uma mensagem para cada iteração do evento, para obter a mensagem específica de um dos passos da iteração use a seguinte sintaxe:
<objeto-resposta>.<passo-da-iteração>
Por exemplo, para acessar o segundo passo de uma iteração de um update múltiplo cujo objeto-resposta seja tmp.respObj bastaria refenciar |tmp.respObj.2|.
O campo Prefixo indica qual o prefixo comum dos nomes dos campos do formulário que serão usados durante a execução do componente Update. Esse prefixo irá auxiliar o recurso de update múltiplo a descobrir quais as variáveis que estão no contexto do WebIntegrator que serão usadas durante a iteração.
Para um correto funcionamento do recurso de update múltiplo os nomes dos campos do formulário referenciados pelo componente Update devem estar da seguinte forma:
<prefixo><1..quantidade>.<identificador-do-campo>
Para oferecer compatibilidade com a sintaxe de Objetos o desenvolvedor poderá definir o prefixo finalizando com []. Com o prefixo terminando com [] se está informando ao WebIntegrator que as variáveis do contexto do WebIntegrator a serem utlizadas pelo update múltiplo estão na seguinte forma:
<prefixo>[<1..quantidade>].<identificador-do-campo>
Com esta última forma o desenvolvedor poderá fazer uso de resultados armazenados em um Objeto diretamente em update múltiplo.
O campo Quantidade define quantas linhas serão exibidas por página. Caso o número de linhas retornadas seja maior que a quantidade definida o usuário poderá fazer uso da propriedade link (|grid.<identificador-do-grid>.link|) que gerará uma barra de navegação com links para acessar as próximas linhas ou retornar às linhas anteriores.
O campo Resposta (objeto) indica o nome do objeto que receberá uma das mensagens definidas para o componente de acordo com o resultado final (sucesso/falha) da execução do comando enviado ao banco de dados.
O campo SQL contém o comando que será enviado para ser processado pelo banco de dados. Caso o comando seja composto por mais de uma instrução SQL separe-as por ponto-e-vírgula.
No componente Upload de Banco de Dados o valor da coluna relativo ao conteúdo deverá ser referenciado por um sinal de interrogação, exemplo: INSERT INTO MinhaTabela (arquivo, conteudo) VALUES (|tmp.arquivo|, ?).
A estrutura do comando a ser executado é dependente do banco de dados, podendo ser feitas chamadas a stored procedures, rotinas M (através do MJava), métodos de objetos do CachéFactory, execução de instruções SQL, etc. Para saber maiores detalhes como fazer essas chamadas clique aqui.