ClipaTec Informática

Receba novidades por e-mail. Digite seu e-mail abaixo e clique no botão "Cadastrar"

Delivered by FeedBurner

22 de outubro de 2013

Cadastro com DBX - Parte 1

delphi
Salve, salve galera!
Estou de volta, e neste artigo vamos implementar um cadastro simples com o Delphi usando os componentes de conexão da paleta "DBExpress - DBX".
Primeiramente, crie uma pasta "CadastroDBX" por exemplo, e dentro dela, uma subpasta com o nome "DB".
Dentro da pasta "DB" extraia o arquivo de banco de dados que está no final do artigo para "download".
Agora vamos para o Delphi, crie um novo projeto, e:
  • salve a "Unit" principal com o nome "UFrmPrincipal";
  • Renomeie a propriedade "Name" do formulário para "frmPrincipal";
  • Renomeio a propriedade "Caption" para "Menu Principal";
  • Insira um componente "TMainMenu", crie o menu "Cadastro" e o submenu "Cliente";

Crie um novo formulário no projeto que será a tela de cadastro e:

  • salve a "Unit" com o nome "UFrmCadCliente";
  • Renomeie a propriedade "Name" do formulário para "frmCadCliente";
  • Renomeie a propriedade "Caption" para "Cadastro de Cliente";
  • Insira os seguintes componentes: 1 TLabelEdit, 1 TButton, 1 TDBGrid e 1 TDataSource;
  • Altere o "Caption" da "Label" para "Pesquisar" e a propriedade "Name" para "edtPesq";
  • Altere o "Name" do "DataSource" para "dsCliente";
  • Altere o "Name" do "Button" para "btnPesq" e o "Caption" para "Pesquisar";

Volte ao formulário principal e dê um duplo clique sobre o submenu "Cliente" e implemente da seguinte forma:


Note que estamos criando o formulário em tempo de execução. No trecho acima, criamos o formulário, armazenando-o em uma variável, usando o "Try/Finally", tentamos exibir o formulário criado, e logo após o mesmo for fechado, ele será liberado da memória.
É importante ressaltar, sempre que o programador é o responsável por criar algum objeto, ele também é o responsável por destruí-lo em algum momento.
Ok, como estamos criando nosso formulário em tempo de execução, agora temos que retirá-lo da lista de "auto create" do Delphi, pois como todos já sabem, só ficam nessa lista os formulários que serão criados automaticamente pelo Delphi ao executar a aplicação.
Para isso, clique no menu "Project/Options", clique no item "Forms", selecione o formulário de cadastro de cliente na lista "auto create forms" e transfira para a lista de "Availables forms".
Muito bem, crie um formulário do tipo "DataModule" e salve com o nome de "UDm" e renomeie a propriedade "Name" para "DM". Adicione os seguintes componentes: 1 TSQLConnection, 2 TSQLDataSet, 1 TSQLQuery, 2 TDataSetProvider e 2 TClientDataSet.

  • Com o TSQLConnection selecionado, renomeie a propriedade "Name" para "sqlConexao",  em "Driver" selecione "FireBird", "LoginPrompt" para "false",  duplo-clique na propriedade "Params" e na chave (Key) "Database" coloque o caminho do arquivo do banco de dados, clique e "OK" e altere a propriedade "Connected" para "True";
  • Em um dos TSQLDataSet, altere a propriedade "Name" para "sqlDsAux", aponte a propriedade "SQLConnection" para o componente "sqlConexao" e na propriedade "CommandText" digite a seguinte instrução SQL: "select id_cliente, nome_cliente from cliente where nome_cliente like :nome_cliente";
  • Em um dos TDataSetProvider, altere a propriedade "Name" para "dspAux" e aponte a propriedade "DataSet" para o componente "sqlDsAux";
  • Em um dos TClientDataSet, altere a propriedade "Name" para "cdsAux", aponte a propriedade "ProviderName" para o componente "dspAux", agora de um duplo-clique sobre o "cdsAux" e adicione todos os campos no "Fields Editor";
