Selecionar COMBOBX1 e enviar resultado para COMBOBOX2

Delphi

16/05/2004

Pessoal,

Pesquisei no fórum e não encontrei nada que me ajudasse com esse problema:


Tenho um formulário de cadastro de EMPRESA e outro com cadastro de processos;

banco de dados em ACCESS;
EMPRESA -> Codigo, Empresa, Cidade, Estado
PROCESSO -> Codigo, Empresa, Objetivo, Dono do Processo


Depois de cadastrar a empresa, tenho que cadastrar um ou mais processos para aquela empresa. Vou descrever como gostaria que funcionasse.

Quando abrir o formulário PROCESSO para cadastrar um processo, tem uma DBLookupCombobox1 que tem a relação das empresas cadastradas, eu seleciono uma empresa e deveria na DBLookupCombobox2 que busca no banco de dados pela empresa selecionada na combo1 e mostra todos os processos com o nome daquela empresa.

Como fazer isso??? Não consegui

Abraço


Redoctober

Redoctober

Curtidas 0

Respostas

Dbergkamps

Dbergkamps

16/05/2004

crie uma query da seguinte forma:
Query.sql.close;
Query.Sql.clear;
Query.sql.Add(´select nome from TableEmpresa´);
Query.sql.Add(´where nome =´ + ´´´´ + Combobox1.item[(Combobox.itemindex)] + ´´´´ + );
Query.Sql.open;
Query.first;
while not query.eof do
begin
combobox1.items.add(query.fieldbyname(´campo´).value);
query.next;
end;
teste e retorne


GOSTEI 0
Redoctober

Redoctober

16/05/2004

crie uma query da seguinte forma: Query.sql.close; Query.Sql.clear; Query.sql.Add(´select nome from TableEmpresa´); Query.sql.Add(´where nome =´ + ´´´´ + Combobox1.item[(Combobox.itemindex)] + ´´´´ + ); Query.Sql.open; Query.first; while not query.eof do begin combobox1.items.add(query.fieldbyname(´campo´).value); query.next; end; teste e retorne


Com esse código acima eu apenas irei colocar na combo1 o resultado da tabela empresa... Como a segunda combo faz uma pesquisa dentro da tabela PROCESSO, procurando no campo empresa da tabela PROCESSO o que foi selecionado na primeira combo???


GOSTEI 0
Dbergkamps

Dbergkamps

16/05/2004

tente assim
Query.sql.close;
Query.Sql.clear;
Query.sql.Add(´select processo from TableEmpresa´);
Query.sql.Add(´where nome =´ + ´´´´ + Combobox1.item[(Combobox.itemindex)] + ´´´´ + );
Query.Sql.open;
Query.first;
while not query.eof do
begin
combobox2.items.add(query.fieldbyname(´processo´).value);
query.next;
end;
teste e retorne


GOSTEI 0
Redoctober

Redoctober

16/05/2004

tente assim Query.sql.close; Query.Sql.clear; Query.sql.Add(´select processo from TableEmpresa´); Query.sql.Add(´where nome =´ + ´´´´ + Combobox1.item[(Combobox.itemindex)] + ´´´´ + ); Query.Sql.open; Query.first; while not query.eof do begin combobox2.items.add(query.fieldbyname(´processo´).value); query.next; end; teste e retorne



[b:fdc34244f1]Desse jeito não deu certo[/b:fdc34244f1]


Depois tentei assim:

Preferi fazer na unha, utilizar um combobox comum e carregar os dados que necessito no mesmo.
Criei uma ADOQuery1, um dataSource1 e 2 ComboBox.

No evento OnShow do form, fiz o seginte:
With ADOQuery1 do 
Begin 
   Close; 
   Sql.Clear; 
   Sql.Add(´Select * from EMPRESA´);  
   Open; 
end;  
Combobox1.Items.Clear;  
ADOQuery1.First;  
while not ADOQuery1.Eof do  
begin 
   Combobox1.Items.add(ADOQuery1.FieldByName(´Nome_Empresa´).Asstring);  
   ADOQuery1.Next; 
end;


No evento OnChange do primeiro combobox, coloquei:
If Combobox1.text<>´´ then 
begin 
   With ADOQuery1 do 
   Begin 
      Close; 
      Sql.Clear; 
      Sql.Add(´select * from PROCESSO where NomeDoProcesso=´+Quotedstr(Combobox1.text)+´´);
      Open; 
   end;  
   Combobox2.Items.Clear; 
   ADOQuery1.First; 
   while not ADOQuery1.Eof do 
   begin 
      Combobox2.Items.add(ADOQuery1.FieldByName(´NomeDoProcesso´).Asstring); 
      ADOQuery1.Next; 
   end;  
end;



Só que ainda estou errando alguma coisa... Você sabe onde???
[/b]


GOSTEI 0
Dbergkamps

Dbergkamps

16/05/2004

no on change tente
If Combobox1.items[(Combobox1.itemindex)] <>´´ then
begin
With ADOQuery1 do
Begin
Close;
Sql.Clear;
Sql.Add(´select * from PROCESSO where NomeDoProcesso=´+Quotedstr(Combobox1.text)+´´);
Open;
end;
Combobox2.Items.Clear;
ADOQuery1.First;
while not ADOQuery1.Eof do
begin
Combobox2.Items.add(ADOQuery1.FieldByName(´NomeDoProcesso´).Asstring);
ADOQuery1.Next;
end;
end;


GOSTEI 0
Redoctober

Redoctober

16/05/2004

no on change tente If Combobox1.items[(Combobox1.itemindex)] <>´´ then begin With ADOQuery1 do Begin Close; Sql.Clear; Sql.Add(´select * from PROCESSO where NomeDoProcesso=´+Quotedstr(Combobox1.text)+´´); Open; end; Combobox2.Items.Clear; ADOQuery1.First; while not ADOQuery1.Eof do begin Combobox2.Items.add(ADOQuery1.FieldByName(´NomeDoProcesso´).Asstring); ADOQuery1.Next; end; end;


Deu certo... Estava usando o Deplhi 5, depois compilei o mesmo aplicativo no delphi 7 e tudo rodou beleza.

Valeu pela ajuda.


GOSTEI 0
POSTAR