Data Module - Vale a pena?
Sei que pode ser um assunto polêmico, mas o uso do Data Module tem me deixado em dúvida. Motivo: Se vc está usando um form que usa uma query do DM com um determinado parâmetro (por exemplo: passou o parâmetro de Vendedor A) e abre um outro form que utiliza esta mesma query mas passa o parametro como sendo Vendedor B, vc tá ferrando o form aberto anteriormente, não?
Ou, neste caso, tenho que ter nova query para o segundo form?
Ou, neste caso, tenho que ter nova query para o segundo form?
Crpavao
Curtidas 0
Respostas
Jc_analista
17/11/2004
Bom faço o seguinte nos meus sistemas, tenho a conexão com o banco de dados e as tabelas de parametros e configurações no datamodule as demais tabelas(query) cada form usa a sua.
GOSTEI 0
Reginaldo174
17/11/2004
o Data Module mantem a organização do projeto. imagine como ficaria seu projeto se vc colocasse as query´s em cada form !!! no exemplo citado vc realmente teria de colocar uma outra query. Já vi sistemas que não utilizam o Data Module e na minha opinão é muito trabalhoso...pois se vc criar mais um campo na tabela, terá que atualizar todas as query´s do sistema, e se form um sistema médio isso levará horas até que tenha a certeza de que todas query´s foram atualizadas.
Pense bem antes de dispensar o Data Module.
Pense bem antes de dispensar o Data Module.
GOSTEI 0
Crpavao
17/11/2004
Vejam bem.
Eu USO Data Module. Só acho que ele deve ser utilizado tendo várias queries similares para atender forms diferentes. É isto, não é?
Eu USO Data Module. Só acho que ele deve ser utilizado tendo várias queries similares para atender forms diferentes. É isto, não é?
GOSTEI 0
Jc_analista
17/11/2004
Isso mesmo.
GOSTEI 0
Weber
17/11/2004
Eu também utilizo data module mas no meu caso, como faço tudo na mão (insert, update, delete) tenho somente uma Query. QRCadastro que é utilizada para esses fins. Além de Database e Transaction.
GOSTEI 0
Osocram
17/11/2004
Uso dataModule p separar e mais tarde talvez partir p 3 camadas...
Um Datamodule p Cadastro, um p Operacoes (NF,Nota de entrada....), outra p negocios (financeiro) e um p relatorios e mais um p consulta ond geralmente trago as views
e se for p dar manutencao eh mais facil.. se der erro no cadastros enton vc vai mexer no DMCadastro...
E se vc trabalhar c mais d uma pessoa no mesmo projeto... e cada um mexer um DM diferente non dah problema nenhum.
varias coisas boas em usar DM
Um Datamodule p Cadastro, um p Operacoes (NF,Nota de entrada....), outra p negocios (financeiro) e um p relatorios e mais um p consulta ond geralmente trago as views
e se for p dar manutencao eh mais facil.. se der erro no cadastros enton vc vai mexer no DMCadastro...
E se vc trabalhar c mais d uma pessoa no mesmo projeto... e cada um mexer um DM diferente non dah problema nenhum.
varias coisas boas em usar DM
GOSTEI 0
Dopi
17/11/2004
Nao acho que criar várias Querys seja muito prático... Pois nesse caso vc teria que redefinir as propriedades dos campos, como: Displayname, MaskEdit, Cosntrains, etc... ou seja, perde-se o dicionário de dados...
Se a Query que vc precisa no segundo formulário for exatamente igual a que existe no DataModule, vc pode criar uma copia em memória do DataModule ou somente da Query, e depois, via código, mudar os DataSets para apontar para esse novo Datamodule
Ex:
Nao é necessário destruir o novo DataModule porque o Pai dele (O proprio Form (self) ) irá fazer isso quando ele for destruido...
Se a Query que vc precisa no segundo formulário for exatamente igual a que existe no DataModule, vc pode criar uma copia em memória do DataModule ou somente da Query, e depois, via código, mudar os DataSets para apontar para esse novo Datamodule
Ex:
....
private
{ Private declarations }
dml : Tdm ; { Tdm é o DataModule }
....
//// Criando DATA Moduleprocedure TfrCliente.FormCreate(Sender: TObject);
begin ;
Temporario, e ligando em dsPrincipal ////
dml := Tdm.Create(self) ;
dsPrincipal.DataSet := dml.tbCliente ;
(dsPrincipal.DataSet as TTable).Open ;
dml.tbFuncionario.MasterSource := dsPrincipal ;
dml.tbFuncionario.MasterFields := ´Cod_cliente´ ;
dsFuncionario.DataSet := dml.tbFuncionario ;
dml.tbFuncionario.Open ;
dml.tbComputador.MasterSource := dsPrincipal ;
dml.tbComputador.MasterFields := ´Cod_cliente´ ;
dsComputador.DataSet := dml.tbComputador ;
dml.tbComputador.Open ;
.....
Nao é necessário destruir o novo DataModule porque o Pai dele (O proprio Form (self) ) irá fazer isso quando ele for destruido...
GOSTEI 0