Buscar

Criando uma base de dados ms access pelo delphi

Código

 {Aprenda como criar uma base de dados MS Access sem o MS Access. Cria a base, as tabelas, índices, enfim, tudo utilizando puro código Pascal. INTRODUÇÃO

Quando se cria um sistema para ambientes desktop sempre surge a dúvida de qual base de dados usar. Geralmente são usados bancos DBase, Paradox ou MS Access. Destes, a base mais robusta e confiável é, sem dúvida, MS Access. Mas existe um grande problema para se criar a base de dados MS Access, pois faz-se necessário o uso do ambiente MS Access.

Algumas pessoas não têm este aplicativo instalado em sua máquina e então torna-se inviável o uso desta base de dados, impedindo, desta forma, um crescimento tecnológico do programador que fica preso a ferramentas obsoletas.

Neste tutorial você irá aprender como criar uma base de dados MS Access a partir do nada, usando puro código Delphi e a Tecnologia ADO Extensions que é distribuída pela Microsoft.

ADOX, faz parte dos componentes ADO, quer dizer, é uma extensão do ADO. O ADOX fornece ferramentas de acesso a estrutura, segurança, definições de tabelas e muitos outros.

Como dito anteriormente, ADOX é uma library distribuída pela Microsoft, o arquivo chama-se "Msadox.dll", sua definição é "Microsoft ADO Ext. 2.x for DDL and Security" e é este arquivo que iremos importar para nossa IDE no Delphi.

INSTALANDO

Para usar este objetos no Delphi basta seguir os seguintes passos:

1- Selecione PROJECT > IMPORT TYPE LIBRARY

2- Procure pela descrição: "Microsoft ADO Ext. 2.x for DDL and Security (Version 2.x)"

2- Em CLASS NAMES, altere o nome dos objetos acrescentando ADOX após a letra T, exemplo: TTable mude para TADOXTable, TColumm mude para TADOXColumn. Repita este procedimento para todos objetos nesta lista.

3- Em PALETTE PAGE selecione ou digite um novo nome para a paleta onde os componentes ficarão, exemplo: ADOX.

4- Pressione INSTALL, logo depois pressione Ok confirmando o início da instalação.

5- Pressione YES confirmando que você quer instalar os componentes.

6- Pressione Ok na tela que indica os objetos instalados.

7- Selecione FILE > CLOSE ALL e pressione YES para salvar este package criado.

O motivo da troca do nome dos objetos é muito óbvio, estes nomes de classe como Ttable já existem, então iria gerar conflitos na compilação, por isso bastou trocar o nome da classe.

Pronto, os objetos estão instalados, agora sempre que você utilizar estes objetos será inserido na clausula USES a Unit ADOX_TLB pois este é o nome da unit criada a partir da importação da DLL.

Agora, mãos à obra.

DEFININDO A BASE DE DADOS E OBJETOS A SEREM USADOS

Vamos criar uma base onde serão armazenados informaçõe sobre animais de estimação (para sair um pouco da rotina de CLIENTES/PRODUTOS/PEDIDOS).

Para esta base serão criadas as seguintes tabelas:

> PROPRIETARIO

  > PRO_ID

  > PRO_NOME

>ANIMAL

  > ANI_ID

  > ANI_PROPRIETARIO

  > ANI_NOME

  > ANI_NASCIMENTO

Onde um proprietario pode ter mais de um animal formando assim um relacionamento UM PARA MUITOS.

No Delphi, crie uma nova aplicação. Será criado um novo Form, a este insira os seguintes componentes:

  > 3 TButtons

Para lançar os procedimentos de criação da base de dados e das tabelas.

Altere as seguintes propriedades para cada TButtons respectivamente:

Caption: Criar base

Name: btnBase

Caption: Criar tabelas

Name: btnTabelas

Caption: Navegar

Name: btnNavegar

  > 1 TEdit

Para armazenar o path da base de dados a ser criada.

Altere as seguintes propriedades:

Name: edtPath

Text: (deixe em branco)

  > 1 TSaveDialog

Para navegar no disco e informar o path da base de dados.

Altere as seguintes propriedades:

Filter: Base MS Access|*.mdb

Title: Salvar como...

DefaultExt: .mdb

  > 1 TADOConnection

Para fazer a conexão com a base criada.

Altere as seguintes propriedades:

Login prompt: False

  > 1 TADOCommand

Para fazer a ligação e criação das tabelas.

Altere as seguintes propriedades:

Connection: Selecione o ADOConnection1

  > 1 TADOXCatalog

Para criar a base de dados.

CRIANDO A BASE DE DADOS

Agora vamos ao código. Clique duas vezes no objeto btnNavegar e digite:}



