O Delphi e o SQL

Acessar dados da forma correta é essencial para a confecção de um sistema. Especialmente hoje, quando o mercado caminha para soluções mais corporativas, como a implantação de bancos de dados relacionais, tais como o Microsoft SQL Server, e o Oracle. Neste caso, a forma de acesso aos dados é ainda mais crítica, uma vez que a forma errada pode significar a degradação de toda a rede.

Sendo assim, temos dois tipos principais de armazenamento de dados: 1) O armazenamento de dados em arquivos padronizados, tais como o DBF, Paradox e MDB; 2) E o armazenamento de dados em estruturas relacionais, tais como o Microsoft SQL Server, e o Oracle. Em ambos os casos, a linguagem SQL é de grande valia para o acesso eficaz aos dados. (Para maiores informações sobre esta linguagem, leia o artigo "SQL – O que é isso?", na seção de SQL Server de nossa página).

Neste artigo, trataremos do objeto Tquery do Delphi, e destacaremos sua utilização para consulta de dados. Isto é importante, por exemplo, para a criação de relatórios. Também é muito útil quando queremos exibir um conjunto de informações em um GRID, ou quando precisamos deste conjunto de informações para processar uma rotina.

Consideraremos para os exemplos, as seguintes tabelas (que podem estar em um banco de dados relacionais, ou em um modelo de arquivos):

PRODUTOS
CODIGOINTEGER
PRODUTOSTRING
MOVIMENTOINTEGER

MOVIMENTO
CD_PRODUTOINTEGER
DATADATE
MOVIMENTOINTEGER

Object Ispector e as propriedades de Query1

Naturalmente, estas duas tabelas são conceituais, e na prática seriam de pouca utilidade. Mas imagine que na primeira tabela estão cadastrados todos os produtos de um estoque, e na segunda tabela estão todos os movimentos de cada produto, sendo um movimento de valor positivo uma entrada, e um movimento de valor negativo uma saída.

A partir destas duas tabelas simples podemos montar uma consulta que será a base de um relatório. Para isso, usamos o objeto Tquery, que encontra-se na guia "Data Access".

Se for um banco de dados relacional, a propriedade DatabaseName deve apontar para um Alias, previamente criado através do BDE Administrator.

Se for um modelo de arquivos, esta propriedade pode conter o Alias, ou simplesmente o caminho de onde estão os arquivos de dados.

 

 

 

 

Na propriedade SQL será incluso efetivamento o código SQL necessário para obter o conjunto de dados desejado. Em nosso caso, será algo como segue:

Escrevendo comandos SQL para o objeto Query1

Este código SQL retorna um conjunto de registros com todos os dados de produtos e de movimento, ligados através do código.

Este conjunto de registros será ordenado por código de produto e por data do movimento.

 

 

 

 

Vejamos como ficaria este conjunto de registros com dados fictícios:

PRODUTOS
CODIGOPRODUTO
1MOUSE
2TECLADO
3CANETA

MOVIMENTO
CD_PRODUTODATAMOVIMENTO
101/01/985
102/01/983
201/01/9810
301/01/9815
301/02/9810
301/03/9812

QUERY1
CODIGOPRODUTOCD_PRODUTODATAMOVIMENTO
1MOUSE101/01/985
1MOUSE102/01/983
2TECLADO201/01/9810
3CANETA301/01/9815
3CANETA301/02/9810
3CANETA301/03/9812

A partir dos resultados em Query1 (este nome é criado automaticamente para o primeiro TQuery colocado em um Form) é possível efetuar processamentos, exibir dados em Grids ou gerar relatórios. Naturalmente, no caso de relatórios, talvez seja interessante criar agrupamentos por código do produto, e por data de movimento (para este último com somatório).

Vale lembrar que podem ser adicionados objetos TField para os TQuery da mesma forma é feito para os objetos TTable. Assim é possível acessar os valores nos campos dos registros retornados.

Não se deve esquecer de abrir o TQuery antes de usá-lo, e fechá-lo após o uso, como também é feito com TTables. Em ambientes com o modelo de arquivos pode-se usar os eventos Open e Close, ou mesmo setar a propriedade Active para este objetivo.

Em ambientes com banco de dados relacionais, seria interessante usar antes do open o método Prepare, como segue:

If not Query1.Prepared Then

Query1.Prepare;

Query1.Open;

.

.

.

Query1.Close;

O método prepare procura estabelecer junto ao servidor de banco de dados a forma mais eficaz de executar aquele código SQL.

Estes são os primeiros passos a serem dados com a linguagem SQL no Delphi, mas há muito ainda sobre o que falar. E em próximos artigos, trataremos assuntos mais complexos.

Dúvidas e sugestões sobre o artigo podem ser enviadas para [email protected] .

Andre Campos

 

 

Hosted by www.Geocities.ws

1