Filtrando dados de um DBGrid atraves de um DBLookUpComboBox
Eu tenho o seguinte cenário um DBGrid trazendo os seguintes campos da tabela PRODUTO , ID , REFERENCIA ,NCM, DESCRICAO, PRECO_VENDA,ULTIMO_CUSTO e CFOP. cada produto tem um GRUPO, chave estrangeira da tabela GRUPO,eu já consigo colocar no DBLookUpComboBox todos os grupos da tabela GRUPO a minha ideia é filtra no Dbgrid os produtos que estão no GRUPO selecionado no DBLookUpComboBox exemplo NO DBLookUpComboBox Esta selecionado o GRUPO "SABONETE" NO DBGrid , eu quero que apareça só os sabonetes
Wallace Ferreira
Curtidas 0
Melhor post
Marco Antônio
23/06/2016
Wallace, bom dia.
Não tenho experiência com o componente em questão. Mas olhando aqui na internet observei que o ''''DBLookUpComboBox'''' tem a propriedade ''''keyField'''' que é a
referência de qual é o campo chave a ser utilizado em outra tabela. No seu caso o campo ''''GRUPO''''.
Bom, com isso em mãos basta fazer o seguinte;
- No envento on clique no ''''DBLookUpComboBox'''' vc monta a seguinte rotina:
Iª forma: // Aqui vai abrir a consulta toda hora
Query1.Close; // query que contem os produtos
Query1.Sql.Clear;
Query1.Sql.Add( ''''SELECT * FROM produtos WHERE grupo = :grupo'''');
Query1.Parameters.ParamByName(''''grupo'''').Value:= DBLookupCombobox.KeyValue;
Query1.active:= TRUE;
2ª forma: // Aqui é qdo vc já deixa a tabela de produtos aberta.
Query1.Filtered := false;
Query1.Filter := ''''Grupo = '''' + DBLookupCombobox.KeyValue;
Query1.Filtered := true;
Kra eu acho que é soh isso. Confesso que não testei. Mas fica ae a dica.
Abc.
Não tenho experiência com o componente em questão. Mas olhando aqui na internet observei que o ''''DBLookUpComboBox'''' tem a propriedade ''''keyField'''' que é a
referência de qual é o campo chave a ser utilizado em outra tabela. No seu caso o campo ''''GRUPO''''.
Bom, com isso em mãos basta fazer o seguinte;
- No envento on clique no ''''DBLookUpComboBox'''' vc monta a seguinte rotina:
Iª forma: // Aqui vai abrir a consulta toda hora
Query1.Close; // query que contem os produtos
Query1.Sql.Clear;
Query1.Sql.Add( ''''SELECT * FROM produtos WHERE grupo = :grupo'''');
Query1.Parameters.ParamByName(''''grupo'''').Value:= DBLookupCombobox.KeyValue;
Query1.active:= TRUE;
2ª forma: // Aqui é qdo vc já deixa a tabela de produtos aberta.
Query1.Filtered := false;
Query1.Filter := ''''Grupo = '''' + DBLookupCombobox.KeyValue;
Query1.Filtered := true;
Kra eu acho que é soh isso. Confesso que não testei. Mas fica ae a dica.
Abc.
GOSTEI 1
Mais Respostas
Roberto Wutke
22/06/2016
Cara, voce pode fazer usando um combobox simples, alimenta ele com os grupos na ordem certinha com código e descrição, tipo '0001 - Sabonete' ou '0054 - shampoo'
e quando o usuário clicar vc faz o filter na query com o Copy da Pos 1 , 4 bytes, e já vai filtrando toda vez que ele clicar, ai voce pode até colocar o itemindex zero como 'Todos' caso ele queira "desfiltrar" os grupos.
Bons códigos.
e quando o usuário clicar vc faz o filter na query com o Copy da Pos 1 , 4 bytes, e já vai filtrando toda vez que ele clicar, ai voce pode até colocar o itemindex zero como 'Todos' caso ele queira "desfiltrar" os grupos.
Bons códigos.
GOSTEI 1