Curso de Delphi - Aula 03
By Tiago Assis

Peço desculpas à comunidade pela demora, meus trabalhos andam um tanto corridos, muitos softwares para entregar e acabei atrasando um pouco nossa 3ª aula de Delphi. Mas ai vai para o pessoal que está estudando comigo.

A aula de hoje será bem intensa, pois aprenderemos o seguinte:

- Banco de dados SQL Server
- Componente ADO para SQL Server
- Condições (Try / Except / Finally) tratamento de erros
- Criando cadastro / consulta simples
- Filtro tabelas
- Exercícios de fixação

Mãos a Obra


Primeira coisa que você deve ter é o SQL Server instalado em seu computador, qualquer versão serve, porém utilizaremos nesse exemplo o SQL Server 2005. Caso você não tenha um SQL Server instalado em seu computador, abaixo o SQL Server 2005 para download:

Download do SQL Server: [Somente membros podem ver os links. ]


Caso não saiba como instalar o SQL Server 2005 abaixo o link do tutorial de como instalar (você pode procurar outros tutoriais no youtube mesmo):

Tutorial de como instalar o SQL Server: [Somente membros podem ver os links. ]


O SQL Server

Trata-se de um software de gerenciamento de dados em diversas tabelas e databases, conhecido por todos como Banco de Dados. Em termos de serviços online, agilidade de transferências de dados e informações, o SQL Server atende muito bem essas necessidades. Existem outras plataformas de banco de dados compatíveis com o Delphi, entre elas estão: MySQL, ProstgleSQL, Paradox, MSAccess, Interbase, Oracle, enfim, o Delphi tem uma vasta compatibilidade com diversos tipos de plataformas para banco de dados.

Nesse estudo utilizaremos o SQL Server, já que é o mais utilizado para sistemas em Delphi.



Database

Database é o local onde ficarão todas as tabelas de dados do seu projeto é como se fosse uma grande pasta armazenando diversas planilhas.


Tabela

Trata-se do local onde são armazenados todos os dados necessários do nosso projeto.


Podemos utilizar um número infinito de database(s) e tabela(s) em um único projeto Delphi, nessa aula utilizaremos somente 1 database e 1 tabela.


Acessando o SQL Server

Podemos criar uma database manualmente ou via Query no SQL Server. vamos ao exemplo:

Abra o SQL Server (Menu Iniciar > Todos os Programas > Microsoft SQL Server 2005 > SQL Server Management Studio)

Ao executar o SQL Server, aparecerá uma janela solicitando as informações para logar ao servidor. Escolha em "Authentication" a forma desejada para logar.

>>> Windows Authentication: Login automático pela autenticação do windows.
>>> SQL Server Authentication: Autenticação que exige o login e senha do SQL Server (configurados na instalação do mesmo).

Após logar no SQL Server teremos uma janela dividida, onde do lado esquerdo teremos a relação de todas os principal acessos do SQL Server como Databases, tabelas, Segurança, SQL Agent, etc. E no lado direito um sumário, onde são apresentados as informações das opções selecionadas no lado esquerdo. No momento iremos focar somente nas databases e tabelas.


Criando a Database

- Vamos expandir a pasta Databases clicando no botão [+]
- Clique com o botão direito na pasta Databases e logo após New Database...
- Abrirá uma janela para adicionar as informações da Database, digite em Database name: EstudoDelphi e logo após clique em OK.


Observe que após seguir o processo acima, será criada a nossa Database "EstudoDelphi" na pasta Databases do SQL Server. Clique para expandir a Database (clique em [+]).

Ao expandir nossa Database encontraremos as seguintes pastas: Database Diagrams, Tables, Views, Synonyms, Programmability, Service broker, Storange, Security. Em nossa aula utilizaremos somente a pasta Tables, portanto você pode expandir clicando em [+] ao lado da pasta.


Criando a tabela de dados

Com a pasta Tables expandida, clique com o botão direito do mouse sobre ela e logo após New table...

Do lado direito da janela do SQL Sevrer, abrirá uma espécie de planilha, nessa planilha vamos definir as variáveis que irão armazenar os dados do nosso projeto.

