Ir para conteúdo
Fórum Script Brasil
  • 0

relacionamento entre duas tabelas (chave estrangeira)


Livio Neiva

Pergunta

Ola para todos!!!

eu tenho duas tabelas, uma chamada cliente e outra de recebimentos, na tabela de recebimentos tem campo codCliente.

o campo codigo da tabela cliente tem relacionamento com campo codcliente da tabela recebimento (chave estrangeira).

usando componente zeos, eu gostaria de fazer um formulario onde no DBGrid eu listasse os recebimentos de cada cliente.

ou seja no DBGrid listasse todos os clientes mais que tivesse um campo no qual eu clicasse duas vezes, ele me mostrasse os recebimentos dakele cliente.

como faria isso usando componente zeos.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

amigo é muito simples. como você quer dar dois cliques não precisa relacionar as tabelas.

1º tela

você usa um DBGRID uma QUERY e um DATASOURSE que fica na aba DATA ACCESS

faz a ligação entre eles.

QUERY1.ACTIVE :=FALSE;
QRERY1.SQL.CLEAR;
QUERY1.SQL.ADD('select * from clientes');
QRERY1.ACTICE :=TRUE;
Isto mostrara todos os clientes e no ondblclic do dbgrid você cham uma segunda tela com os mesmos componentes da anterior porem você modifica um pouco a pesquisa
QUERY1.ACTIVE :=FALSE;
QRERY1.SQL.CLEAR;
QUERY1.SQL.ADD('select * recebimento where codcliente="'+form1.query1.fieldbyname('codigo').asString+'"');
QRERY1.ACTICE :=TRUE;

isto mostrará todos os recebimentos caso não for isto poste aqui, caso queira relacionar e mais ou menos assim

select clientes.nome, recebmento.* where clientes.codigo=1 and clientes.codigo=recebimento.codcliente

mais ou menos. assim.

Link para o comentário
Compartilhar em outros sites

  • 0

Eu fiz assim usando os componentes DBExpress

inserir um SQLConnection, dois SQLDataSet e um datasourse, no sqldataset1 eu fiz a seguinte consulta,

select * from cliente, no SQLDataset2 eu fiz a sequinte consulta

SELECT C.CODIGO,R.VENCIMENTO,R.RECEBIMENTO,R.VLRECEBIDO FROM RECEBIMENTO R INNER JOIN CLIENTE C ON C.CODIGO = R.CODCLIENTE WHERE CODCLIENTE = :CODIGO

criei um parametro chamado "codigo".

eu apontei os dois sqldataset para o sqlconection, no sqldataset2, na propriedade datasource eu aponte para meu

dataSource1 e meu datasource1 eu aponto para sqldataset1.

Agora um estar ligado ao outro através do dataSource1 e através do parametro codigo. Ou seja SqlDataSet2 aponta para datasource1 e datasourse1 aponta para sqldataset1.

Agora vamos visualizar os dados

agora eu insiro um provider um clientDataser, o provider eu aponto para SQLdataset1 atraves da propriedade DataSet, o clientDataSet eu aponto para provider, insiro mais um datasource chamado de datasource2 que servirar para mostar os dados numa DBGrid, aponto o mesmo (DataSource2) para SQLDataset1, agora eu insiro uma DBGrid apontando para dataSouce2, eu ativo todos meus componentes, e já observo que no final das colunas do meu DBGrid1, vejo uma coluna chamada de SQLDAtaset2.

Este tipo de campo é chamado de Nexter DataSet ou dataset Aniado(não sei se estar escrito correto).

Quando eu comppilo o programa lista todos meus clientes, vejo que para cada registro tem um campo SQLDataset2 que o mesmo tem três pontos, eu clico nos três pontos e ele abre um pequeno formulario listando codigo, vencimento, recebimento vlrrecebido.

gostaria muito de fazer o procedimento acima usando os componentes zeos.

valeu obrigado a todos

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152.1k
    • Posts
      651.8k
×
×
  • Criar Novo...