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. 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 >> |
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) |
|