Temos 3 colunas:

>>> Columm Name: Nome da nossa variável
>>> Data Type: Tipo de variável (tipo de dado que será armazenado)
>>> Allow Nulls: Se é um campo exclusivo ou não (aceita ou não registros repetidos)


Adicione as seguintes informações para esta tabela:

Nome >> varchar(50)
Idade >> varchar(3)
Fone >> varchar(15)

Salve a tabela com nome de "Clientes".



Componentes ADO
Crie uma pasta com o nome que você desejar, nessa pasta será salvo o nosso projeto. Abra o Delphi e inicie uma nova aplicação (Menu File > New > Application).


ADO é uma excelente opção para trabalhar com diversas plataformas de banco de dados, principalmente o SQL Server, pois apresenta muito mais compatibilidade que outros componentes como DBExpress ou ZeosLib. A vantagem de utilizar o ADO é que você não necessita instalar ou adicionar qualquer DLL para que seu software possa rodar em outras máquinas, diferente do DBExpress e ZeosLib (sinceramente acho dor de cabeça esses 2 componentes, prefiro 1000 vezes mais o ADO).


Os componentes ADO se encontram na paleta ADO do nosso Delphi. Para um bom funcionamento e perfeita interação do ADO com nosso banco de dados SQL Server precisamos do componente responsável pela conexão com o Database (ADOConnection), o componente responsável pela conexão e gerenciamento de dados de nossa tabela Clientes (ADODataSet) e o componente responsável em gerenciar os campos e gravar as informações em nossa tabela de Clientes (DataSource - encontrado na paleta Data Aceess).


Adicione no seu Form os seguintes componentes:

ADOConnection - Paleta ADO
ADODataSet - Paleta ADO
DataSource - Paleta Data Access

Faremos a conexão do banco de dados tudo manualmente (via código) para já aproveitarmos as condições Try / Except e Finally. No Evento OnShow do Form1 adicione o seguinte código:

Código:
procedure TForm1.FormShow(Sender: TObject);
begin
{*** Configurando DataSource}
DataSource1.AutoEdit:=false; // Desativa auto editar dados da tabela
DataSource1.DataSet:=ADODataSet1; // DataSet de ligação
{*** Configuração do database EstudoDelphi}
  try // Condição para sucesso
    ADOConnection1.LoginPrompt:=false; // Desativar solicitação de login
    ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password=SUA_SENHA_SQL;Persist Security Info=True;User ID=sa;Initial Catalog=EstudoDelphi;Data Source=(local)'; // Informações de conexões ADO
    ADOConnection1.Connected:=true; // Ativar conexão da tabela
  except // Caso falhar a conexão
    ShowMessage('Erro ao tentar conectar bando de dados!');
  end;
{*** Conexão tabela Clientes}
  try  // Condição para sucesso
    ADODataSet1.Connection:=ADOConnection1; // Conexão do ADODataSet (Fonte de Dados)
    ADODataSet1.CommandText:='select * from Clientes'; // Conexão da tabela de Clientes
    ADODataSet1.Active:=true; // Ativar conexão da tabela Clientes
  except  // Caso falhar a conexão
    ShowMessage('Erro ao tentar conectar a tabela Clientes!');
  end;
end;
Note que utilizamos a condição Try e Except para conectar manualmente (via programação) o nosso banco de dados SQL Server.

Try e Except -> Condição de sucesso e falha, como mostra no código acima, dando tudo certo o try vai prevalecer, dando algo errado o except vai ser executado. Isso é excelente para tratamento de possíveis erros em nosso software. No exemplo acima, saberemos exatamente quando o erro for a conexão de banco de dados ou a conexão da tabela clientes.

O Finally serve como finalização de uma condição. Por exemplo, o try vai executar uma função e o finally vai finalizar a mesma (muito utilizado para variáveis booleanas).

Exemplo de Try e Finally (somente exemplo)
Código:
try
  F_Form1.ShowModal;
  F_Form1.Realese;
finally
    FreeAndNil(F_Form1)
end;


Criando Cadastro Simples

