Grid SQL
O componente Grid oferece ao desenvolvedor a possibilidade de se processar as informações vinda de uma fonte de dados podendo essa fonte de dados ser uma consulta a um banco de dados ou uma listagem de diretório e podendo exibí-las em uma forma tabular dispondo-as em linhas e colunas seguindo um modelo simples usando como base a estrutura de uma tabela HTML ou através de modelos múltiplos onde cada parte do grid (cabeçalho, rodapé, células vazias, células válidas, etc) está representada em modelos distintos.
Uma outra possibilidade que os grids possuem é a de que uma determinada página do projeto seja executada para cada linha válida retornada pela consulta à fonte de dados (banco de dados, servidor FTP, etc) oferecendo assim uma maneira de iteragir pelo resultado da consulta e para cada passo dessa iteração será a página correspondente será executada.
Ao utilizar o modelo simples a estrutura padrão a ser gerada será a seguinte tomando como exemplo um grid cuja consulta a um banco de dados retorne 4 colunas com os nomes coluna1, coluna2, coluna3 e coluna4 e o campo Início na Linha esteja definido com o valor 2:
<TABLE>
<!-- Cabeçalho (opcional) -->
<TR>
<TH>Coluna #1</TH>
<TH>Coluna #2</TH>
<TH>Coluna #3</TH>
<TH>Coluna #4</TH>
</TR>
<!-- Linha de detalhe -->
<TR>
<TD>|coluna1| </TD>
<TD>|coluna2| </TD>
<TD>|coluna3| </TD>
<TD>|coluna4| </TD>
</TR>
<!-- Mensagem a ser exibida quando não há dados a serem exibidos (opcional) -->
<TR>
<TD ALIGN="center" COLSPAN="4">Nenhum registro selecionado</TD>
</TR>
<!-- Rodapé (opcional) -->
<TR>
<TD ALIGN="center" COLSPAN="4">Mensagem do rodapé</TD>
</TR>
</TABLE>
A principal funcionalidade do grid SQL é exibir informações vinda de uma consulta a um banco de dados aplicando sobre estas uma definição de um modelo simples ou múltiplo. Quando se usa o modelo simples uma das definições a ser feita é qual linha da tabela HTML desse modelo irá ser populada com os dados do resultado da consulta ao banco de dados, essa definição é feita através do campo Início na Linha. Baseado na definição desse campo as linhas da tabela anteriores a essa, caso existam, formam o cabeçalho do grid; a linha posterior à linha de detalhe só irá aparecer caso o resultado da consulta não retorne nada e as linhas logo abaixo dessa formam o rodapé.
A linha de detalhe definida pelo campo Início na Linha além de referenciar os nomes das colunas também poderá referenciar outras variáveis que estejam na sessão inclusive referenciar outro grid para criar a visão de mestre-detalhe. Qualquer outra célula do grid também poderá fazer referência a variáveis de sessão do WebIntegrator.
O modelo múltiplo ao invés de trabalhar com um único modelo trabalha com a definição das várias partes que compõem o modelo do grid. Essas partes são o cabeçalho, início do registro, registro válido, registro vazio, fim do registro, sem registros e rodapé. Quando se usa o modelo múltiplo a sequência de evento de processamento das partes é a seguinte: primeiro o WI Engine processa o modelo relativo ao cabeçalho; em seguida se o resultado da consulta feita ao banco de dados retornou algum registro então os modelos relativos ao início do registro, registro válido e fim do registro são processados respectivamente e isso se repete até que todos os registros tenham sido processados ou que a contagem da iteração tenha alcançado o valor definido no campo Quantidade, senão se o resultado da consulta não retornar nenhum registro então o modelo "sem registros" é processado; finalmente o modelo relativo ao rodapé é processado.
O modelo relativo ao registro vazio apenas é processado quando o campo Horizontal estiver definido e indica como serão preenchidas as células restantes da tabela.
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 Compartilhado indica qual o grid que terá seu modelo compartilhado, as alterações feitas no modelo do grid-pai irão se refletir nos grids-filhos. Nessa combo apenas serão exibidos os grids que possuem modelo simples ou múltiplo não sendo exibido os grids que possuem modelo compartilhado.
O campo Cor define o código hexadecimal de uma cor que será aplicada nas linhas pares das linhas de detalhe do grid. A cor padrão é aquela definida no arquivo que contém o esquema visual do grid e a cor das linhas pares é a definida neste campo. Lembrar que esse parâmetro altera a cor da linha, logo, se o desenvolvedor definir uma cor específica para uma célula, ela irá sobrepor esta definição.
Clicando em Cor aparecerá uma janela com algumas gamas de cores que ao se passar o mouse sobre elas, exibe-se o código hexadecimal correspodente à cor.
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 Executar a Cada Registro indica qual a página do projeto que será executada a cada iteração nos registros retornados como resultado da consulta feita ao banco de dados.
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 executada pelo banco de dados evitando que 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.
A opção Gerar indica se o WebIntegrator irá gerar o modelo simples do grid baseado nas configurações atuais. O modelo só será criado após a gravação da definição. Esse campo apenas se refere aos grids que utilizem o modelo simples.
O campo Horizontal define em quantas colunas serão exibidas as linhas de detalhe definidas no modelo do grid. Quando um grid usa o deslocamento horizontal as linhas que formam o cabeçalho e o rodapé não podem conter mais de uma célula.
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 Início na Linha indica qual linha da tabela HTML que está definida como modelo do grid que será a linha de detalhe, ou seja, a linha que terá seu conteúdo processado e populado de acordo com o resultado da consulta. Esse campo apenas se refere aos grids que utilizem o modelo simples.
A opção Múltiplo marcada indica que o grid usará o modelo múltiplo para geração do conteúdo, para editar as várias partes do modelo múltiplo clique no ícone
que aparece na sessão Modelo. O modelo múltiplo trabalha com as várias partes que em conjunto irão criar o modelo do grid, as partes consistem na definição do conteúdo do cabeçalho, o conteúdo do ínício do registro, o conteúdo a ser iteragido quando forem encontrados registros válidos, o conteúdo a ser exibido em registros vazios (apenas utilizado quando o deslocamento horizontal está configurado), o conteúdo que indica o fim de um registro, o conteúdo a ser exibido quando nenhum registro for retornado pela consulta e o rodapé do grid.
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 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.
A opção Simples marcada indica que o grid usará o modelo simples para geração do conteúdo, para editar o modelo do grid clique no ícone
que aparece na sessão Modelo. O modelo simples consiste na definição de uma tabela HTML onde cada linha tem um função dependendo do valor definido no campo Início na Linha. A linha indicada por esse campo será iteragida e populada com os valores vindos da consulta à fonte de dados, as linhas acima desta são consideradas como o cabeçalho do grid, as linhas que se encontrarem abaixo dela serão consideradas como as linhas de rodapé.