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.