Depois de estar tudo certo com a conexão de nosso banco de dados, o próximo passo é criar um cadastro para que possamos adicionar as informações nesse mesmo banco de dados. Lembrando que tempos os seguintes campos em nossa tabela de Clientes: Nome, Idade e Telefone. Em nosso formulário adicione os seguintes componentes:

4 Label - Paleta Standard
4 Edit - Paleta Standard
5 Button - Paleta Standard
1 DBGrid - Paleta Data Controls

Altere as propriedades Captions dos seguintes componentes:
Label1 = Nome
Label2 = Idade
Label3 = Telefone
Button1 = Novo
Button2 = Salvar
Button3 = Excluir
Button4 = Cancelar
Button5 = Buscar

Altere a propriedade DataSource do DBGrid para "DataSource1".

Abaixo estão os códigos para as funções de nosso cadastro, insira os códigos no Evento OnClick de cada botão citado abaixo:


Button1 = Botão Novo - Adicionar novo registro
Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
{*** Limpar os campos Edit1}
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
{*** Comando Inserir novo registro}
ADODataSet1.Insert;
end;

Button2 = Botão Salvar - Salvar dados

Código:
procedure TForm1.Button2Click(Sender: TObject);
begin
{*** Transferir dados dos campos para o banco de dados}
ADODataSet1.FieldByName('Nome').Text:=Edit1.Text; // Campo nome recebe os dados do edit1
ADODataSet1.FieldByName('Idade').Text:=Edit2.Text; // Campo Idade recebe os dados do Edit2
ADODataSet1.FieldByName('Fone').Text:=Edit3.Text; // Campo Fone recebe os dados do Edit3
ADODataSet1.Post; // Salvar dados
ShowMessage('Dados gravados com sucesso!');
end;

Button3 = Botão Excluir - Apagar cadastro selecionado no DBGrid1

Código:
procedure TForm1.Button3Click(Sender: TObject);
begin
{*** Esse código irá apagar o cadastro setado no DBGrid1. Para setar um
cadastro no DBGrid1, basta clicar em qualquer célula do mesmo em tempo de
execução.}
ADODataSet1.Delete; // Deleta o registro selecionado
ShowMessage('Registro deletado com sucesso!');
end;

Button4 = Botão Cancelar - Cancela o andamento do novo registro

Código:
procedure TForm1.Button4Click(Sender: TObject);
begin
ADODataSet1.Cancel; // Cancela o andamento do registro
// Limpar os campos edit
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
ShowMessage('Registro cancelado!');
end;

Pressione F9 no seu projeto e teste o cadastro funcionando perfeitamente


Consulta simples
Consulta no Delphi é muito importante quando se um vasto número de registros em um banco de dados, existem formas bem complexas de consultas no Delphi, porém ensinarei aqui a mais básica. Em caso de querer saber mais estarei aqui para auxiliá-lo no que for preciso na Área Delphi da PerfectZone.

Utilizaremos em nossa consulta um filtro de tabela, que irá buscar o nome exato do registro cadastrado.

No OnClick botão buscar adicione o seguinte código:

Código:
procedure TForm1.Button5Click(Sender: TObject);
begin
{*** Filtrando a tabela}
ADODataSet1.Filtered:=false; // Desativa o filtro
ADODataSet1.Filter:='Nome =' + QuotedStr(Edit4.Text); // Dados para filtrar (Edit4 aqui está sendo o campo Busca/Consulta)
ADODataSet1.Filtered:=true; // Filtra a tabela de acordo com o que está digitado no campo de busca (Edit4)
end;
Para a consulta funcionar perfeitamente deve-se digitar o nome exato do cliente, pois nesse caso nosso filtro está sendo pelo campo Nome de nossa tabela Clientes.



Exercícios de Fixação

1 - No SQL Server crie um database chamado Empresa e uma tabela chamada Funcionarios.

2 - Na tabela funcionarios adicione as seguintes variáveis:
Nome >> varchar(50)
Fone >> varchar(3)
Cargo >> varchar(25)

3 - Crie um formulário de cadastro de funcionários onde a consulta dos mesmos se realizará pelo campo Cargo.





Espero que com essas dicas simples você consiga aprofundar seus estudos em futuros softwares mais complexos.