Dúvida de 3 camadas com vários DataModule Remoto
Companheiros, tenho um problema. Na minha aplicação, na camada intermediária, criei vários DataModule Remotos, um Para Cadastros, Outro relatório, Pesquisa e etc... Mas, mantendo sempe um princpal, onde está o objeto de conexão, que no caso, é o SqlConnection(DBExpress). Acontece, que eu criei algumas funções em um destes DataModule e preciso chamar no DataModule Principal. O que passa, sempre dá erro de Undeclared Identifier. Todas as units foram acrescentadas na Cláusula uses da sessão Implementation. Veja um exemplo:
DataModule Principal eu Chamo de: DMServer;
DataModule Cadastro eu Chamo de:DMCadastro;
No DMServer
No DMCadastro
Ou seja, resumindo, qualquer coisa que faço em um dos DataModules Remotos, seja, variável global, função, procedure, não consigo ver(abrir) em outro DataModule. Declaro uma função e se precisar carregar essa função em outro DataModule Remoto, não vai. Sempre: [color=red:54cdfbb485]Undeclared Identifier[/color:54cdfbb485]
DataModule Principal eu Chamo de: DMServer;
DataModule Cadastro eu Chamo de:DMCadastro;
No DMServer
function DMServer.Get_Cadastro: IUDMCadstro;
begin
Result := GeralFactory.CreateComObject(nil) as IUDMCadastro;
Result.RDMServer := Self;
AbrirConexao(Result, IUDMCadastro, TDMCadastro);
TIUDMCadastro(GetObject(Result, IUDMCadastro, IUDMCadastro)).GeraObjetos;//GeraObjetos é uma função
end;
No DMCadastro
var
CadastroFactory: TComponentFactory;//Variável geral
initialization
CadastroFactory :=
TComponentFactory.Create(ComServer, Server,
Class_ServerCadastro, ciInternal, tmApartment);
end.
Ou seja, resumindo, qualquer coisa que faço em um dos DataModules Remotos, seja, variável global, função, procedure, não consigo ver(abrir) em outro DataModule. Declaro uma função e se precisar carregar essa função em outro DataModule Remoto, não vai. Sempre: [color=red:54cdfbb485]Undeclared Identifier[/color:54cdfbb485]
Paulo
Curtidas 0
Respostas
Brunolspp
18/05/2007
Salve amigo!!!
Baixe o meu exemplo do Borland Conference 2006 q mostra como implementar varios datamodules e pool de conexao de forma bem simples e comlpetamente funcional e rápida.
Esta gratuitamente disponibilizado no meu link de downloads gratuitos(abaixo da minha assinatura).
E no mais estou as ordens
Baixe o meu exemplo do Borland Conference 2006 q mostra como implementar varios datamodules e pool de conexao de forma bem simples e comlpetamente funcional e rápida.
Esta gratuitamente disponibilizado no meu link de downloads gratuitos(abaixo da minha assinatura).
E no mais estou as ordens
GOSTEI 0
Paulo
18/05/2007
Bruno, me responda uma coisa: Eu declaro algumas funções na Unit _TLB, e também algumas property. Se eu der um save all, some tudo. Se eu salvo somente a Unit e fecho, então as funções e property continuam lá. Mas às vezes ao abrir novamente o projeto, desaparece. Também estou com dificuldade de Conectar do Cliente a um DataModule específico, assim: Tenho o RDM Principal(ciMultiInstance) e tres outros Child(ciInternal). No client, coloco um componente SharedConnection. O que passa é que eu não consigo conectar a nenhum dos RDMChild. O que devo colocar na propriedade ChildName do SharedConnection? Grato!!!
GOSTEI 0
Brunolspp
18/05/2007
qual versao do Delphi vc esta usando?
Entao, vc pode usar internal ou nao na instancia, mas eu aconselho usar thread como single.
depois de criado o child, declara um factory do tipo tcomponentfactory na classe child, e na instancia faça com esse factory receba ela(olhe no exemplo do borcon 2006 nas classes de cadastro, consult a e relatorio).
Apos isso, abra a type library, adicione uma noa readonlypropoerty(tem um botao na interface de tlb pra isso).
selecione o type como INomeDaSuaClasse, e salve..
faça isso td na classe principal, no metodo get q este gerara, vc programa o retrono dakele factory fazendo um typecast com a interface(veja a classe principal do evento).
e no cliente basta colocar o socketconnection rpa classe principal, e shared pra cada child, no shared vc configura o a conexao principal e o nome da child e o nome da propriedade readonly q vc criou na tlb na classe principal.
Confira com o exemplo, se vc nao o tem pegue no meu link de downloads gratuitos(abaixo da minha assinatura)
Entao, vc pode usar internal ou nao na instancia, mas eu aconselho usar thread como single.
depois de criado o child, declara um factory do tipo tcomponentfactory na classe child, e na instancia faça com esse factory receba ela(olhe no exemplo do borcon 2006 nas classes de cadastro, consult a e relatorio).
Apos isso, abra a type library, adicione uma noa readonlypropoerty(tem um botao na interface de tlb pra isso).
selecione o type como INomeDaSuaClasse, e salve..
faça isso td na classe principal, no metodo get q este gerara, vc programa o retrono dakele factory fazendo um typecast com a interface(veja a classe principal do evento).
e no cliente basta colocar o socketconnection rpa classe principal, e shared pra cada child, no shared vc configura o a conexao principal e o nome da child e o nome da propriedade readonly q vc criou na tlb na classe principal.
Confira com o exemplo, se vc nao o tem pegue no meu link de downloads gratuitos(abaixo da minha assinatura)
GOSTEI 0
Augusto Mossambani
18/05/2007
Bruno, poderia em enviar um exemplo, não estou conseguindo implementar.... acmossambani@gmail.com
desde já agradeço
desde já agradeço
GOSTEI 0