Quando usar DataModule
Olá, pessoal.
Estou iniciando meus estudos sobre o Delphi (estou usando a versão mais atual, XE 2) e surgiu a seguinte dúvida: quando e por que eu devo utilizar DataModules?
Vi que geralmente o componente de conexão é colocado em um DataModule, mas qual a diferença de fazer assim e este componente no form principal?
Obrigada.
Estou iniciando meus estudos sobre o Delphi (estou usando a versão mais atual, XE 2) e surgiu a seguinte dúvida: quando e por que eu devo utilizar DataModules?
Vi que geralmente o componente de conexão é colocado em um DataModule, mas qual a diferença de fazer assim e este componente no form principal?
Obrigada.
Rachel Andrade
Curtidas 0
Respostas
William
02/08/2012
Olá Rachel seja bem vinda ao mundo delphi, o DataModule é uma facilidade que podemos utilizar para trabalhar com acesso a banco de dados, existem situações em que podemos usar 1 ou até mais DataModules. Nele podemos configurar todos os componentes que vão participar da conexão e manipulação dos dados da sua aplicação.
Uma aplicação que trabalha com várias tabelas e procedures, seria necessário configurar um conjunto de componentes (TSQLConnection, (TSQLTabel ou TSQLQuery ou TSQLDataSet), TDataSetProvider, TClientDataSet, TDataSource) para acessar uma tabela, mas já imaginou ser vc quisesse acessar essa mesma tabela em 4 forms diferentes, então esse conjunto de componentes teria que ser configurado 4 vezes sendo uma para cada form. Já usando um DataModule vc pode centralizar toda a conexão e acesso as tabelas do banco, ou seja, vc configura esse conjunto uma vez no DataModule e pode utilizar em quantos forms forem necessários. Sendo necessários apenas declarar a Unit do DataModule na seção interface, na cláusula Uses dos forms onde será necessários acessar os dados da tabela.
Exemplo: 1 banco de dados com várias tabelas, vc pode usar um DataModule só para conexão, outro só para as tabelas do adminstrativo e outra para as tabelas da produção, conforme for necessários vc carrega ou não esses DataModules.
Bom citei aqui exemplos básicos de uso do DataModule, mas existem inúmeras situaçõe em que ele pode ser útil.
OBS.: Esse conjunto de componentes (TSQLConnection, (TSQLTabel ou TSQLQuery ou TSQLDataSet), TDataSetProvider, TClientDataSet, TDataSource)deverá ser utilizado caso vc esteja usando engine de acesso DBExpress, devido aos componentes DataSets serem unidirecionais então se faz necessário o uso do TClientDataSet para navegação bidirecional.
Uma aplicação que trabalha com várias tabelas e procedures, seria necessário configurar um conjunto de componentes (TSQLConnection, (TSQLTabel ou TSQLQuery ou TSQLDataSet), TDataSetProvider, TClientDataSet, TDataSource) para acessar uma tabela, mas já imaginou ser vc quisesse acessar essa mesma tabela em 4 forms diferentes, então esse conjunto de componentes teria que ser configurado 4 vezes sendo uma para cada form. Já usando um DataModule vc pode centralizar toda a conexão e acesso as tabelas do banco, ou seja, vc configura esse conjunto uma vez no DataModule e pode utilizar em quantos forms forem necessários. Sendo necessários apenas declarar a Unit do DataModule na seção interface, na cláusula Uses dos forms onde será necessários acessar os dados da tabela.
Exemplo: 1 banco de dados com várias tabelas, vc pode usar um DataModule só para conexão, outro só para as tabelas do adminstrativo e outra para as tabelas da produção, conforme for necessários vc carrega ou não esses DataModules.
Bom citei aqui exemplos básicos de uso do DataModule, mas existem inúmeras situaçõe em que ele pode ser útil.
OBS.: Esse conjunto de componentes (TSQLConnection, (TSQLTabel ou TSQLQuery ou TSQLDataSet), TDataSetProvider, TClientDataSet, TDataSource)deverá ser utilizado caso vc esteja usando engine de acesso DBExpress, devido aos componentes DataSets serem unidirecionais então se faz necessário o uso do TClientDataSet para navegação bidirecional.
GOSTEI 0
Deivison Melo
02/08/2012
Veja se isso ajuda!
Artigos:
http://www.scriptbrasil.com.br/forum/lofiversion/index.php/t146710.html
https://www.devmedia.com.br/quick-tips-data-module-como-administrar-sua-utilizacao-em-projetos-delphi-parte-i/14048
Video-Aula:
http://www.youtube.com/watch?v=pNeagRo4rFo
Artigos:
http://www.scriptbrasil.com.br/forum/lofiversion/index.php/t146710.html
https://www.devmedia.com.br/quick-tips-data-module-como-administrar-sua-utilizacao-em-projetos-delphi-parte-i/14048
Video-Aula:
http://www.youtube.com/watch?v=pNeagRo4rFo
GOSTEI 0
Rachel Andrade
02/08/2012
Oi, gente. Muito obrigada pelas respostas, estão me ajudando bastante a entender essa questão do DtaModule.
Então a ideia é centralizar os componentes de acesso ao banco (podendo dividir por contexto), de forma a evitar configurações repetitivas para um mesmo fim?
Grata.
Então a ideia é centralizar os componentes de acesso ao banco (podendo dividir por contexto), de forma a evitar configurações repetitivas para um mesmo fim?
Grata.
GOSTEI 0
Bruno Leandro
02/08/2012
exato, a ideia é essa de poder centralizar os componentes de acesso ao banco podendo ou não dividir por contexto, por exemplo, financeiro, contabilidade. e evitar de o sistema possuir 10 querys (consultas) iguais ou muito parecidas cada uma em uma tela criando duplicidade e complexidade na manutenção do codigo.
GOSTEI 0
Marco Salles
02/08/2012
Rachel , ainda tem um outro detalhe pouco utilizado.
È indicado separar od dataModulos do Servidor com o dataModulo do Cliente
eles podem se comunicar atraves do TLocalconecction que simula uma separação física da camadas
com isto fica fácil futuramente vc migrar sua aplicação para um arquitetura n-tier utilizando o Datasnap
Imagine vc ter datamodulos com sqlDataset e Clientdataset juntos . imagine vc ter códigos eventos neste mesmo
dataModulo , (vc esta em uma aplicação Local) . Mas resolve colocar isto em um servidord de aplicação
Imagine o trabalho que da separar tudo isto ???
Os mais puiristas preferm utilizar datasnap mesmo para aplicações Locais
È indicado separar od dataModulos do Servidor com o dataModulo do Cliente
eles podem se comunicar atraves do TLocalconecction que simula uma separação física da camadas
com isto fica fácil futuramente vc migrar sua aplicação para um arquitetura n-tier utilizando o Datasnap
Imagine vc ter datamodulos com sqlDataset e Clientdataset juntos . imagine vc ter códigos eventos neste mesmo
dataModulo , (vc esta em uma aplicação Local) . Mas resolve colocar isto em um servidord de aplicação
Imagine o trabalho que da separar tudo isto ???
Os mais puiristas preferm utilizar datasnap mesmo para aplicações Locais
GOSTEI 0
Rachel Andrade
02/08/2012
Agradeço a todos pela ajuda. Acabei ficando mais com C# devido a faculdade, mas em breve voltarei oro Delphi.
Mas essa questão do DataModule eu acho que entendi.
Peço que alguém finalize esse tópico, por favor.
Mas essa questão do DataModule eu acho que entendi.
Peço que alguém finalize esse tópico, por favor.
GOSTEI 0