Fórum Fitrar informações com 3 combobox #489503

19/08/2014

0

Boa noite!

Preciso fazer um filtro com 3 combobox no Delphi 7:

1º combobox1 (situação): item string = ATIVO - CANCELADO - INATIVO - TODOS
2º combobox2 (usuário): item string = USUARIO - GERENTE - ADMINISTRADOR - TODOS
3º combobox3 (uso): item string = CALIBRADO - ORIENTATIVO - VERIFICADO - TODOS
4º botão Gerar que abra em relatorio as opções selecionadas.

é meio complexo para quem não sabe programar ainda mas sei que tem um montão de gente ai que pode me dar uma ajudinha.

Independente da opção que for selecionado fazer um filtro para retornar as informações com que foi selecionado coma condição IF e ELSE.

Conto com a ajuda de vocês com um exemplo, Obrigado!
Motoqueiro

Motoqueiro

Responder

Post mais votado

20/08/2014

Olá Motoqueiro,

faça como o Itamar disse e faça o seguinte select através do delphi:

variável:
ComandoSql : String;

ComandoSql := 'select campos from tabela where ((';

if not situacao = 'TODOS' then
  ComandoSql := ComandoSql + 'camposituacao = ' + QuotedStr(situacao) + ') ';
if not usuario = 'TODOS' then
  ComandoSql := ComandoSql + 'AND (campousuario = ' + QuotedStr(usuario) + ') ';
if not tipouso = 'TODOS' then
  ComandoSql := ComandoSql + 'AND (campousuario = ' + QuotedStr(tipouso) + ')';

ComandoSql := ComandoSql + ')';

if (situacao = 'TODOS') and (usuario = 'TODOS') and (tipouso = 'TODOS') then
  ComandoSql := 'Select campos from tabela';

Marcos Saffran

Marcos Saffran
Responder

Gostei + 1

Mais Posts

20/08/2014

Joel Rodrigues

No banco de dados essas colunas estão sendo salvas com esses valores exatamente? Ou estão abreviados?
Responder

Gostei + 0

20/08/2014

Motoqueiro

No banco de dados essas colunas estão sendo salvas com esses valores exatamente? Ou estão abreviados?


Sim são esse valores como citado acima com letras maiúsculas.
Responder

Gostei + 0

20/08/2014

Itamar Souza

Boa tarde
Uma forma de você fazer isso seria assim:
Você precisa de três variáveis públicas:
  public
    { Public declarations }
    situacao :string;
    usuario  :string;
    tipouso  :string;



Se você vai trazer os dados do banco você vai suar o DBLookupComboBox para mostra os dados, no evento OnCloseUp você vai preencher a informação selecionada.

procedure TfrmPrincipal.DBLookupComboBox1CloseUp(Sender: TObject);
begin
   //exemplo
   situacao := DBLookupComboBox1.Text;
end;



De acordo com o conteúdo das variáveis você vai fazer a sua consulta no banco

Veja se isso ajuda!
Responder

Gostei + 0

20/08/2014

Motoqueiro

Boa tarde
Uma forma de você fazer isso seria assim:
Você precisa de três variáveis públicas:
  public
    { Public declarations }
    situacao :string;
    usuario  :string;
    tipouso  :string;



Se você vai trazer os dados do banco você vai suar o DBLookupComboBox para mostra os dados, no evento OnCloseUp você vai preencher a informação selecionada.

procedure TfrmPrincipal.DBLookupComboBox1CloseUp(Sender: TObject);
begin
   //exemplo
   situacao := DBLookupComboBox1.Text;
end;



De acordo com o conteúdo das variáveis você vai fazer a sua consulta no banco

Veja se isso ajuda!


OK até ai entendi, só que os três combobox vão ser selecionados ao mesmo tempo pelo usuário para gerar um relatorio seria um If dentro do outro ou tem outra forma de ser feito?
Responder

Gostei + 0

20/08/2014

Motoqueiro

Olá Motoqueiro,

faça como o Itamar disse e faça o seguinte select através do delphi:

variável:
ComandoSql : String;

ComandoSql := 'select campos from tabela where ((';

if not situacao = 'TODOS' then
  ComandoSql := ComandoSql + 'camposituacao = ' + QuotedStr(situacao) + ') ';
if not usuario = 'TODOS' then
  ComandoSql := ComandoSql + 'AND (campousuario = ' + QuotedStr(usuario) + ') ';
if not tipouso = 'TODOS' then
  ComandoSql := ComandoSql + 'AND (campousuario = ' + QuotedStr(tipouso) + ')';

ComandoSql := ComandoSql + ')';

if (situacao = 'TODOS') and (usuario = 'TODOS') and (tipouso = 'TODOS') then
  ComandoSql := 'Select campos from tabela';


[PARABÉNS!!! resolvido]

Muito obrigado!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar