CAPÍTULO 5
Programação visual com Software Livre
EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo.  Prólogo de Benoit Minisini

<< Anterior Próximo >>

Consulta de dados



Ao abrir-se o formulário, abriremos a conexão, leremos os dados disponíveis, os representamos em nosso controle Tabela e encerramos a conexão. Isto seria representado da seguinte maneira:


PUBLIC SUB Form_Open()


DIM hResul AS Result

DIM chave AS String

tabela.Clear()

IF conectarBase() THEN RETURN


tabela.Columns.Count = 5

tabela.Columns[0].Text = "Título"

tabela.Columns[1].Text = "Autor"

tabela.Columns[2].Text = "Data"

tabela.Columns[3].Text = "Preço"

tabela.Columns[4].Text = "Descrição"

 
hResul = hCon.Exec("select * from dados")

DO WHILE hResul.Available

 
Chave = hResul["titulo"]

tabela.Add(Chave, Chave)


tabela[chave][1] = hResul["autor"]

tabela[chave][2] = hResul["data"]

tabela[chave][3] = hResul["preco"]

tabela[chave][4] = hResul["descricao"]

hResul.MoveNext()

LOOP

EncerrarConexao()

END


O código trata de abrir a conexão e se fracassar sai da função. Se todo for bem, define cinco colunas em nosso controle Tabela, põe o título e os cabeçalhos de colunas e continua preenchendo os diferentes registros. Para efetuar esta tarefa, primeiro consultamos os dados da tabela, empregando o método Exec de nosso objeto hCon, o qual passamos como parâmetro a consulta SQL e nos devolve um objeto de classe Result, que contem cada um dos registros proveniente da consulta.

O objeto Reult tem um ponteiro interno que em cada momento aponta a um dos registros. No estado inicial aponta ao primeiro registro, se é que haja algum. Este objeto dispõe de uma serie de métodos para mover o ponteiro. MoveNext (o de nosso exemplo) o move ao registro seguinte, se existir; MovePrevious, ao anterior; MoveFirst, ao primeiro; e MoveLast, ao ultimo. Com o MoveTo podemos especificar um registro concreto a nos deslocar.

Quando estamos situados em um registro, Result nos permite obter os dados correspondente a um campo, indicando o nome do campo como se o objeto fosse uma Array: em nosso exemplo, hResul[“autor”] nos devolve o valor do campo autor no registro atual.

Se como resultado de um movimento do ponteiro teremos sobrepassado o último registro ou estamos antes do primeiro, a propriedade Available toma o valor False, enquanto que se nos encontrarmos apontando a um registro, Available toma o valor True. Igualmente, se não houver registro resultante da consulta, Available valerá False. (Available significa Disponível em inglês)

Com estes conhecimentos já podemos realizar um loop para preencher os dados de nossa tabela.

Enquanto a propriedade Available for True, tomamos como chave o valor do campo “titulo”,  adicionamos uma linha em nossa tabela identificada por uma chave, e cujo texto (a primeira coluna) é essa chave. Preenchemos o resto dos campos com os valores proveniente do objeto hResul, e nos movemos ao registro seguinte. Após sair do loop, encerramos a conexão e abandonamos a função.

Como último retoque antes de executar, ponhamos a propriedade Sorted do controle ColummView a True, de modo que o usuário ao pressionar sobre a cabeça de uma coluna, pode ordenar a lista pelo campo que preferir. Já que cada registro na lista está identificado pela mesma chave que tem na tabela, posteriores operações de seleção/modificação por parte do usuário, não vão ser afetada pela ordem de apresentação.

O resultado final é este:


Figura 20
Figura 20. Aspecto final do projeto MisLivro.


Aproveitar as possibilidades de ordenação dos controles, pode evitar sobrecarregar o servidor ou o cliente de base de dados com múltiplas consultas.




<< Anterior Próximo >>

HOME



Cópia literal

Extraído do livro “GAMBAS, programação visual com software Livre”, da editora EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo. Prólogo de Benoit Minisini

LICENSA DESTE DOCUMENTO


É permitido a cópia e distribuição da totalidade ou parte desta obra sem fins lucrativo. Toda cópia total ou parcial devera expressar o nome do autor e da editora e incluir esta mesma licença, adicionando se é uma cópia literal “Cópia literal”. Se é autorizada a modificação e tradução da obra  sem fins lucrativo sempre se deve constar na obra resultante  a modificação o nome da obra original o autor da obra original e o nome da editora e a obra resultante também deverá ser livremente reproduzida, distribuída, ao publico e transformada em termos similares ao exposto nesta licença.

Tradução

Cientista
 (Antonio Sousa)