Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 07 de Agosto de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
72 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Construindo uma aplicação simples com Delphi e Firebird (parte 2)
Publicado por ggiovanii : Sexta, Julho 08, 2011 - 05:05 GMT-3 (4202 leituras)
Comentários 16 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Bruno Caltran Olá amigos! Dando continuidade ao artigo anterior, vamos desenvolver nossa interface e relizar a conexão com o banco de dados.

Inicie o Delphi, salve sua nova aplicação, eu vou chamá-la de ExemploArtigo.drp

Dica: Sempre que trabalhar com o Delphi, procure manter organizada a pasta da aplicação, isso facilitará a futura edição do código por programadores, existem alguns artigos na internet sugerindo formas de nomenclatura e organização dos arquivos, eu vou sugerir a seguinte organização para a nossa aplicação:

Pasta da aplicação
C:\ExemploArtigo

Diretório onde serão salvos os códigos fonte
C:\ExemploArtigo\Fontes

Diretório para o banco de dados
C:\ExemploArtigo\BD

 

Dando sequencia : Altere no Object Inspector a propriedade Caption para Cadastro de Clientes.

Na aba de componentes "Standart", insira um "Panel" em Object Inspector altere a propriedade Align para alBottom. Depois insira um "GroupBox" em Object Inspector altere a propriedade Align para alTop. Continuando vá até a aba "Data Controls" adicione o componente "DBGrid1" e em Object Inspector altere a propriedade Align para alClient.

Nosso form deverá ficar conforme imagem abaixo:

Continue desenhando a interface, use sua criatividade! Eu desenhei um form simples, fiz uma imagem para utilizarmos de topo... Vamos precisar dos campos para pesquisa e cadastro:

Nomenclatura dos campos:

Campos de pesquisa

edtPTipo tipo TEdit
edtPNome tipo TEdit

Campos do Formulário de cadastro

cbTipo tipo TComboBox
edtNome tipo TEdit
edtTelefone tipo TEdit
edtEmail tipo TEdit

Botões

btnCadastrar tipo TButton
btnAlterar tipo TButton
btnExcluir
tipo TButton

 

Pronto! Agora com o formulário principal criado, vamos criar um novo item, um Data Module (Conforme Imagem abaixo)

 

Salve a Unit dentro da pasta Fontes com o nome DMCada (Conforme imagem abaixo)

 

Em Object Inspector altere a propriedade "NAME" para DM.

Agora vamos criar nossa conexão com o banco de dados na aba dbExpress adicione ao Data Module o Componente SQLConnection (Conforme imagem abaixo).

Agora vamos configurar a conexão, mude a propriedade name para "Conexao" e de um duplo clique sobre o componente clique no botão "[ + ]" Add Connection

Selecione a opção "Interbase" em Driver Name e após digite "ExemploArtigo" em Connection Name - Clique em OK

Em Database informe o caminho do banco de dados no nosso caso "C:\ExemploArtigo\BD\BANCODADOS.FDB"
Altere a opção SQLDialect para 3 - Clique em OK

De volta a janela anterior selecione o componente SQLConnection "Conexão" e altere as seguintes propriedades: (Conforme imagem abaixo)

LoginPrompt = False

Connected = True

 

 

 

 

 

 

 

Pronto a conexão com o banco de dados está criada, agora vamos criar a consulta SQL, para isso adicione no Data Module os seguintes componentes:

Na janela dbExpress o componente SQLDataSet

Na janela Data Access o componente DataSetProvider

Na janela Data Access o componente ClientDataSet

Na janela Data Access o componente DataSource

Verifique na imagem abaixo a ordem dos componentes

Agora vamos alterar os nomes "na propriedade Name" de cada componente e configurá-los:

SQLDataSet = sqlClientes

DataSetProvider = dspClientes

ClientDataSet = cdsClientes

DataSource = dsClientes

Agora vamos configurar os componentes na sequencia em que os inserimos:

 

1º - Configurando o SQLDataSet : sqlClientes
Nota: Esse componente será responsável pela conexão direta com a tabela, ele estará relacionado ao componente SQLConnection e ao componente DataSetProvider

