Você está na página 1de 5

Delphi: Realizando Consultas/Pesquisas (iniciante)

http://www.linhadecodigo.com.br/artigo/714/delphi-realizando-consult...

Seguir @linhadecodigo

3.004 seguidores

2.431

Pesquisar

HOME

DESENVOLVIMENTO

FRONT-END

BANCO DE DADOS

EM DESTAQUE

TODOS

PUBLIQUE
Publicidade

CURSOS ONLINE

Desenvolvimento - Delphi

Delphi: Realizando Consultas/Pesquisas (iniciante)


Neste novo artigo vamos falar sobre consultas e pesquisa em banco de dados. Tenho recebido muitos e-mails de pessoas que esto iniciando em Delphi e esto encontrando uma certa dificuldade em realizar tal operao.
por Walbert Castro

169

60

27

Neste novo artigo vamos falar sobre consultas e pesquisa em banco de dados. Tenho recebido muitos e-mails de pessoas que esto iniciando em Delphi e esto encontrando uma certa dificuldade em realizar tal operao. Ento mos a obra. 1 - Pesquisando com FindKey, FindNearest e Locate. Estas funes e procedimentos so utilizadas para pesquisar por informaes dentro de tabelas utilizando os componentes TTable e TQuery. A) FindKey - esta funo pesquisa uma determinada informao exata dentro de um campo indexado ou chave primria, retornando True ou False para pesquisas encontradas ou no. Muito til para quem ainda utiliza o velho paradox e dbase. Pode ser utilizado para procurar por cdigo, numero de registro, numero de nota fiscal e etc. Para nosso exemplo temos uma tabela Paradox com a seguinte estrutura:
SQL Magazine 112 Java Magazine 116
VER TODAS ASSINE

REVISTAS DEVMEDIA

TOP 10 - ARTIGOS

TOP 10 - AUTORES

DataBase Desktop

1 2 3 4 5

Comandos bsicos em SQL - insert, update, delete e select HTML Bsico Guia rpido para consultas SQL Menu em CSS - Menu dropdown horizontal com HTML5 e CSS3 Formato dos registros do Sintegra HTML Avanado Quanto vale o seu servio? Aprenda a cobrar pelo seu trabalho. Calendrio em jQuery - Criando Calendrios com DatePicker Delphi: Realizando Consultas/Pesquisas (iniciante) Instalando e Configurando o EasyPHP
VER TODOS

Salve com o nome Empregado.db.E coloque os seguintes dados.

Observe que o campo Cdigo foi marcado como chave primaria e atravs deste campo de podemos utilizar as funes e Procedimentos de pesquisa. No Delphi coloque os seguintes componentes no formulrio: Edit (Paleta Standard) Button (Paleta Standard) - Caption = Pesquisar Por Cdigo DbGrid (Paleta Data Control) Table (Paleta BDE) DataSoucer (Paleta Data Access) Seu formulrio deve estar como mostrado abaixo:

6 7 8 9 10

1 de 5

20/06/2013 11:54

Delphi: Realizando Consultas/Pesquisas (iniciante)

http://www.linhadecodigo.com.br/artigo/714/delphi-realizando-consult...

No Componente Table vamos fazer associar com nossa tabela: DataBaseName - coloque o caminho onde se encontra sua tabela. No meu caso "C:\meus documentos". TableName - escolha a tabela Empregados.db IndexName - escolha o campo Cdigo (Caso usa tabela s tenha uma chave primaria no preciso informar nada em IndexName. A busca feita diretamente pelo campo chave, caso contrario necessrio que se escolha qual o campo ser utilizado). Active - Coloque true. No componente DataSource em DataSet escolha Table1 e no DbGrid em DataSource escolha DataSource1. Clique duas vezes no componente Button e digite o cdigo abaixo: Table1.FindKey([Edit1.Text]); Execute o programa digite um cdigo no edit e clique em pesquisar cdigo para testar. Caso voc queira uma mensagem se a pesquisa no foi bem sucedida mude para o cdigo abaixo: If Not Table1.FindKey([Edit1.Text]) then ShowMessage("Informao no Encontrada"); B) FindNearest - Este procedimento pesquisa por informaes parciais dentro de um campo chave ou indexado. Pode ser utilizada para procurar por nomes de pessoas, endereos e etc. Para um exemplo prtico vamos criar um ndice secundrio em nosso tabela. Abra a tabela Empregado.db com Database Desktop abra a estrutura e em Table Properties escolha Secondary Indexes clique em Define clique duas vezes no Campo Nome e clique no OK. Coloque no nome do nosso ndice de iNome e salve a tabela.

Volte para o Delphi no componente Table em IndexName escolha nosso ndice INome.

2 de 5

20/06/2013 11:54

Delphi: Realizando Consultas/Pesquisas (iniciante)

http://www.linhadecodigo.com.br/artigo/714/delphi-realizando-consult...

