Fazer um LookUp Receber Dados de Acordo com Outro LkUp

04/08/2004

Olá pessoal.. estou com outra pequena dúvida..

Eu tenho uma aplicação com banco em FB 1.5 e ligando no Delphi 7 pelo DbExpress..

Tenho uma tabela de Personagens, outra de Universo do Personagem e outra da Editora do Personagem.

Bom, no cadastro de personagem eu vou colocar o universo ao qual ele pertence e a editora.. nao sao campos obrigatórios, mas coloquei pra fazer essa ordenação da dúvida.. q é a seguinte..

Coloquei um LookUp q me lista todas editoras cadastradas.. liguei direto a tabela de editora, pq se eu ligasse a tabela de personagens ele sempre bagunçava o registro, e como só kero ordernar, liguei pela 1ª tabela..

Aí é o seguinte.. quando eu selecionar a editora, eu kero q outro LookUp me liste todos Universos cadastrados q tenham o código da editora seleciona no campo de Chave Estrangeira.. e quando eu selecionar o universo, quero q ele me liste todos os persongens q tenha o código dakele universo na Chave Estrangeira.. como eu dei um tempo no programa antes, agora nao me lembro direito como faço isso.. e antes eu tava trabalhando em access e fazia isso no componente SQL.. agora em qual componente faço? como faço? grato...



Allan Elias Ramos :roll:


Aersoftware

Respostas

06/08/2004

Aersoftware

Eu manipulo o Sql pelo ClientDataSet ou pelo DataSet q estou usando no lugar das Tables?



Allan Elias Ramos :cry:


Responder Citar

06/08/2004

Paulo_amorim

Olá

Voce pode fazer isso atraves de uma query, usando TSimpleDataSet ou algo do genero...

Aí vc faz uma query filtrando por editora

SELECT * FROM universo WHERE editora = :p1


Coloca no evento do LookUp da editora pra abrir essa query, passando a editora escolhida como parametro
dlcEditora.KeyValue;


Espero que ajude
Até+


Responder Citar

06/08/2004

Aersoftware

Mas como eu começo? lembro q no acess eu fazia mais ou menos assim:

With DmDados.SqlTal do
begin
close;
Sql.Clear;
Sql.Add(´Instruções´);
end;

Tinha mais coisas, mas basicamente era isso.. nao sei se da pra fazer assim com o dbExpress...



Allan Elias Ramos :?:


Responder Citar

07/08/2004

Aersoftware

Outra dúvida..

Vi q, usando uma Query do dbExpress, da pra fazer como eu fazia antes, mas eu ja comecei usando um TSQLDataSet ... é por isso q estou com dúvida.. qual o melhor pra usar? o SQLQuery ou o SQLDataSet? e no caso, como eu faria essa pesquisa pelo SQLDataSet?

Basicamente é o seguinte, quando me abre o form, ele ja me lista as Editoras e Universos.. mas queria q, quando fosse selecionado uma Editora, ele me listasse só os Universos dakela Editora..



Allan Elias Ramos :wink:


Responder Citar

09/08/2004

Paulo_amorim

Olá

Você pode fazer uma query pra selecionar Editoras
SELECT cod, nome FROM editoras


Vc poe uma outra query para selecionar universos
SELECT * FROM universo WHERE editora = :p1


E a abre no evento OnCLick do combo de editoras
with sqlSelUniverso do
begin
Close;
{coloca a SQL acima aqui }
ParamByName( ´p1´).Value := dlcEditora.KeyValue;
Open;
end;

Daí ele deve abrir o combo de universos daquela editora
Sobre qual componente usar, não sei qual o melhor, mas em principio qualquer DataSet funciona...

Espero que ajude
Até+


Responder Citar

09/08/2004

Aersoftware

Paulo, eu fiz o seguinte.. no evento OnCloseUp do LookUp de Editoras eu botei o seguinte;

  if LkUpEditora.Text <> ´´ Then
    begin
      DmDados.ClientUniPersonagem.Close;
      DmDados.SqlUniPersonagem.Close;
      DmDados.SqlUniPersonagem.CommandText :=
      ´Select * From TbUniversoPersonagem Where FkCod_EditOriginal =´+IntToStr(LkUpEditora.KeyValue)+´Order By Nome´;
      DmDados.SqlUniPersonagem.Open;
      DmDados.ClientUniPersonagem.Open;
    end;


Aí funcionou blz... só gostaria de saber se tem algum problema em fechar o ClientDataSet e abrir novamente como fiz ou nao?

E outra coisa.. depois q eu boto esse código, eu tenho q botar outro pra ´inverter´ o Sql pro orignal, q é listar Todos Dados em Orderm Alfabética, quando entro no form de ediçao de Universos.. é assim mesmo tb??



Allan Elias Ramos :roll:


Responder Citar

10/08/2004

Paulo_amorim

Olá

O SqlUniPersonagem está ligado ao ClietnDataSet de personagem?
Se sim, vc soh precisa abrir um deles
Mas em principio nao vejo problema algum

Por que vc precisa de outro dataset pra mostrar por ordem alfabética? esse não pode ser esse ae?

Até+


Responder Citar

10/08/2004

Aersoftware

Olá O SqlUniPersonagem está ligado ao ClietnDataSet de personagem? Se sim, vc soh precisa abrir um deles Mas em principio nao vejo problema algum Por que vc precisa de outro dataset pra mostrar por ordem alfabética? esse não pode ser esse ae? Até+


Não, na verdade tem uma ligação pra cada tabela.. um SqlDataSet, Provider, ClientDataSet e Data Source.. e cada um deles tem uma função dentro do seu formulário específico..

Só q, pra listar as editoras, eu ligo o LookUp diretamente no Client de Editoras.. o de Universo tb.. Então, nao hora de entrar no form de Universos, eu preciso modificar o sql dele, q eu modifiquei na hora de listar nesse form específico.. :wink:



Allan Elias Ramos :roll:


Responder Citar