Fórum Ordenando DBGrid Master/Detail #315467

08/03/2006

0

Oi, pessoal. Sei que vocês estão cansados de responder dúvidas sobre DBGrid, mas realmente não consegui achar nenhum material a respeito. Vou tentar colocar o máximo de informações aqui. A base é Paradox.

1) Utilizo uma tabela chamada PRODUTOS. Nela eu tenho o cadastro de todos os produtos da empresa.

2) Acabo de criar uma nova tabela chamada RETALHOS. Essa tabela é composta de 3 atributos: CODIGO (auto-incremento), PRODUTO (integer) e TAM_RETALHO (float).

As tabelas se relacionam através de Master/Detail, onde PRODUTOS é a MasterSource. Para tanto, tive que criar um Index chamado IDX_RETALHO, que contém o campo PRODUTO da tabela RETALHOS. Ou seja, o campo PRODUTO da tabela RETALHOS se relaciona com o campo CODIGO da tabela PRODUTO. Até aí, beleza.

Agora, pra mostrar isso na tela, me pediram para que a lista de retalhos de cada produto apareça no form, juntamente com a ficha do produto. Sem problemas.

Além disso, me pediram pra ordenar os retalhos, não importa se ascendente ou descendente. O problema é esse: não consigo fazer isso no DBGrid porque já existe um outro Index na tabela RETALHOS (que está ligado em PRODUTO, não em TAM_RETALHO). Além disso, tentei criar uma Query, mas ele mostra todos os retalhos de todos os produtos, e não apenas do produto aberto na ficha.

Alguém me dá uma luz? ^^


Rafaelpuff

Rafaelpuff

Responder

Posts

08/03/2006

Sremulador

acho que se vc utilizar o order by vai funcionar blz...


Responder

Gostei + 0

09/03/2006

Marco Salles

um dos problemas de usar bancos que não sao relacionais da nisso... Quem controla a Relaçao e o aplicativo e não o Banco

Mas voltemos

Voce so quer a consulta ou vai querer escrever , modificar , inserir dados na tabela Detalhe , via esse formulario


Responder

Gostei + 0

09/03/2006

Paullsoftware

na sua query você pode relacionar os dados do retalho ao codigo do produto atual, assim...

no AffterScroll do Master faça:


With QyRetalhos do
begin
close;
Sql.Clear;
sql.Add(´Select * From Retalhos Where Produto=:CodProduto Order by Produto´).
ParamByName(´CodProduto´).AsInteger := TabelaDeProdutosCodigo.AsInteger;
prepare;
open;
end;

Agora sempre que vc mexer na sua tabela de produtos ele vai filtrar e mostrar somente os dados pertecentes ao codigo atual....

Espero ter ajudado! :wink:


Responder

Gostei + 0

10/03/2006

Rafaelpuff

  with qRETALHOS do
  begin
    Close;
    SQL.Clear;
    SQL.Add(´select * from RETALHOS where PRODUTO = :CodProduto order by RETALHO´);
    ParamByName(´CodProduto´).AsInteger := DM.tbPRODUTOSCODIGO.AsInteger;
    Prepare;
    Open;
  end;


PaullSoftware, muito obrigado meeesmo, era bem disso que eu precisava. Foi só colocar a ordenação por retalho naquele código que você me passou e funcionou perfeito. Obrigadão, de verdade! ^^


Responder

Gostei + 0

10/03/2006

Paullsoftware

Relaxa, estamos aqui para ajudar uns aos outros... :wink:


Responder

Gostei + 0

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

Aceitar