Clique uma vez sobre o componente sqlClientes na opção SQLConnection em Object Inspector selecione o componente "Conexão"

Continuando, selecione componente sqlClientes, em Object Inspector digite o comando abaixo no campo CommandText:



select * from CLIENTES

Agora "dê" um duplo-clique sobre o componente sqlClientes clique com o botão direito do mouse dobre a janela aberta e selecione a opção "add all fields" conforme imagem abaixo:

Ainda na janela (exibida na imagem acima) selecione o campo SEQ e em Object Inspector altere a propriedade Required para False

 

 

2º - Configurando o DataSetProvider = dspClientes
Nota: Esse componente estará relacionado ao componente SQLDataSet e ao componente ClientDataSet

Clique uma vez sobre o componente dspClientes em Object Inspector selecione na opção DataSet o componente sqlClientes

 

 

3º - Configurando o ClientDataSet = cdsClientes
Nota: Esse componente estará relacionado ao componente DataSetProvider e ao componente DataSource

Clique uma vez sobre o componente cdsClientes e em Object Inspector na opção ProviderName selecione a opção dspClientes

Agora "dê" um duplo-clique sobre o componente cdsClientes clique com o botão direito do mouse dobre a janela aberta e selecione a opção "add all fields".

 

 

4º - Configurando o DataSource = dsClientes
Nota: Esse componente estará relacionado somente ao componente ClientDataSet

Clique uma vez sobre o componente dsClientes e em Object Inspector na opção DataSet selecione a opção cdsClientes


Pronto, terminamos nossas configurações com o banco de dados! Agora vamos à programação!

 

Editando o código da Unit frmPrincipal adicione logo abaixo de implementation o seguinte trecho em "vermelho":

frmPrincipal


implementation 
{$R *.dfm} 


Uses 
DmCada; 

Nota: Você não pode usar o comando Uses para dizer ao compilador onde encontrar um arquivo de origem, o arquivo já deve fazer parte do projeto.

Clique uma vez sobre o componente DBGrid1 e em Object Inspector na opção DataSet selecione a opção DataSource selecione a opção dsClientes, conforme imagem abaixo:

 

Agora "dê" um duplo-clique sobre o componente DBGrid1 clique com o botão direito do mouse dobre a janela aberta e selecione a opção "add all fields"

Selecione os campos "um a um " e defina o tamanho pretendido, alterando a propriedade Width em object inspector.

 

No evento FormShow (Quando o form for exibido) vamos ativar o cdsClientes, aproveitando o mesmo evento, vamos desabilitar os botões "Salvar" e "Cancelar".

procedure TForm1.FormShow(Sender: TObject);
begin
DM.cdsClientes.Active := True; btnSalvar.Enabled := False;
btnCancelar.Enabled := False;
end;

Vamos programar os eventos de inclusão, alteração e exclusão dos registros.

1º Inclusão / Cadastro

"Dê" um duplo-clique no botão Novo

btnCadastrarClick

procedure TForm1.btnCadastrarClick(Sender: TObject); 
begin 
DM.cdsClientes.Append; 
btnSalvar.Enabled := True; btnCancelar.Enabled := True; btnCadastrar.Enabled := False; btnAlterar.Enabled := False; btnExcluir.Enabled := False; end;

Alteração

"Dê" um duplo-clique no botão Alterar

btnAlterarClick

procedure TForm1.btnAlterarClick(Sender: TObject); 
begin 


//Primeiro vamos validar se há itens para edição 
if DM.cdsClientes.RecordCount = 0 then 
begin MessageDlg('Não há registros para alterar!', mtWarning, [mbOK], 0); 
exit; 
end; 


//Agora vamos carregar os valores da tabela nos campos 


cbTipo.Text := DM.cdsClientes.FieldByName('TIPO').AsString; 
edtNome.Text := DM.cdsClientes.FieldByName('NOME').AsString; 
edtTelefone.Text := DM.cdsClientes.FieldByName('TELEFONE').AsString; 
edtEmail.Text := DM.cdsClientes.FieldByName('EMAIL').AsString; 


