Selecionar COMBOBX1 e enviar resultado para COMBOBOX2
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
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
Curtidas 0
Respostas
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
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
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
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
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
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
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;
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
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