Skip to end of metadata
Go to start of metadata

Em uma situação bem específica, a regra de negócio de seu sistema pode necessitar que os valores inseridos em banco sejam alterados logo em seguida. Veremos como fazer isso e porquê não podemos usar o bloco "Enviar Fonte de dados" para essa função.

Esse processo será feito de forma manual: inserção de um registro no banco, obtenção do seu identificador e atualização do mesmo.

Pré-requisitos

Antes de começar a seguir os passos do tutorial é preciso ter certeza de que se tem um ambiente minimamente preparado para reproduzir o exemplo. Abaixo estão os requisitos principais.

Requisitos:

  1. Projeto do tipo web criado. Caso haja dúvidas de como criar esse tipo de projeto acesse o link (Criando Projeto Web).
  2. Criar uma classe no diagrama com atributos (exemplo: Id, nome e cargo), gerar persistência e CRUD. Acesse o link para mais detalhes (Geração da camada de dados a partir do diagrama)
    Configuramos a chave primária (primary key) da tabela como Identity.

Visão geral: exemplo

Para esse mini tutorial usaremos um CRUD já criada (pré-requisitos, passo 2) para fazer a inserção e atualização dos dados. Na tela de cadastro, o usuário irá inserir seu nome e após confirmar a inserção, o cargo do usuário será atualizado para "Analista de Teste" (exemplo de cargo) automaticamente, sem ação direta do usuário. (Figura 1)


Figura 1 - Resultado do tutorial.

Passo a passo

A forma mais fácil de inserir um novo registro em um formulário é utilizando o bloco "Enviar Fonte de dados" (Figura 2). Porém, esse é um bloco assíncrono, ou seja, ele é executado em paralelo com os blocos que o seguem abaixo. Isso inviabiliza uma atualização na mesma ação da inserção, pois pode ocorrer da atualização do registro ser solicitada antes da inserção do mesmo, já que ambos estão sendo executados lado a lado.

Observação

Lembramos que ao gerar um CRUD, o procedimento de inserção é criado automaticamente. A configuração que abordamos nesse tutorial se aplica somente a casos bem específicos de atualização de um dado durante a inserção do mesmo.

 


Figura 2 - Bloco Enviar Fonte de dados


Para contornar essa situação, vamos necessitar de 3 funções: 1 lado cliente que chamará as 2 do lado servidor (inserção e atualização no banco de dados). Poderíamos utilizar uma única função do lado servidor, mas para deixar o exemplo mais didático, estamos criando funções com objetivos únicos.

1. Funções do lado servidor

Crie uma função de bloco de programação (Criação da Função bloco de programação) e insira um parâmetro (nas configurações do bloco da função) nomeando-o para "nome", onde será passado o nome do funcionário. 

Arraste o bloco Inserir (Categoria Banco de dados), clique no ícone de configuração desse bloco e ajuste a inserção como na Figura 4. Após isso, passe a variável que estamos recebendo via parâmetro da função. (Figura 3)


Figura 3 - Bloco Inserir dados no banco.


Arraste os blocos: "definir variável" (Categoria variável), "na lista" (Categoria Listas) configurando para obter o primeiro registro da lista da consulta que faremos ao banco e o bloco "Abrir consulta" (Categoria banco de dados) configurando-o como na Figura 5.

Observação

Como estamos utilizando o ID da tabela configurado para o tipo "Identity" (Integer), vamos obter o último valor inserido utilizando a função MAX do SQL.


Por fim, insira a variável que recebe o primeiro item da lista da consulta no retorno da função. (Figura 3)

Figura 4 - Configuração do bloco Inserir.



Figura 5 - Configuração do bloco Abrir consulta
 

 

Próximo passo é criar uma outra função do lado servidor para atualizarmos o dado no banco, como fizemos anteriormente, adicionando um parâmetro chamado "chavePrimaria" que será o ID do registro que iremos atualizar.

Arraste o bloco "Atualizar" (Categoria Banco de dados), configure esse bloco como na figura 6. No campo "cargo" informe um valor fixo (um cargo de uma empresa) e no campo Id arraste o parâmetro da função que está na categoria Variáveis. (Figura 7)

Figura 6 - Configuração do bloco Atualizar


 
Figura 7 - Bloco Atualizar dado no banco.

2. Funções do lado Cliente

Da mesma forma que criamos uma função do lado servidor, iremos criar uma do lado cliente, adicionando a passagem do parâmetro "nome", este receberá o conteúdo digitado pelo usuário.

Crie uma nova variável (categoria Variáveis), nomeando para "codigoId", que ficará responsável por receber o Identificador do retorno do bloco "Insere" (lado servidor) que criamos anteriormente. Arraste a nova variável para a função, encaixe o bloco "Chama Bloco" (com retorno) e selecione a função do bloco Insere, como na Figura 8. Em seguida, adicione a variável "nome", passada pelo parâmetro da função (Categoria Variáveis). (Figura 9)

Arraste novamente o bloco "Chama Bloco" (sem retorno), configurando para chamar a função Atualizar, criada anteriormente, passando a Variável de retorno da função Insere. O bloco ficará como na Figura 9.

 

Figura 8 - Chamada da função Insere no Bloco "Chama Bloco".

 

Figura 9 - Bloco Novo Registro do lado Cliente.

 

Por fim, arraste mais 2 blocos: "Atualizar fonte de dados" (categoria Formulário) e "Executar javascript" (categoria Util). O primeiro bloco atualizará a fonte de dados com o novo registro inserido, alimentando o formulário e o no segundo vamos passar o comando abaixo para atualizar a página. (Figura 9)

Comando do Executa javascript
window.location.reload()

 

Figura 10 - Bloco Novo Registro  do lado Cliente.

3. Chamando a ação na View

Acesse a página gerada pelo CRUD com o formulário e substitua o evento do botão confirmar novo registro ("check" verde) pela chamada da função cliente que criamos no passo 2 (Figura 10): Selecione o botão confirmar (1); Clique na aba eventos (2); Selecione o botão "…" do campo "Ao Clicar" (3); Na janela "Events" que abrir, clique no botão "…" do campo "Selecione o Bloco de Programação" (4) e selecione o bloco "NovoRegistro" do lado cliente (5). (Figura 11)

De volta a tela "Events", selecione no campo nome a opção "tab.active.nome", onde passaremos o nome que o usuário digitou no campo nome para o bloco NovoRegistro. (Figura 12)

Figura 11 - Adicionando evento ao botão confirmar.

.

Figura 12 - Seleção do campo que será passado no parâmetro.

 

Como o usuário não irá inserir o seu cargo, exclua o campo Cargo na view. (Figura 12)

Figura 13 - Exclusão do campo Cargo na View.

 

Pronto, basta salvar todas as abas que criamos / alteramos e executar a aplicação através do Rodar (F9) ou Debbug (F11) para testar. Insira um novo usuário e salve, o usuário deverá ter seu cargo cadastrado automaticamente como configurado. O resultado pode ser visto na Figura 1.


 

 

Nesta Página