DM.cdsClientes.Edit; //Colocando em modo de edição


btnSalvar.Enabled := True; 
btnCancelar.Enabled := True; 
btnCadastrar.Enabled := False; 
btnAlterar.Enabled := False; 
btnExcluir.Enabled := False; 

end;

Exclusão

"Dê" um duplo-clique no botão Excluir

btnExcluirClick

procedure TForm1.btnExcluirClick(Sender: TObject); 
begin 
if DM.cdsClientes.RecordCount = 0 then 
begin 
MessageDlg('Não há registros para excluir!', mtWarning, [mbOK], 0); 
exit; 
end     
	else
     begin 
       If MessageDlg('Deseja realmente excluir este cliente ?',mtConfirmation,
         [mbNo, mbYes],0) <> 6 Then
	    Exit;        
		DM.cdsClientes.Delete;        
DM.cdsClientes.ApplyUpdates(0); DM.cdsClientes.Refresh;
MessageDlg('Registro excluido com sucesso!', mtInformation, [mbOK], 0);
end; end;

Salvando as informações

"Dê" um duplo-clique no botão Salvar

btnSalvarClick

procedure TForm1.btnSalvarClick(Sender: TObject);
begin
//Antes de gravar vamos validar os campos

if edtNome.Text = '' then
begin
MessageDlg('Preencha o campo Nome', mtWarning, [mbOK], 0);
exit;
end;

if edtTelefone.Text = '' then
begin
MessageDlg('Preencha o campo Telefone', mtWarning, [mbOK], 0);
exit;
end;

if edtEmail.Text = '' then
begin
MessageDlg('Preencha o campo Email', mtWarning, [mbOK], 0);
exit;
end;

DM.cdsClientes.FieldByName('TIPO').AsString := cbTipo.Text;
DM.cdsClientes.FieldByName('NOME').AsString := edtNome.Text;
DM.cdsClientes.FieldByName('TELEFONE').AsString := edtTelefone.Text;
DM.cdsClientes.FieldByName('EMAIL').AsString := edtEmail.Text;

DM.cdsClientes.ApplyUpdates(0);
DM.cdsClientes.Refresh;

MessageDlg('Informações Salvas com sucesso!', mtInformation, [mbOK], 0);

btnSalvar.Enabled := False;
btnCancelar.Enabled := False;
btnCadastrar.Enabled := True;
btnAlterar.Enabled := True;
btnExcluir.Enabled := True; // Limpa os campos edtNome.Clear;
edtTelefone.Clear;
edtEmail.Clear;

end;

 

5 º Cancelamento da operação

"Dê" um duplo-clique no botão Cancelar

btnCancelarClick

procedure TForm1.btnCancelarClick(Sender: TObject); 
begin 


Dm.cdsClientes.Cancel; // Cancela a operação no cds


btnSalvar.Enabled := False; 
btnCancelar.Enabled := False; 
btnCadastrar.Enabled := True; 
btnAlterar.Enabled := True; 
btnExcluir.Enabled := True; 


// Limpa os campos 
edtNome.Clear; 
edtTelefone.Clear; 
edtEmail.Clear; 


end; 

Por enquanto é isso pessoal! Na terceira e última parte dessa sequencia de artigos, faremos a pesquisa e a conclusão do projeto.

 

Um grade abraço e até o próximo artigo!

Por: Bruno Giovani Caltran
Contato: bruno@pirabyte.com.br |
Twitter: http://twitter.com/bgcaltran



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: Andretrust (rodrigues.andre@itelefonica.com.br) : Jul 14, 2011 - 07:57
(Informações sobre o membro | Enviar uma mensagem) http://http://
Caro Bruno,
A primeira imagem ficou posicionada em cima de parte do texto, ocultando parte do artigo.
Parabéns pelo seu trabalho.


por: MAIKON_SOLIDO (MAIKON@JCONDOR.COM.BR) : Jul 19, 2011 - 04:15
(Informações sobre o membro | Enviar uma mensagem)
Muito bom o artigo, parabéns e continue com esse trabalho.


