Excesso de ClientDataSets e etc...
E ae galera...
Seguinte,
Eu to fazendo aqui um form pra venda e cada venda tem um cliente, um vendedor os itens e o seu cadastro. O problema é q nessa brincadeira em to com 5 clientdatasets, 5 datasetproviders, 5 sqldatasets e 4 datasourses no meu form. Tem algum problema esse monte de coisa? alguem tem alguma sugestão?
Vlw...
Seguinte,
Eu to fazendo aqui um form pra venda e cada venda tem um cliente, um vendedor os itens e o seu cadastro. O problema é q nessa brincadeira em to com 5 clientdatasets, 5 datasetproviders, 5 sqldatasets e 4 datasourses no meu form. Tem algum problema esse monte de coisa? alguem tem alguma sugestão?
Vlw...
Wart
Curtidas 0
Respostas
Maicongabriel
02/09/2004
Por que você não utiliza um DataModule e centraliza as tabelas principais, como as de clientes, produtos, fornecedores, etc.
Assim você cria a liga os componentes de acesso uma unica vez, alem de poder acessar os dados de qualquer local da aplicação! :wink:
Assim você cria a liga os componentes de acesso uma unica vez, alem de poder acessar os dados de qualquer local da aplicação! :wink:
GOSTEI 0
Vinicius2k
02/09/2004
Não... nenhum problema...
Minha sugestão seria apenas o reaproveitamento de componentes com o uso de DataModules... bem, talvez vc não goste de DataModules, conheço muitos colegas q não gostam, mas eu NUNCA coloco componentes de acesso diretamente em forms...
Vc tem um cadastro de clientes e de vendedores correto? No seus cadastros vc já tem os componentes de acesso para estas tabelas... se estes componentes estivessem num DataModule, eles poderiam ser compartilhados entre os cadastros e seu form de pedidos, por exemplo...
T+
Minha sugestão seria apenas o reaproveitamento de componentes com o uso de DataModules... bem, talvez vc não goste de DataModules, conheço muitos colegas q não gostam, mas eu NUNCA coloco componentes de acesso diretamente em forms...
Vc tem um cadastro de clientes e de vendedores correto? No seus cadastros vc já tem os componentes de acesso para estas tabelas... se estes componentes estivessem num DataModule, eles poderiam ser compartilhados entre os cadastros e seu form de pedidos, por exemplo...
T+
GOSTEI 0
Wart
02/09/2004
pra falar a verdade, eu num curto mto datamodule msm, mas to vendo q eles sao meio necessários... :lol: :wink:
Obrigado pela atenção e até a próxima...
Obrigado pela atenção e até a próxima...
GOSTEI 0
Dopi
02/09/2004
O maior problema de DataModules são as aplicações MDI, onde voce pode abrir várias janelas simultaneamente...
Imagine por exemplo abrir 2 vezes a janela de Cadastro de Clientes (o mesmo Form) nesse caso você terá 2 forms diferentes apontando para o mesmo conjunto de ClientDataSets, ou seja, o que o usuário fizer em um Form, também será refletido no outro.... (pois o ponteiro é o mesmo) .
Para sanar esse problema voce pode:
- Sempre que uma janela for ShowModal, não há problemas, pois somente ela estará acessando os ClientDataSets
- Se a janela for Modal você pode criar uma Copia do seu DataModule em Memória, em tempo de execução, e modificar os DataSets para acessar o Datamodule criado na memória Exemplo:
Imagine por exemplo abrir 2 vezes a janela de Cadastro de Clientes (o mesmo Form) nesse caso você terá 2 forms diferentes apontando para o mesmo conjunto de ClientDataSets, ou seja, o que o usuário fizer em um Form, também será refletido no outro.... (pois o ponteiro é o mesmo) .
Para sanar esse problema voce pode:
- Sempre que uma janela for ShowModal, não há problemas, pois somente ela estará acessando os ClientDataSets
- Se a janela for Modal você pode criar uma Copia do seu DataModule em Memória, em tempo de execução, e modificar os DataSets para acessar o Datamodule criado na memória Exemplo:
..... Declaração Type do Form ..... private { Private declarations } dml : Tdm ; { Cria variavel para armazenar copia do Datamodule } .......... ..... FormCreate ........ dml := Tdm.Create(self) ; { Criando DATA Module Temporario, e ligando em dsPrincipal } dsPrincipal.DataSet := dml.tbCliente ; dml.tbCliente.Open ; { Ajustando DataSets de Metre/Detalhe } dml.tbFuncionario.MasterSource := dsPrincipal ; dml.tbFuncionario.MasterFields := ´Cod_cliente´ ; dsFuncionario.DataSet := dml.tbFuncionario ; dml.tbFuncionario.Open ;
GOSTEI 0