domingo, 22 de janeiro de 2012

Delphi - Instalando o componente Zeos Access

Neste artigo iremos abordar como acessar o Mysql 5 através do Delphi 7 com o  componente Zeos. Para adquiri-lo, entre em sua página oficial www.zeoslib.net e procure por zeosdbo-6.1.5-stable.zip ou direto através deste link: http://sourceforge.net/project/downloading.php?group_id=35994&use_mirror=ufpr&filename=zeosdbo-6.1.5-stable.zip&22084638. Pegue esta versão 6.1.5-stable, pois atualmente é a mais estável.Siga os seguintes passos para instalá-lo. Descompacte-o em uma pasta que desejar, C:\ [diretório escolhido] \ zeosdbo-6.1.5-stable.

Entre na pasta C:\ [diretório escolhido] \zeosdbo-6.1.5-stable\lib\mysql e copie as três dlls encontradas (libmysql40.dll, libmysql320.dll, libmysql323.dll) para a pasta C:\Windows\system32.
Abra o Delphi 7, vá em File/Close all. Entre em Tools/Environment Options e abra a aba Library de acordo com a figura 1 abaixo:
Figura 01. Environment Options,
Clique no botão do lado direito em Library Path, aparecerá uma janela chamada Directories, encontre um botão com (...) e adicione as seguintes pastas no botão Add:

C:\ [diretório escolhido] \zeosdbo-6.1.5-stable\src
C:\ [diretório escolhido] \Borland\Delphi7\zeosdbo-6.1.5-stable\src\component
C:\ [diretório escolhido] \Borland\Delphi7\zeosdbo-6.1.5-stable\src\core
C:\ [diretório escolhido] \zeosdbo-6.1.5-stable\src\dbc
C:\ [diretório escolhido] \zeosdbo-6.1.5-stable\src\parsesql 
C:\ [diretório escolhido] \zeosdbo-6.1.5-stable\src\plain
Observe como fica na imagem abaixo:

Figura 02. Directories
Depois de seguir estes passos, clique em File/ Open Project... entre na pasta C:\ [diretório escolhido] \zeosdbo-6.1.5-stable\packages\delphi7\ ZeosDbo.bpg e será mostrado a janela abaixo.

Figura 03. Project Manager.
Entre em Project/ Build All Projects e após este procedimento, clique com o botão direito no ZCore.bpl e install, faça isto para os cinco arquivos .bpl, salve as alterações em File/Save all e o componente Zeos será instalado na sua paleta de componentes com o nome de Zeos Access, conforme indica a imagem 04.                             

Figura 04. Paleta Zeos Access.
INSTALANDO O MYSQL 5.0.27

Antes de começar, primeiramente iremos  baixar o Mysql 5.0.27 zipado através de seu site oficial http://dev.mysql.com/downloads/mysql/5.0.html. Depois de baixar o arquivo de aproximadamente 54 Mb descompacte-o de preferência no diretório C:\ e aparecerá as seguintes pastas.

Figura 05. Pastas do Mysql.
   Onde os principias subdiretórios são:
§  Bin: Os executáveis do Mysql.
§  Data: As bases de dados. Cada diretório é um Banco de Dados.
§  Docs: A documentação, em formato de ajuda do Windows, um arquivo extremamente útil.

Agora iremos configurar o Mysql. Primeiro é necesario iniciar o servidor. Entre na pasta C:\mysql-5.0.27-win32\bin e clique no executável Mysqld.exe. Abra o prompt de comando (DOS) para iniciar o Client com os seguintes comandos C:\mysql-5.0.22-win32\bin\mysql -u root -h localhost (configuração padrão).
Para facilitar, crie um atalho na área de trabalho para o Mysqld.exe. Pronto, o Mysql foi instalado em sua máquina. Agora para manipular suas tabelas o recomendável é possuir algum programa para gerenciá-las. Eu recomendo o “EMS SQL Manager 2005 Lite for MySQL” que pode ser baixado gratuitamente por este link http://www.sqlmanager.net/en/products/mysql/manager/download .

MONTANDO UM PROJETO DE EXEMPLO

