Ir para conteúdo
Fórum Script Brasil
  • 0

Como faço uma consulta com DbCombobox mostrando dados em DbGrid


Soninhamax

Pergunta

Estou vasculhando toda a internet desde ontem e não achei nada que me socorresse. Se alguém souber por favor, me ajude!

Preciso fazer uma consulta, ela está montada da seguinte forma:

Em um Form tenho uma dbGrid, e um botão pesquisa. Quando eu clico no botão ele me traz um outro Form com um dbCombobox e um botão ok.

Eu preciso que, quando eu clicar na Combo, esteja carregada todos os dados de um dos campos de uma tabela e quando eu selecionar um dado e der OK, que ele carregue na Grid alguns campos relacionado a esse dado.

Já criei um Database, uma Query e um DataSource e fiz a ligação entre eles. Utilizo o banco de dados Oracle e o Delphi 2 :rolleyes:.

Desde já agradeço.

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0
Estou vasculhando toda a internet desde ontem e não achei nada que me socorresse. Se alguém souber por favor, me ajude!

Preciso fazer uma consulta, ela está montada da seguinte forma:

Em um Form tenho uma dbGrid, e um botão pesquisa. Quando eu clico no botão ele me traz um outro Form com um dbCombobox e um botão ok.

Eu preciso que, quando eu clicar na Combo, esteja carregada todos os dados de um dos campos de uma tabela e quando eu selecionar um dado e der OK, que ele carregue na Grid alguns campos relacionado a esse dado.

Já criei um Database, uma Query e um DataSource e fiz a ligação entre eles. Utilizo o banco de dados Oracle e o Delphi 2 :rolleyes:.

Desde já agradeço.

Uma questão eu já consegui resolver. Deixei de lado o dbCombobox e peguei uma Combobox, e coloquei o seguinte código:

procedure TFrmPesquisa.FormCreate(Sender: TObject);
begin
  QueryDados.close;
  QueryDados.open;
  ComboBox1.items.clear;
while not QueryDados.eof do
begin
  ComboBox1.items.add(QueryDados.fieldbyname('papel_rv').asstring);
  QueryDados.next
end;

end;

Agora está carregando todos os dados na Combo, falta descobrir a forma de programar o botão OK para que ele faça carregar na Grid que está em outra Form os campos vinculados a esses dados...

Link para o comentário
Compartilhar em outros sites

  • 0
Agora está carregando todos os dados na Combo, falta descobrir a forma de programar o botão OK para que ele faça carregar na Grid que está em outra Form os campos vinculados a esses dados...

Não me lembro em qual esta, mas em um deles vai achar o que esta querendo

http://scriptbrasil.com.br/forum/index.php...BLookupComboBox

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Tche, eu faria um pouco diferente da forma que você fez hj.

1. criaria uma property publica no seu form onde esta o dbgrid chamada filtro :string;

2. criaria um metodo protected ou private chamado sql ou pesquisa

neste metodo colocaria:

function TSeuForm.SQL(filtro: string): OleVariant;

var

query : TIBDataSet;

begin

query := TIBDataSet.Create(nil);

try

try

Query.database := seucomponenteDeAcesso

Query.Close;

Query.SelectSQL.Clear;

Query.SelectSQL.Add(' select * from SuaTabela ');

Query.SelectSQL.Add(' where 1=1 ');

if filtro<>'' then

query.SelectSQL.Add('and '+ filtro);

query.Open;

result := DataSetToOleVariant(query); // essa função você tem que criar

except

on e: exception do

raise;

end;

finally;

Query.Close;

Query.Free;

end;

end;

4. cada vez que você escolhe o item no segundo form você monta uma string com o filtro que deve ser aplicado

exemplo:

você clicou no item 1 da lista do combo (que significa que codigo=1) então você vai alimentar a propriedade filtro que criamos no inicio com esse valor, assim:

Seuform1.filtro := 'codigo = 1' (apenas exemplificando)

logo abaixo

você faz o seguinte:

Seuform1.Seuclientedataset.close;

Seuform1.seuclientedataset.data := SQL(Seuform1.filtro);

Seuform1.seuclientedataset.open;

pronto! toda vez que você clicar em pesquisar e depois escolher um cara na lista e clicar em ok a grid é fechada e aberta com os novos dados já filtrados.

5. função que você vai precisar

function TSeuForm.DataSetToOleVariant(DS: TIBDataSet): OleVariant;

var

loProvider : TProvider;

begin

loProvider := TProvider.Create(nil);

try

loProvider.DataSet := DS;

Result := loProvider.Data

finally

loProvider.Free;

end;

end;

6. adicionar as units

Provider;

IBCustomDataSet;

Ps. Esse formato que te apresentei é melhor aplicado em uma programação Orientada a Objeto, onde você centraliza todas as ações bases em classes e formularios base, ajuda muito no rendimento da produção de um aplicativo novo principalmente.

Se quiser ajuda posso estar te ajudando com aulas particulares.

ou se preferir na net tem muito material de cursos gratuitos de POO (programação Orientada a Objetos).

ex: www.istudar.com.br

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...