Fórum Relacionamento com DbExpress #8615

13/08/2009

0

Veja a seguinte situação: Tenho 3 tabelas Clientes                 Id_Cliente                 Nome...   SubClientes                 Id_SubCliente                 IdCliente                 Nome...   Cheques                 Id_Cheques                 Id_SubCliente                 Data...   Percebe que tenho um relacionamento simples de 1:N entre Clientes e SubClientes e outro relacionamento  1:N entre SubClientes e Cheques. De acordo com a explicação do Rodrigo... Podemos usar o DBExpress para fazer esse relacionamento.  Sendo: Um ClientDataSet ligando com um DataSetProvider que por sua vez ligando com o SqlDataSet. Nesse caso para a tabela PAI (Clientes)   O relacionamento do FILHO (SubCliente) é feito com: Um ClientDataSet ligando diretamente com o SqlDataSet através da propriedade DataSetField. E por fim usamos um DataSource para conectar o SqlDataSet (Filho)  com o SqlDataSet (Pai) Esse processo funciona perfeitamente. Porém quando fui fazer o mesmo relacionamento de outro Filho(Cheques) com o Filho anterior(SubCliente)i, faltou informação. Pois na estrutura de componentes da tabela filho não se usa o DataSetProvider e assim não consegui ligar o último relacionamento.
Warlen Oliveira

Warlen Oliveira

Responder

Posts

14/08/2009

Wesley Yamazack

Olá meu amigo, Bom dia.
   Experimente colocar na query Cheque,

   select * from cheque where idcliente = :idcliente (isso é um exemplo, tem que ser o mesmo parametro que você esta usando pra igualar o subcliente)


  E veja se funciona.

Um abraço
Responder

Gostei + 0

17/08/2009

Warlen Oliveira

Olá meu caro,   Até aí, tudo certo. Mas quando vou fazer o segundo relacionamento (Cheques com sub_cliente) tenho problema com a ligação do campo chave. Pois o Data source não aceita ligar a um SqlDataSet que já esteja ligado a outro.   Lembre que tenho 3 níveis de relacionamento:   Clientes  -  Sub_Clientes  - Cheques (Um dentro do outro respectivamente) Então como ficaria a ligação de SubClientes com cheques ao mesmo tempo que tenho a ligação de Clientes com Sub_Clientes?     Aguardo
Responder

Gostei + 0

18/08/2009

Wesley Yamazack

Olá,Boa tarde.
   Irei desenvolver um exemplo, e logo retornarei.
  Peço que aguarde um pouco mais.

Um abraço

Wesley Y
Responder

Gostei + 0

19/08/2009

Warlen Oliveira

Caro Wesley, Você acha que ainda demora no exemplo? Estou precisando de implementar esse recurso em uma aplicação.   Obrigado.
Responder

Gostei + 0

19/08/2009

Wesley Yamazack

Olá meu caro,
   Amanha esterei postando o exemplo, peço que aguarde um pouco mais.
   Grato pela compreensão.

Wesley Y
Responder

Gostei + 0

20/08/2009

Wesley Yamazack

Olá meu amigo, segue abaixo o que você deverá fazer.
   Desculpe pela demora.




Um abraço

Wesley Y
Responder

Gostei + 0

20/08/2009

Warlen Oliveira

Ok caro wesley,   Mas nessa estrutura teremos problemas com uso do DbGrid. Pois ele é multi-direcional. Como faria para usá-lo   Obrigado
Responder

Gostei + 0

20/08/2009

Wesley Yamazack

Olá meu amigo,
    Se você olhar a nova figura, irá ver apenas um DataSetProvider,
faça a ligação do mesmo normalmente.





    No CdsClientes, adicione todos os Fields, irá notar que ele irá adicionar um outro field com o nome bem parecido com QrySubClientes;
    No CdsSubClientes, va na propriedade DataSetField e selecione o
CdsClientesQrySubClientes.
    No CdsChequesva na propriedade DataSetField e selecione o
CdsSubClientesQryCheques.
    Aponte seus DataSources, para os ClientDataSet, e ao abrir o primeiro CDs, outros seram aberto, automaticamente.



Um abraço,

Wesley Y
Responder

Gostei + 0

20/08/2009

Warlen Oliveira

Obrigado,   Mas estou com um pequeno problema. Nessa colocaçào que você fez:   No CdsClientes, adicione todos os Fields, irá notar que ele irá adicionar um outro field com o nome bem parecido com QrySubClientes;
não está aparecendo esse campo. O que pode ser?   conferi as ligações e nào encontrei diferença      
Responder

Gostei + 0

20/08/2009

Wesley Yamazack

Olá meu caro,
   Fiz um exemplo com firebird, e delphi 7, abra o projeto e veja o que fez de errado, pois tudo que te passei foi o que fiz. Seguem os links;

   http://www.4shared.com/file/126467564/3c91a86f/BDCHAMADO.html
   http://www.4shared.com/file/126467389/d82e85ee/MasterDetalhe-_3_Camadas.html


Um abraço

Wesley Y
Responder

Gostei + 0

25/08/2009

Wesley Yamazack

Olá meu caro,
   Consegui ver o exemplo ? Estamos aguardando para fecharmos o chamado.

Att,

Wesley Y
Responder

Gostei + 0

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

Aceitar