por: coelho1955 (coelho1955@yahoo.com.br) : Ago 09, 2011 - 09:01
(Informações sobre o membro | Enviar uma mensagem)
Estou começando no Firebird e o artigos estão me ajuando. Quando sairá o próximo artigo?


por: Pagliarini (andriopg@hotmail.com) : Ago 10, 2011 - 04:39
(Informações sobre o membro | Enviar uma mensagem) http://http://
Otimo artigo. Assim fica muito melhor step by step.


por: naiarapattini (naiara_pattini@hotmail.com) : Ago 24, 2011 - 04:47
(Informações sobre o membro | Enviar uma mensagem) http://http://
To adorando os artigos.. e acompanhando também!


por: ricardodnz (ricardodnz@yahoo.com.br) : Ago 26, 2011 - 11:18
(Informações sobre o membro | Enviar uma mensagem) http://
Grande Bruno...

Parabens pelo artigo.

Faltou ae o link para o download dos fontes para estudo.

Att,


por: waferry (waferry@ig.com.br) : Ago 30, 2011 - 04:35
(Informações sobre o membro | Enviar uma mensagem) http://
Ótimo artigo!
Pena que não consegui conectar com o banco.
Aparece essa mensagem:
wrong or obsolete version
unsupported on-disk structure for file c:\ExemploArtigo\BANCODADOS.FDB


por: flavin01 (flaviodominios@gmail.com) : Set 25, 2011 - 03:25
(Informações sobre o membro | Enviar uma mensagem)
ola amigo ,, vlw mto bom post , me ajudo muito com um trabalho da facul!!1


abrçsss

continui trabalho ta legal!!

pra mim falta a parte de pesquisa pra entrega o trabalho , c vc poder me ajudar!!]


por: ggiovanii (bruno@pirabyte.com.br) : Out 26, 2011 - 08:12
(Informações sobre o membro | Enviar uma mensagem)
Amigos já enviei a 3 e ultima parte do artigo para o responsável pelo site.

Agora é só aguardar a publicação...

Obrigado!


por: lincolnvga (lincolnvga@hotmail.com) : Nov 03, 2011 - 08:04
(Informações sobre o membro | Enviar uma mensagem) http://http://
muitobom oexemplo obrigado pela ajuda


por: khoallah (jonascerantola@hotmail.com) : Jan 31, 2012 - 09:50
(Informações sobre o membro | Enviar uma mensagem)
Deu quase tudo certo, mas qdo fui conectar/configurar o cdsCliente dá um erro MIDAS.DLL


por: brainlock (herminiolpaesjr@gmail.com) : Fev 10, 2012 - 04:14
(Informações sobre o membro | Enviar uma mensagem)
na procedure gravar eu faço diferente:

if validarCampos then

DM.cdsClientes.FieldByName('TIPO').AsString := cbTipo.Text;
DM.cdsClientes.FieldByName('NOME').AsString := edtNome.Text;
DM.cdsClientes.FieldByName('TELEFONE').AsString := edtTelefone.Text;
DM.cdsClientes.FieldByName('EMAIL').AsString := edtEmail.Text;

DM.cdsClientes.ApplyUpdates(0);
DM.cdsClientes.Refresh;


MessageDlg('Informações Salvas com sucesso!', mtInformation, [mbOK], 0);

btnSalvar.Enabled := False;
btnCancelar.Enabled := False;
btnCadastrar.Enabled := True;
btnAlterar.Enabled := True;
btnExcluir.Enabled := True;

// Limpa os campos
edtNome.Clear;
edtTelefone.Clear;
edtEmail.Clear;
end;

Coloco isso na:

function validarCampos: boolean;
begin
validarCampos := False;
if edtNome.Text = '' then
begin
MessageDlg('Preencha o campo Nome', mtWarning, [mbOK], 0);
end
else if edtTelefone.Text = '' then
begin
MessageDlg('Preencha o campo Telefone', mtWarning, [mbOK], 0);
end
else if edtEmail.Text = '' then
begin
MessageDlg('Preencha o campo Email', mtWarning, [mbOK], 0);
end
else
validarCampos := True;
end
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados