A página construída até o momento já tem alguma funcionalidade de interação com o banco de dados, porém ainda não é feito nenhum tipo de alteração nas tabelas. Para que possam ser feitas inclusões e alterações no banco de dados, uma página WSP deve ter um ou mais componentes do tipo Update definidos no pré ou no pós-página.
Para inserirmos a lógica de inclusão e alteração dos dados de uma empresa na página empresas vamos novamente acessar o WIzard de Páginas. Caso você esteja no ambiente do WI Builder e queira ir ao WIzard de Páginas primeiramente clique no link Páginas da barra de menu do WI Builder, no tree view que aparece no lado esquerdo escolha a página que você quer visualizar pelo WIzard, no nosso caso seria a página empresas, e em seguida clique no ícone .
Na barra de botões da janela de Propriedades do WIzard de Páginas clique no ícone para que os componentes com a lógica de inserção e atualização sejam inseridos no pós-página da página empresas. Os componentes serão criados baseados nas informações do objeto tmp.empresa que está definido no pré-página.
Para sabermos quais e como foram configurados os componentes no pós-página feche a janela de Propriedades do WIzard de Páginas. De volta ao WI Builder clique no ícone para que sejam listados quais os componentes que estão cadastrados no pós-página, deverá aparecer uma lista com as seguintes opções:
·
Update do objeto tmp.empresa
·
Remover tmp.empresa
·
Insert do objeto tmp.empresa
·
Localiza chaves do registro recém-inserido
·
Grava chaves em variáveis
Vejamos agora o que cada um desses componentes faz. Primeiro dê um duplo clique na opção "Update do objeto tmp.empresa", essa opção define um componente do tipo Update que apenas será executado se a condição "|tmp.cod| !=" for avaliada como verdadeira, o teste que a condição irá fazer é se existe alguma variável tmp.cod na sessão. Se a condição for verdadeira então esse componente Update irá utilizar o banco de dados agenda definido no projeto e irá executar o comando SQL digitado no campo SQL.
O campo SQL desse componente está montando com o comando UPDATE que irá atualizar o dado da empresa cujo código esteja sendo informado pela variável de sessão tmp.cod. Toda empresa quando é incluída em nosso cadastro receberá um código único e é através desse código único que podemos manipular as informações específicas da empressa como o seu nome de fantasia, endereço, etc.
Perceba também que a instrução SQL faz uma série de referências à variáveis de sessão como tmp.empresa.Cidade, tmp.empresa.RamodeAtividade, etc que são justamente o nome dos campos do formulário definido na página, como são variáveis temporárias, por terem o prefixo tmp., elas serão removidas automaticamente da sessão após a execução de um pré-página.
Vejamos agora o próximo componente, mas antes clique no botão "gravar" para salvar as informações do componente Update do pós-página. Para você navegar da definição de um componete para outro você poderá utilizar o ícone para acessar o próximo componente ou o ícone para acessar o componente anterior. O componente de inserção também é do tipo Update mas ele só será executado se a condição "|tmp.cod| =" for verdadeira, ou seja, se na sessão não existir alguma variável tmp.cod e "|tmp.remove| != true".
A lógica de funcionamento desse segundo componente é semelhante à do primeiro componente sendo que no segundo componente Update é feita a execução de um comando INSERT para que os dados de uma nova empresa seja cadastrado. Toda nova empresa quando ela é cadastrada recebe um código que gerado automaticamente pelo SGBD através de uma coluna que fornece valores auto-incrementáveis. Clique no botão "gravar" para salvar as informações do componente Insert. Os demais componentes restantes são usados justamente para recuperar qual o código que foi gerado para uma empresa recém inserida no banco de dados.
Para a geração da lógica de pós-página o WIzard de Páginas utiliza as seguintes regras: primeiramente ele examina o pré-página da página a procura de um componente do tipo objeto, ao encontrar um componente do tipo objeto ele examina se o comando SQL que está inserido no campo SQL na definição do objeto é um comando SELECT com a cláusula WHERE definida, se essas condições iniciais não forem satisfeitas o WIzard não irá gerar o pós-página.
A partir do comando SELECT definido no objeto do pré-página o WIzard assume que as colunas que foram declaradas na cláusula WHERE são auto-incrementáveis, se as colunas que aparecem na cláusula WHERE também estiverem declaradas no comando SELECT elas serão exibidas na página apenas como texto.
Da cláusula WHERE o WIzard assume que as colunas sejam auto-incrementáveis, como já dito anteriormente, e as variáveis com os quais essas colunas são comparadas serão utilizadas pelo WIzard para a construção das condições dos componentes do pós-página.
Esses são detalhes importantes que devem ser levados em consideração se você quiser utilizar o recurso de geração automática do pós-página pelo WIzard de Página.
Examinando o objeto do pré-página da página empresas podemos verificar que o comando SQL está com a cláusula WHERE definida como "... WHERE (empresas.Codigo = |tmp.cod|)" a partir daí o WIzard assume que a coluna Codigo é auto-incrementável e a variável cod será utilizada nas condições dos componentes.
Para testar a lógica de inserção do pós-página e a exibição do conteúdo do grid insira alguns dados de empresas, você verá que a medida que novas empresas forem sendo incluídas o grid também irá sendo populado.