Delphi - Sistema em ADO

A partir da versão do Delphi 5, a borland incorporou o acesso ao banco de dados Access através do ADO. Além do Access o ADO permite o acesso também ao SQl Server. Utilizando a mesma estrutura das tabelas e dos formulários de despesas, criaremos um sistema para aplicar este tipo de acesso.

Como foi visto na primeira parte sobre banco de dados, o dbnavigator não necessita de codificação nenhuma para manipular dados. Como você não terá acesso individualmente aos botões do mesmo, será difícil por exemplo: ao clicar no botão para inserir novo registro, você enviar o foco para uma determinada caixa, além de outros inconvenientes, como ao excluir exibir a confirmação, etc.

Para isso neste exemplo não vamos utiliza-lo.

Criando o Menu do Sistema

Crie uma nova pasta com o nome: Despesa_ADO

Inicie um projeto novo:
- Menu File / New / Application.
- Clique no botão Save All ou Menu File / Save All.
- Salve a unit como: Menu.
- Salve o projeto como: ctrDespesa.

Clique no componente MainMenu na guia Standard e na propriedade Name, coloque: mmMenu.

Dê um duplo clique neste componente que você acabou de colocar, e crie os menus com as seguintes opções:

Caption Shortcut
&Cadastro  
   C&liente Ctrl+L
   -  
   Sai&r Alt+F4
&Despesa  
   L&ançamento Ctrl+A
&Relatório  
  Cliente  
  Despesa  

Observação: Para criar os itens na vertical (um abaixo do outro):
- Depois que você fez o Menu Cadastro e pressionar Enter, o delphi deslocará para a direita.
- Clique na palavra Cadastro que o deslocamento será para baixo.

Neste projeto, será utilizado o Data Module. Os componentes adoTable e Data Source, serão colocados dentro do mesmo. O Data Module funciona como um repositório de dados, ou seja: ao invés de você colocar o adoTable e o Data Source em todos os formulários, basta colocar dentro do mesmo e fazer a referência em cada formulário.

Clique no Menu File / New / Data Module
Name: dmDespesa

Salve com o nome: Modulo, na mesma pasta onde está o banco de dados

Componente ADOConnection

Selecione a Guia ADO e selecione o componente ADOConnection e coloque dentro do módulo alterando as propriedades:
Name: cnnDespesa
ConnectionString: Clique no botão desta propriedade. Na janela que abriu, clique no botão Build. Selecione Microsoft Jet 4.0 OLE DB Provider e clique no botão Avançar. Clique no primeiro botão (tem três pontos) e selecione o banco de dados Despesa e clique em OK até fechar tudo.
LoginPrompt: False //Se estiver como True solicitará o nome do usuário e a senha do banco de dados.

Selecione a Guia ADO e selecione o componente ADOTable e coloque dentro do módulo alterando as propriedades:
Name: rsCliente
Connection: cnnDespesa //Fará a ligação com o ADOConnection.
TableName: Cliente.

Componente DataSource
Selecione o componente dsCliente que está no módulo e altere as propriedades:
Name: dsCliente.
DataSet: rsCliente.

Va novamente até a Guia ADO e selecione o componente ADOTable e coloque dentro do módulo alterando as propriedades:
Name: rsDespesa
Connection: cnnDespesa //Fará a ligação com o ADOConnection.
TableName: Despesa

Componente DataSource
Selecione o componente dsDespesa que está no módulo e altere as propriedades:
Name: dsDespesa.
DataSet: rsDespesa.

Fields Editor
Clique com o botão direito no componente rsCliente que você colocou no módulo, e selecione: Fields Editor.

Selecione Add Fields e confirme no botão OK.

Todos os campos serão inseridos na lista.

Faça o mesmo processo no rsDespesa.

Propriedade EditMask

Selecione o campo DataCadastro. Pressione a tecla F11 e na propriedade EditMask, clique no botão ao lado para configurar a máscara de entrada. Faça o mesmo com o telefone.

Propriedade DisplayFormat

Selecione o campo Valor no rsDespesa. Pressione a tecla F11 e na propriedade DisplayFormat, digite a seguinte máscara para que o campo apareça no formato de moeda: R$ ##,##.00

Formulário de Clientes

Monte o formulário de acordo com a imagem abaixo:

Não se esqueça que os edits (dbeCodigo, dbeNome, dbeCidade, dbeTelefone e dbeDataCadastro estão na guia Data Control, que na verdade chama-se dbEdit.

Você deverá criar mais dois painéis: pnlNavegacao e pnlOpcoes
Na guia Additional, coloque 10 botões bitbtn

Name Glyph Hint
btnPrimeiro Arrow1L Primeiro
btnAnterior Arrow2L Anterior
btnProximo Arrow1R Próximo
btnUltimo Arrow2R Último
btnNovo FileNew Novo
btnEditar Edit Editar
btnSalvar FileSave Salvar
btnExcluir Trash Excluir
btnCancelar Ignore Cancelar
btnConsulta CRDFILE1 Consulta
btnSair DoorOpen Sair

Selecione todos os botões e coloque na propriedade ShowHint como True, para que quando você passar o mouse sobre os mesmos, seja exibida a mensagem colocada na propriedade Hint.

Ligando o Data Module no formulário

Clique no Menu File/Use Unit. Selecione na janela o módulo. Caso não apareça o módulo (dmDespesa), é porquê o mesmo já está ligado ao formulário. Isto acontece quando você arrasta os campos da janela do Field Editor para o formulário.

Ligando os dbEdits em cada campo da tabela

Selecione o dbeEdit do código (dbeCodigo) e altere as propriedades:
DataSource: dmDespesa.rsCliente
DataField: Clique na seta ao lado e selecione o respectivo campo.

Faça isso com todos os dbEdits.

Codificando os botões

Primeiro:
dmDespesa.rsCliente.First
Anterior:
dmDespesa.rsCliente.Prior
Próximo:
dmDespesa.rsCliente.Next
Último:
dmDespesa.rsCliente.Last

Novo:
dmDespesa.rsCliente.Insert;
btnNovo.Enabled:=False;
btnEditar.Enabled := False;
btnExcluir.Enabled :=False;
btnSalvar.Enabled:= True;
dbeDataCadastro.Text := dateTostr(Date); //função dateTostr converte tipo Data para String
pnlDados.Enabled :=True;
dbeNome.SetFocus;
Editar:
dmDespesa.rsCliente.Edit;
btnEditar.Enabled := False;
btnNovo.Enabled := False;
btnExcluir.Enabled := False;
btnSalvar.Enabled := True;
pnlDados.Enabled := True;
dbeNome.SetFocus;
Salvar:
if Application.MessageBox('Deseja Salvar ?','Salvar', mb_YesNo + mb_IconQuestion) = idYes then
dmDespesa.rsCliente.Post //Salva (atualiza) o registro na tabela
else
dmDespesa.rsCliente.Cancel; //Cancela o Insert ou Edit
btnNovo.Enabled := True;
btnEditar.Enabled := True;
btnExcluir.Enabled := True;
btnSalvar.Enabled := False;
pnlDados.Enabled := False;
Excluir:
try
dmDespesa.rsCliente.Delete;
except
Application.MessageBox('Existem detalhes! Despesas lançadas!','Cliente',mb_Iconinformation);
end;
Cancelar:
dmDespesa.rsCliente.Cancel;
btnNovo.Enabled := True;
btnEditar.Enabled := True;
btnExcluir.Enabled := True;
btnSalvar.Enabled := False;
pnlDados.Enabled := False;
Sair:
Close;

Abrindo a tabela

- Selecione o formulário e na Guia Events
- Selecione onShow
- Dê um duplo clique dentro da caixa branca e na janela de código digite:
dmDespesa.rsCliente.Open;

Fechando a tabela

- Selecione onClose
- Dê um duplo clique dentro da caixa branca e na janela de código digite:
dmDespesa.rsCliente.Close;

Codificando o menu para abrir o formulário de cliente

- Pressione Shift+F12.
- Selecione frmMenu.
- Clique no Menu Cadastro / Cliente.
- Digite na janela de código: frmCliente.ShowModal e pressione F9 para executar o programa.
- Será exibido a mensagem de acordo com a imagem abaixo:

ou seja: a mensagem indica que o formulário de menu está fazendo uma referência para o formulário de clientes. Para que o delphi coloque na lista de formulários criados, responda Yes e pressione F9 novamente para ao acessar o Menu Cadastro / Cliente, o mesmo seja carregado.