procedure TForm1.btnNavegarClick(Sender: TObject);
begin
  if SaveDialog1.Execute then
  edtPath.Text := SaveDialog1.FileName;
end; Com isso informamos o nome que a base terá.

Clique duas vezes no objeto btnBase e digite o seguinte procedimento:


procedure TForm1.btnBaseClick(Sender: TObject);
var
  Base: String;
begin
  if edtPath.Text = '' then
  begin
  ShowMessage('Nome da base de dados não informada.');
  exit;
  end;
  Base := 'Provider=Microsoft.Jet.OLEDB.4.0'+
  ';Data Source=' + edtPath.Text +
  ';Jet OLEDB:Engine Type=4';
  ADOXCatalog1.Create1(Base);
end; {Primeiro verificamos se há algum texto no objeto TEdit, em seguida atribuímos a string de conexão à variável BASE informando vários parâmetros, mas atente para a seguinte linha: "...Engine Type=4...", isto quer dizer que iremos criar uma base Access 97, para Access 2000 informe 5.

Em seguida é efetivamente criado a base de dados através do método Create1 do objeto ADOXCatalog, passando para este a string da BASE. Observe que o método é Create1 e não simplesmente Create, pois o método Create já existe e é da classe.

Pronto, criamos uma base de dados vazia, não existe nada nela, mas já é um arquivo comum ao MS Access e pode ser aberto normalmente.

CRIANDO TABELAS

Vamos começar a criar as tabelas, seus índices e integridade referencial. Para isso clique duas vezes no objeto btnTabelas e digite:}



procedure TForm1.btnTabelasClick(Sender: TObject);
var
  base, comando: string;
begin
  { definindo a base de dados }
  base := 'Provider=Microsoft.Jet.OLEDB.4.0' +
  ';Data Source=' + edtPath.Text +
  ';Persist Security Info=False';
  ADOConnection1.ConnectionString := base;
  { Criando as tabelas... }
  {>>> PROPRIETARIO <<<}
  comando := 'CREATE TABLE PROPRIETARIO (' +
  'PRO_ID INT,' +
  'PRO_NOME TEXT(50))';
  ADOCommand1.CommandText := comando;
  ADOCommand1.Execute;
  { ADICIONANDO INDICES }
  comando := 'CREATE INDEX IDX_PRO_ID ' +
  'ON PROPRIETARIO (PRO_ID) WITH PRIMARY';
  ADOCommand1.CommandText := comando;
  ADOCommand1.Execute;
  {>>> ANIMAL <<<}
  comando := 'CREATE TABLE ANIMAL (' +
  'ANI_ID INT,' +
  'ANI_PROPRIETARIO INT ' +
  'CONSTRAINT IDX_PRO_ID ' +
  'REFERENCES PROPRIETARIO (PRO_ID),' +
  'ANI_NOME TEXT (50),' +
  'ANI_NASCIMENTO DATETIME)';
  ADOCommand1.CommandText := comando;
  ADOCommand1.Execute;
end; {CONCLUÍNDO

Pronto, tudo muito fácil e simples. Agora rode o programa e faça os testes. Clique em navegar, selecione um diretório e digite o nome que sua base terá, então clique em CRIAR BASE e veja que o programa criará a base, logo após isto clique em CRIAR TABELAS então as tabelas serão criadas.

Agora ficou fácil criar sistemas desktops usando uma base mais robusta sem a necessidade de se ter o MS Access instalado em sua máquina. É possível criar e acessar todos os recursos de tabelas da base de dados MS Access usando os objetos ADOX, aqui foi mostrado como criar utilizando linguagem DDL, ou seja, escrevemos diretamente para que o comando fosse executado, mas é possível ter acesso à estes recursos diretamente com os componentes distribuídos por esta library, mas este assunto ficará para outra ocasião.

Se você tiver o MS Access instalado em sua máquina pode abri-lo e verificar nossa base de dados, caso contrário (como é o meu caso) crie uma simples aplicação com dois DBGrids para exibir os campos das tabelas, assim como inserir dados.}

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 11/06/03
Por: Felipe Monteiro
Visualizada: 6197 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009