TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Banco De Dados

Trabalho Universitário: Banco De Dados. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  3/12/2014  •  1.411 Palavras (6 Páginas)  •  179 Visualizações

Página 1 de 6

A maioria dos sistemas comerciais conta com várias telas de consulta, onde o usuário pode localizar registros específicos a partir de filtros pré-definidos. Porém, o comum é que cada janela seja voltada para uma única tabela (ou um conjunto delas).

Neste artigo, desenvolveremos uma tela de consulta genérica, onde o usuário poderá filtrar dados de uma tabela qualquer e definir o filtro dinamicamente, visualizando uma expressão representativa da consulta.

Para isso, utilizaremos o Microsoft SQL Server 2012 (outras versões podem ser utilizadas sem problemas) e o Delphi XE2. Como engine de conexão, usaremos o ADO.

Para iniciar, criemos uma nova aplicação VCL no Delphi a partir do menu File > New > VCL Forms Application.

No form principal, adicione um componente ADOConnection e, antes de tudo, desmarque a propriedade LoginPrompt para que a tela de login não seja exibida sempre que uma conexão como banco for requisitada. Em seguida, dê duplo clique sobre o controle e configure a conexão com o banco de dados, de acordo com as variáveis do seu computador e servidor.

Na tela exibida na Figura 1, clique em “Build...”.

Figura 1: Configurar Connection String

Na tela seguinte, selecione o provedor “Microsoft OLE DB Provider for SQL Server”, como mostra a Figura 2, e clique em “Avançar”.

Figura 2: Seleção do provedor de acesso ao banco

Na tela seguinte, insira as informações requisitadas, selecionando o servidor, o banco de dados e definindo as credenciais de acesso.

Figura 3: Definição de variáveis de conexão

Clique em “OK” e, na tela que voltará a aparecer, clique novamente em “OK”, finalizando a configuração.

Listando as tabelas do banco

O primeiro passo para a criação da consulta genérica, é disponibilizar a lista de tabelas do banco para o usuário escolher em qual deseja pesquisar.

Observação 1: o layout utilizado aqui é apenas uma sugestão, o leitor pode optar por organizar os componentes na tela da forma como preferir.

Adicione um GroupBox com a propriedade “Align” definida como “alTop”. Em seu interior, adicione um Label com “Caption” igual a “Tabelas disponíveis” e um ComboBox com “Name” definido como “cbbTabelas”. Esta configuração é mostrada na Figura 4.

Figura 4: ComboBox para listar as tabelas

Agora, no evento OnShow do formulário, adicione o código constangem na Listagem 1, onde é utilizado um componente ADOQuery instanciado em tempo de execução para listar as tabelas do banco no cbbTabelas.

Listagem 1: Listando as tabelas do banco

cbbTabelas.Items.Clear();

with TADOQuery.Create(Self) do

begin

Connection := ADOConnection1;

SQL.Text := 'SELECT * FROM Sys.Tables';

Open();

First();

while not Eof do

begin

cbbTabelas.Items.Add(FieldByName('name').AsString);

Next();

end;

end;

A tabela Sys.Tables armazena informações referentes às tabelas existentes no banco de dados para o qual a ADOConnection está configurada. A Figura 5 mostra o resultado, no meu caso, ao compilar o programa.

Figura 5: Tabelas listadas

Listando as colunas da tabela selecionada

Para filtrar os dados de uma tabela, é necessário escolher uma coluna pela qual se deseja pesquisar e, para isso, é preciso primeiramente que o usuário tenha acesso à lista de colunas da tabela selecionada. Adicione os mesmos componentes visuais utilizados para a listagem de tabelas (GroupBox, Label e ComboBox) e configure conforme a Figura 6. Altere o nome do ComboBox para “cbbColunas”.

Figura 6: ComboBox para listar as colunas

Em seguida, no evento OnChange do cbbColunas adicione o código da Listagem 2 para que, ao selecionar uma tabela, as suas colunas sejam listadas.

Listagem 2: Listando as colunas da tabela selecionada

cbbColunas.Items.Clear();

with TADOQuery.Create(Self) do

begin

Connection := ADOConnection1;

SQL.Text := 'SELECT '+

' c.name '+

'FROM '+

' Sys.Columns c '+

'LEFT OUTER JOIN '+

' sys.index_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id '+

'LEFT OUTER JOIN '+

' sys.indexes i ON ic.object_id = i.object_id AND ic.index_id = i.index_id '+

'WHERE '+

' c.object_id = OBJECT_ID(:tabela)';

Parameters.ParamByName('tabela').DataType := ftString;

Parameters.ParamByName('tabela').Value := cbbTabelas.Text;

Open();

First();

while not Eof do

begin

cbbColunas.Items.Add(FieldByName('name').AsString);

Next();

end;

end;

A

...

Baixar como (para membros premium)  txt (8.7 Kb)  
Continuar por mais 5 páginas »
Disponível apenas no TrabalhosGratuitos.com