Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

DELPHI COM ACESSO A BANCO DE DADOS 
TRABALHANDO COM ADOQUERY 
 
 
O componente Query é um componente dataset, assim como o Table, especializado em conexões com tabelas. A diferença 
entre eles está na forma como acessam as informações. O Table liga-se diretamente a uma única tabela, através da 
propriedade TableName. 
 
O Query faz suas ligações através da linguagem SQL, o que lhe possibilita o acesso a várias tabelas. O Query também possui 
métodos mais eficientes de acesso aos recursos do servidor do que o Table. Além de fazer uso de uma linguagem mais 
eficiente, permite o servidor processar requisições mais rapidamente e com menos tráfego de rede. 
 
Os exemplos conduzidos por este material serão baseados em um banco de dados Access contendo duas tabelas: Produto e 
Categoria. As mesmas usadas no material “Uso do Componente ADOConnection”. Mostraremos novamente o modelo e as 
especificações de tabelas a seguir: 
 
1) Criando o Banco de Dados 
 
Para definir o banco de dados, usaremos o SGBD Access da Microsoft. Entre no programa, crie um banco de dados vazio e 
salve em com o nome de Produtos. 
 
a) Criação da Tabela Produto 
 
Selecione a opção Criar Tabela no Modo Estrutura e informe os seguintes dados na janela: 
 
 
Salve a tabela com o nome “CadastroProd” 
Preencha a tabela com pelo menos 5 registros 
 
2) Criando o Projeto CadProdutos 
 
Entre no Delphi, selecione File, New, VCL Form Application. Altere as 
seguintes propriedades do formulário: 
• Name= FconsProduto 
• Caption = Cadastro de Produtos 
• Position=poScreenCenter. 
 
3) Definindo o Módulo de Dados 
 
Para criar o módulo de dados, acesse a opção File, New, Other, e depois escolha “Delphi Files” e, ao lado, “Data Module.. Em 
seguida, altere o nome do Datamodule (propriedade name) para DM. 
a) ADOConection 
Insira um componente ADOConnection (paleta ADO) no data module e altere as seguintes propriedades 
 ConnectionString: Selecione a propriedade ConnectionString e clique nas reticências. Na janela que se abrirá, 
verifique se a opção “Use Connection String” está marcada e clique no botão Build para abrir a janela “Propriedade de 
Vinculação de dados”. Na orelha Provedor, selecione o driver “Microsoft Jet 4.0 OLE DB Provider” e clique em 
avançar. Na aba Conexão clique nas reticências do item 1 e selecione o banco de dados (consprod.mdb) que será 
acessado e clique em Ok. 
 Loginprompt: False (inibe a janela de senha do banco de dados) 
 Name: ADOConsProd (padrão ADO + nome_do_programa) 
 Connected: True 
 
b) ADOQuery 
Insira um componente ADOQuery (paleta ADO) e altere as seguintes propriedades 
 
• Connection: selecione o nome do componente ADOConnection (ADOConsProd); 
• Name: QrProd 
 
c) Datasource 
Insira um componente Datasource (paleta Data Access) e altere as seguintes propriedades 
 
• Dataset: selecione o nome do componente ADOquery (QrProd); 
• Name: DsConsProd 
 
d) ADOTable 
Insira um componente AdoTable (paleta ADO) e altere as seguintes propriedades 
 
• Connection: selecione o nome do componente ADOConnection (ADOConsProd); 
• Name: TBCat 
• Tablename: Categoria 
• Active: True 
 
e) Datasource 
Insira um componente Datasource (paleta Data Access) e altere as seguintes propriedades 
 
• Dataset: TBCat; 
• Name: DsCat 
 
Seu data module deve estar semelhante ao da figura abaixo: 
 
 
PARTE 1 – MONTANDO A CONSULTA 
 
Monte a tela no Delphi, no primeiro formulário, de acordo com a tela abaixo: 
 
Os campos no GroupBox “Dados da tabela” podem ser inseridos da seguinte forma: 
 
a) Vá ao Data Module 
b) Dê dois cliques no AdoTable. Aparecerá uma janela em branco. 
c) Clique com o botão direito na janela em branco, e selecione “Add All Fields”. 
d) Deixe a janela aberta, com os campos, e volte ao primeiro formulário. 
e) Selecione todos os campos com o SHIFT 
f) Arraste-os para o formulário. 
g) Feche esta janela de campos. 
 
b) insira componente DBGrid (Data Controls) e altere a propriedade Datasource para DM.DsConsProd (nome do datasource 
ligado ao query) 
 
PARTE 2 – CÓDIGOS 
 
Botão “Desmarcar / Limpar”: 
 
 
 Edit1.Clear; 
 Edit2.Clear; 
 Radiogroup1.ItemIndex := -1; 
 
Botão “Próximo” 
 If DM.Adotable1.EOF then 
 ShowMessage('Você já está no último registro') 
 else 
 DM.ADOTable1.Next; 
 
Botão “Anterior” 
 
 If DM.ADOTable1.BOF then 
 ShowMessage('Você já está no primeiro registro') 
 else 
 DM.ADOTable1.Prior; 
 
Botão “Primeiro” 
 
 DM.AdoTable1.First; 
 
Botão “Último” 
 
 DM.ADOTable1.Last; 
 
Execute o programa. Como você pôde perceber, o ADOquery é semelhante ao componente ADOtable no que diz respeito à 
conexão com os componentes de acesso, pois ambos são datasets. Entretanto, todo ADOquery por padrão retorna um 
resultset não editável. 
 
Na maioria das situações, ao invés de consultarmos todos os registros de uma tabela, selecionamos apenas uma parte deles, 
acrescentando uma cláusula WHERE em nosso comando SQL. 
Entretanto, essa cláusula pode não requerer um valor fixo, mas algo variável provindo da interface com o usuário. Nesse caso, 
chamamos esse valor de parâmetro. O parâmetro é identificado dentro do comando SQL colocando-se um sinal de dois pontos 
( : ) antes do nome de uma variável. Por exemplo: 
 
WHERE nome = :cliente -> cliente é um parâmetro 
WHERE salario > :valor -> valor é um parâmetro 
 
Para exemplificar, iremos construir uma consulta que selecione todos os produtos que possuem uma determinada origem. Ao 
verificarmos os registros da tabela Produto, vemos que a coluna “ORIGEM” pode assumir os seguintes valores: São Paulo e 
 
 
Botão “Pesquisar” – POR MARCA DO PRODUTO 
 
begin 
with DM.AdoQuery1 do 
 begin 
 Close; 
 SQL.Clear; 
 SQL.Add(' SELECT * FROM CadastroProd '); 
 SQL.Add(' WHERE 1=1 '); 
 if (Edit1.Text '') then 
 begin 
 SQL.Add(' AND marca like :marca'); 
 Parameters.ParamByName('Marca').Value := '%'+Edit1.Text+'%'; 
 end; 
end; 
DM.ADOQuery1.Open; 
end; 
 
Botão “Pesquisar” – POR APRESENTAÇÃO DO PRODUTO 
 
begin 
with DM.AdoQuery1 do 
 begin 
 Close; 
 SQL.Clear; 
 SQL.Add(' SELECT * FROM CadastroProd '); 
 SQL.Add(' WHERE 1=1 '); 
 if (Edit2.Text '') then 
 begin 
 SQL.Add(' AND apresentacao like :apresentacao'); 
 Parameters.ParamByName('Apresentacao').Value := '%'+Edit2.Text+'%'; 
 end; 
end; 
DM.ADOQuery1.Open; 
end;

Mais conteúdos dessa disciplina