Coloque no formulrio outro componente Button com o Caption Localizar Nome. Agora clique duas vezes no boto Localizar Nome e digite o cdigo abaixo: Table1.FindNearest([Edit1.Text]); Como no FindNearest voc pode informar apenas parte do nome desejado, por exemplo o nome ROSA da nossa tabela, como temos duas ROSA ser mostrado a primeira no caso ROSA MARIA. Execute o programa e faa um teste. C) Locate - Esta funo bem diferente das outras enquanto FindKey e o FindNearest so utilizados em campos indexados o Locate pode ser utilizado com qualquer campo (String, Inteiros, Float, Data) mesmo que ele no seja um campo chave ou esteja indexado. Tambm possvel criar pesquisas com vrios campos ao mesmo tempo. Vamos a um exemplo: No boto Pesquisar Nome vamos substituir o FindNearest pelo Locate. Nossa linha ficaria assim: Table1.Locate("NOME",Edit1.Text,[ loPartialKey Onde: "NOME" - o campo em que se deseja pesquisa. Edit1.Text - A informao pesquisada no caso o contedo no componente Edit. [loPartialKey] - Opo de pesquisa que pode ser loPartialKey que representa pesquisa parcial como no FindNearest e/ou loCaseInsensitive que diferencia letras Maisculas de Minsculas. Voc pode usar uma mensagem de alerta caso a pesquisa no seja encontrada. If not Table1.Locate("NOME",Edit1.Text,[ loPartialKey]) then ShowMessage("Informao no Encontrada"); 2 - Pesquisando com instrues SQL Fazer pesquisas usando instrues SQL muito melhor e mais rpido alm de no precisamos de campos chaves ou indexados. Para isso temos que usar o componente TQuery da paleta BDE. Coloque no formulrio um componente TQuery e mude suas propriedades: DataBaseName = coloque o caminha de onde se encontra sua tabela no meu caso "C:\meus documentos". No DataSource mude o Dataset para Query1. Todas as instrues so informadas na propriedade SQL do TQuery. Assim se queremos fazer uma consulta por determinado nome, por exemplo, teremos: Select * from Empregado Where Nome = "ROSA MARIA" Order By NOME Onde Select * from Empregado - Refere-se a tabela que ser utilizada e seus campos. Como estamos usando * estamos nos referindo a todos os campos da tabela. Porem possvel a penas especificar os campos que se deseja exemplo: Select Nome from Empregado. Where Nome = "ROSA MARIA - A instruo where determina uma condio de pesquisa a uma ou vrios campos no nosso caso no campo NOME. Order By - Refere-se a qual campo da tabela ser organizado seja em ordem crescente ou decrescente no nosso caso o campo NOME. Para organizamos em ordem decrescente baste no final colocamos a instruo DESC. Exemplo Order by NOME Desc. O Exemplo acima nos mostra uma consulta exata, vamos ver uma consulta parcial. Select Nome From Empregado Where Nome Like "ROSA%" Order by Nome Veja que agora estamos utilizando o operador LIKE que exibe dados baseados em uma seqncia de caracteres. O operador LIKE utiliza um coringa % para representarmos qualquer numero de caracter. Assim com a instruo acima teramos o seguinte resultado. ]);

3 de 5

20/06/2013 11:54

Delphi: Realizando Consultas/Pesquisas (iniciante)

http://www.linhadecodigo.com.br/artigo/714/delphi-realizando-consult...

Assim podemos realizar diversos tipos de consultas, tais como: Select * from Empregado Where NOME LIKE "%CIA%" Order by NOME O resultado seria: Bem aqui termino mais um artigo espero que estas dicas de como realizar consultas possam ajudar o pessoal novato no assunto Delphi. No esqueam de mandar suas crticas e sugestes para novos artigos ok. At a prxima.

Walbert Castro Walbert Castro - Trabalha como Coordenador de informtica na revenda Ambev do

Amap, utiliza o Delphi desde a verso 1, onde j desenvolveu vrios sistema usando os bancos de dados Interbase, Firebird, MySQL e Paradox. Possui conhecimentos em Delphi, Clipper, VBA, PHP e administrao de Servidores Linux e Windows 2000.

169

60

27

Leia tambm
Multicast Events no Delphi
Delphi

Utilizando o componente dxWindowAlertManager da DevExpress


Delphi

Classe Genrica para Transformar Tipos ENUM Para TStrings em Delphi


Delphi

Desenvolvendo FrameWork em Delphi


Delphi

Criao de Componente Vinculado a Lista Encadeada


Delphi

4 de 5

20/06/2013 11:54

Delphi: Realizando Consultas/Pesquisas (iniciante)

http://www.linhadecodigo.com.br/artigo/714/delphi-realizando-consult...

Linha de Cdigo faz parte do grupo Web-03

Poltica de privacidade e de uso | Anuncie | Cadastre-se | Fale conosco

Servidor no encontrado
O Firefox no conseguiu localizar www.facebook.com.
Verifique se h erro de digitao no endereo. Como ww.example.com em vez de www.example.com
2013 Linha de Cdigo. Todos os direitos reservados

5 de 5

20/06/2013 11:54

Você também pode gostar