Array
(
)

Fazer um LookUp Receber Dados de Acordo com Outro LkUp

Aersoftware
   - 04 ago 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
   - 06 ago 2004

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



Allan Elias Ramos


Paulo_amorim
   - 06 ago 2004

Olá

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

Aí vc faz uma query filtrando por editora

#Código

SELECT * FROM universo WHERE editora = :p1


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


Espero que ajude
Até+


Aersoftware
   - 06 ago 2004

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 :?:


Aersoftware
   - 07 ago 2004

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:


Paulo_amorim
   - 09 ago 2004

Olá

Você pode fazer uma query pra selecionar Editoras
#Código

SELECT cod, nome FROM editoras


Vc poe uma outra query para selecionar universos
#Código
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é+


Aersoftware
   - 09 ago 2004

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

#Código

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:


Paulo_amorim
   - 10 ago 2004

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é+


Aersoftware
   - 10 ago 2004


Citação:
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: