Excesso de ClientDataSets e etc...

02/09/2004

0

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...


Wart

Wart

Responder

Posts

02/09/2004

Maicongabriel

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:


Responder

02/09/2004

Vinicius2k

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+


Responder

02/09/2004

Wart

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...


Responder

03/09/2004

Dopi

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:

..... 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 ;



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar