Excesso de ClientDataSets e etc...
02/09/2004
0
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
Posts
02/09/2004
Maicongabriel
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:
02/09/2004
Vinicius2k
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+
02/09/2004
Wart
Obrigado pela atenção e até a próxima...
03/09/2004
Dopi
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 ;
Clique aqui para fazer login e interagir na Comunidade :)