Agora iremos criar um simples projeto utilizando a conexão Zeuslib com o Banco de Dados Mysql. Abaixo está a estrutura da tabela criada no MySql que usaremos.

CREATE TABLE `theclub` (
  CODIGO int(11) NOT NULL,
  NOME varchar(50) default NULL,
  CIDADE varchar(40) default NULL,
  PRIMARY KEY  (`CODIGO`)
) ENGINE= MyISAM DEFAULT CHARSET=latin1;

É importante ressaltar o tipo de tabela que está sendo utilizado neste exemplo, o MyISAM. Estas tabelas se caracterizam por serem mais rápidas porém menos seguras (se fosse um sistema de controle bancário o ideal seria utilizar o tipo InnoDB pois são tipos de tabelas transacionais), por se tratar de um projeto pequeno optei por utilizar este tipo de tabela.
Abra o Delphi 7, vá em File/New/Application e acesse a Aba Zeos Access e adicione: ZConnection, duas ZQuery, DataSetProvider e um ClientDataSet. A tela ficará de acordo com a figura 06.

Figura 06. Componentes.
 Configure da seguinte maneira:
§  Zconnection1: Database: [nome da base de dados],
                               Port: 3306,
       Protocol: mysql,
       User: root.

§  ZQuery1: Connection: Connection1,
                                       RequestLive: true, 
                                       SQL: clique nos […] e adicione o seguinte código SQL:
                                       SELECT * FROM THECLUB ORDER BY CODIGO,
                                       WhereMode: wmWhereKeyOnly

§  ZQuery2: Connection: Connection1,
                                      SQL: clique nos […] e adicione o seguinte código SQL:
                                         SELECT MAX(CODIGO) AS ULTIMO FROM THECLUB,

§  DataSetProvider1: Dataset: ZQuery1,
                                       ResolveToDataSet: True,
                                       UpdateMode: upWhereKeyOnly.

§  ClientDataSet1: ProviderName: DataSetProvider1.

Clique com o botão direito em cima da Zquery1, Zquery2 e do ClientDataset1 e adicione os campos. Selecione todos os campos do ClientDataSet e arraste para o formulário, aproveite e coloque um DbNavigator, um Button e um Dbgrid. Observe como o nosso formulário ficará na figura 07.

Figura 07. Layout do Form. 
Configure as propriedades dos componentes:
§  DbNavigator1 - Datasource: Datasource1.
§  DbGrid1 – Datasource: Datasource1.
§  Button1 – Caption: Aplicar ao banco; Font/Color: ClRed.

Neste momento iremos criar uma procedure para controlar o campo CODIGO, incrementando automaticamente depois de dar o comando After Insert.

procedure TForm1.Incrementa;
begin
  with ZQuery2 do
    begin
      Close;
      Sql.clear;
      Sql.Add('SELECT MAX(CODIGO) AS ULTIMO FROM THECLUB');
      Open;
    end;
      ClientDataSet1['CODIGO']:=ZQuery2['ULTIMO']+1;
end;

Não esqueça de declarar a procedure

procedure Incrementa;

Coloque no evento OnClick do Button este código:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  ClientDataSet1.ApplyUpdates(0);
ShowMessage('AS INFORMAÇÕES FORAM ENVIADAS PARA O BANCO  DE DADOS!');
end;

Clique no ClienDataSet1 e no evento AfterInsert dê um foco no DbEdit2 e chame a Procedure Incrementa.

procedure TForm1.ClientDataSet1AfterInsert(DataSet: TDataSet);
begin
  DBEdit2.SetFocus;
  Incrementa;
end;  

E por final, no FormActivate ative o ClientDataSet1

procedure TForm1.FormActivate(Sender: TObject);
begin
  ClientDataSet1.Active:=true;
end;                  

Figura 08. Projeto em execução.  
  Conclusão

A Principal intenção deste artigo foi criar uma conexão do Delphi com o Mysql junto com o Zeos, demonstrar que é possível trabalhar com o DatasetProvider e o ClientDataSet com componentes de terceiros. Espero que tenham gostado e que sirva de base para criar outros programas. Até a próxima, Sucesso a todos.

Nenhum comentário:

Postar um comentário