Feito isso, acabamos de configurar os componentes que usaremos para realizar a consulta de cliente, como vocês observaram, não estou trazendo todos os campos da tabela, isso é de propósito, pois se tratando de performance, devemos otimizar as consultas, trazendo apenas as informações importantes, com isso, as consultas ficam bem mais rápidas em aplicações com milhares de informações no banco, uma vez que reduz a quantidade de pacotes de dados "DataPackage" que estão sendo transportados pela rede.
Muito bem, vamos agora configurar os componentes que restaram, estes serão usados para realizar o cadastro de cliente, então:

  • selecione o TSQLQuery, altere a propriedade "Name" para "sqlCliente", aponte a propriedade "SQLConnection" para o componente "sqlConexao", clique no botão elíptico da propriedade "SQL", na janela que abrir, digite a seguinte instrução SQL: "select * from cliente where id_cliente = :id_cliente", adicione todos os campos na janela "Fields Editor" e altere a propriedade "ProviderFlags" de todos os campos, exceto o "id_cliente" para "pfInUpdate";
  • com o outro DataSetProvider, altere o "Name" para "dspCliente", aponte a propriedade "DataSet" para "sqlCliente" e altere a propriedade "UpdateMode" para "upWhereKeyOnly";
  • com o outro TClientDataSet, altere a propriedade "Name" para "cdsCliente", aponte a propriedade "ProviderName" para "dspCliente", adicione os todos os campos no "Fields Editor" e novamente, altere a propriedade "ProviderFlags" de todos com exceção do campo "id_cliente" para "pfInUpdate";
  • com o outro TSQLDataSet, altere a propriedade "Name" para "sqlDsUltimo", aponte a propriedade "SQLConnection" do mesmo para "sqlConexao", na propriedade "CommandText" digite: "select max (id_cliente) as Ultimo from cliente" e adicione todos os campos ao "Fields Editor";
Com isso concluímos mais uma etapa, agora todos os componentes do "DataModule" estão configurados e prontos para serem utilizados, qualquer erro ou dúvida, poste no comentário do artigo que estarei ajudando:



Volte ao formulário de cadastro de cliente e vamos implementar o botão "Pesquisar", então, dê um duplo-clique sobre o mesmo e implemente da seguinte forma:


Note que estamos passando para o parâmetro na posição "0" do "cdsAux" o valor digitado no "edtPesq", e se você verificar, o parâmetro "0" é o ":nome_cliente" que passamos por meio da instrução "SQL" desta forma, ao abrir o "cdsAux" ele vai retornar o(s) registro(s) correspondente(s) ao nome digitado pelo usuário.
As vezes temos o costume de trazer o "ClientDataSet" de consulta já aberto ao abrir a tela de consulta, sendo assim, o usuário apenas digita o nome e automaticamente já vai filtrando na grid, em sistemas de pequeno porte onde a quantidade de dados não é muito grande não vejo muito problema, embora não seja uma boa prática, contudo, em sistema grandes que armazenará grande quantidade de registros, é suicídio, pois quanto mais dados tiver armazenado, mais tempo o "ClientDataSet" vai demorar para abrir, e se tratando de performance, isso é inaceitável, por isso temos sempre que visar a otimização de consultas ao máximo e jamais pensar apenas no "hoje", temos que pensar na possibilidade do sistema crescer, se você não faz uma boa análise agora, e não se prepara, com certeza lá na frente o trabalho é dobrado para readaptar o sistema.
Sempre digo, que perca bastante tempo projetando e analisando o projeto de software e banco, futuramente isso vai te ajudar muito, até porque ao desenvolver um sistema para o cliente, tudo inicialmente é uma coisa simples, mas com o tempo o usuário vai requisitando novas funcionalidades e recursos, no final, o que era simples vira um sistema complexo.
Ainda no formulário de cadastro de cliente, selecione a "DBGrid" e aponte a propriedade "DataSource" para o componente "dsCliente", após isso, selecione o "dsCliente" e aponte a propriedade "DataSet" para o "cdsAux".
Muito bem, a parte de consulta já está pronta, no próximo artigo vamos concluir este tutorial criando e implementando a tela de manutenção e as funções inserir, alterar e excluir. Até lá. Abraço.

(Por Welinton Junior Dias)

0 comments:

Postar um comentário

Visite nossa página de Política de comentarios antes de comentar para ter certeza de que seu comentário não será excluído! Lembre-se, assim que aprovarmos o teu comentário ele será publicado, por isso, não deixe de sempre visitar nosso blog e conferir nossa resposta ao seu comentário, abraço!