relacionamento mestre / detalhe
31/07/2008
0
Funcionarios (mestre)
ID_FUNCIONARIO INTEGER NOT NULL, NOME VARCHAR(100) NOT NULL COLLATE WIN_PTBR, FOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80, NASCIMENTO DATE, FONE VARCHAR(20), ENDERECO VARCHAR(1000) COLLATE WIN_PTBR, VALOR_AULA NUMERIC(15,2) NOT NULL, ID_ATIVO INTEGER NOT NULL
Funcionarios_produtos (detalhe de Funcionarios)
ID_FUNC_PROD INTEGER NOT NULL, ID_FUNCIONARIO INTEGER NOT NULL, // aponta para tabela mestre ID_PRODUTO INTEGER NOT NULL, // aponta para tabela produtos ID_ATIVO INTEGER NOT NULL // 1 = sim, 2 = nao
tudo funciona beleza em mestre detalhe com elas quando eu faço pesquisas atraves da tabela mestre.
meu problema:
vamos supor que tenho 2 funcionários cadastrados na tabela mestre, e que esses dois funcionários tem dois produtos iguais cadastrados na tabela detalhe.
quando um filtro na tabela detalhe para saber quais os funcionários que tem determinado produto cadastrado com status ´ativo = 1´ o sistema nao me retorna os dois funcionários cadastrados, e sim apenas um deles (o primeiro). alguem saberia me dizer o motivo disso, e como eu procedo corretamente para que esse filtro funcione?
segue abaixo meu código do filtro:
// tabela produtos DM.cdsProd.Close; DM.cdsProd.Params[1].AsString := Combobox.Text; DM.cdsProd.Open; // tabela Funcionários (mestre) DM.cdsFunc.Close; DM.cdsFunc.Params[1].AsString := ´¬´; DM.cdsFunc.Open; // aqui filtra os produtos ativos do funcionario DM.cdsFuncProd.Close; DM.cdsFuncProd.Filtered := false; DM.cdsFuncProd.Filter := ´ID_ATIVO = 1 AND ID_PRODUTO = ´ + QuotedStr(DM.cdsProdID_PRODUTO.AsString); DM.cdsFuncProd.Filtered := true; DM.cdsFuncProd.Open;
Mahdak
Posts
31/07/2008
Mahdak
Obs: os dois funcionários estão com status = 1 na tabela detalhe
01/08/2008
Thomaz_prg
04/08/2008
José Henrique
Mostre o SQL de cdsFuncProd
Outra coisa, por que você usa
DM.cdsFuncProd.Filter := ´ID_ATIVO = 1 AND ID_PRODUTO = ´ + QuotedStr(DM.cdsProdID_PRODUTO.AsString);
ao invés de
DM.cdsFuncProd.Filter := ´ID_ATIVO = 1 AND ID_PRODUTO = ´ + Combobox.Text;
Clique aqui para fazer login e interagir na Comunidade :)