Utilizar Filtro em Query
Caros calegas, ja pesquisei no forum sobre o assunto, porem não obtive resposta satisfatoria. Portando coloco este tópic.
Tenho uma query, onde apos aberta preciso filtra-la (Por Exemplo : Contas a Pagar, apos o sql em quero apenas as contas paga = false)
Acontece o seguinte, se o meu sql for sem a clausula where (Exemplo: ´Select * from contaspagar´), ao filtar por paga = false, funciona normalmente.
Porem ao utilizar o where (Exemplo: ´Select * from contaspagar Where numDuplicata >= ´AlgumaCoisa´´), depois de filtrar por paga = false, do mesmo modo como anteriormente, ela não mostra nada.
Tenho uma query, onde apos aberta preciso filtra-la (Por Exemplo : Contas a Pagar, apos o sql em quero apenas as contas paga = false)
Acontece o seguinte, se o meu sql for sem a clausula where (Exemplo: ´Select * from contaspagar´), ao filtar por paga = false, funciona normalmente.
Porem ao utilizar o where (Exemplo: ´Select * from contaspagar Where numDuplicata >= ´AlgumaCoisa´´), depois de filtrar por paga = false, do mesmo modo como anteriormente, ela não mostra nada.
Paganato
Curtidas 0
Respostas
Edineidaniel
13/09/2003
Não sei se é isso que vc quer mas vou ver o q posso fazer...
tente isso-
No OnClick:
query1.SQL.Clear;
query1.sql.add(´select * from contaspagar´);
query1.sql.add(´where NumDuplicata = :Duplicata and´);
query1.sql.add(´paga = false´);
query1.params[0].AsInteger:= StrToInt(Edit1.text);
query1.open;
query1.active:=true;
tente usar parametros para as suas consultas com SQL, que foi o que eu usei...
Se isso não resolver me mande um e-mail : edinei@setrem.com.br
t+
Edinei
tente isso-
No OnClick:
query1.SQL.Clear;
query1.sql.add(´select * from contaspagar´);
query1.sql.add(´where NumDuplicata = :Duplicata and´);
query1.sql.add(´paga = false´);
query1.params[0].AsInteger:= StrToInt(Edit1.text);
query1.open;
query1.active:=true;
tente usar parametros para as suas consultas com SQL, que foi o que eu usei...
Se isso não resolver me mande um e-mail : edinei@setrem.com.br
t+
Edinei
GOSTEI 0
Paganato
13/09/2003
Caro Edinei, eu entendi o que vc quiz dizer, porém, o caso é o seguinte:
O Usuario pode fazer uma pesquisa parametrizada, ou simples das Contas a Pagar.
Apos abrir a Query, com parametros ou sem, ele pode fazer uma quitação em grupo.
(Explico: Dentre os registros que foram retornados a ele, pode-se fazer o pagamento
de todas a contas que não foram pagas.)
Sendo assim, se ele não escolheu apenas contas pendentes, eu quero filtrar as contas pendentes,
mostrando para ele o valor total a pagar e consequentemente ele pode escolher pagar-se
todas junto.
Não sei se fui bem claro, mas ja agradeço pela atenção.
O Usuario pode fazer uma pesquisa parametrizada, ou simples das Contas a Pagar.
Apos abrir a Query, com parametros ou sem, ele pode fazer uma quitação em grupo.
(Explico: Dentre os registros que foram retornados a ele, pode-se fazer o pagamento
de todas a contas que não foram pagas.)
Sendo assim, se ele não escolheu apenas contas pendentes, eu quero filtrar as contas pendentes,
mostrando para ele o valor total a pagar e consequentemente ele pode escolher pagar-se
todas junto.
Não sei se fui bem claro, mas ja agradeço pela atenção.
GOSTEI 0
Daaneto
13/09/2003
Colega veja se ajuda:
// Se nao existem filtros, aplica o primeiro
if QUERY.Filter = ´´ Then
Begin
QUERY.Filter := [i:cf5d98a87b]´PAGA = ´´SIM´´´´[/i:cf5d98a87b];
End
Else
Begin
// Se ja existe algum filtro, aplica mais um, que sera o atual mais o novo filtro
QUERY.Filter := [i:cf5d98a87b]QUERY.Filter + ´ AND NUMDUPLICATA = ´´500´´´´;[/i:cf5d98a87b]
End;
// Aplica o filtro
QUERY.Filtered := True;
Faça as alterações necessárias, onde está em itálico.
Este filtro, não depende da instrução SQL da query.
// Se nao existem filtros, aplica o primeiro
if QUERY.Filter = ´´ Then
Begin
QUERY.Filter := [i:cf5d98a87b]´PAGA = ´´SIM´´´´[/i:cf5d98a87b];
End
Else
Begin
// Se ja existe algum filtro, aplica mais um, que sera o atual mais o novo filtro
QUERY.Filter := [i:cf5d98a87b]QUERY.Filter + ´ AND NUMDUPLICATA = ´´500´´´´;[/i:cf5d98a87b]
End;
// Aplica o filtro
QUERY.Filtered := True;
Faça as alterações necessárias, onde está em itálico.
Este filtro, não depende da instrução SQL da query.
GOSTEI 0
Paganato
13/09/2003
Colega Daaneto,
fiz do jeito que vc disse. Porém o problema continua: Quando a SQL da Query não contém a clausula WHERE, tudo ocorre normalmente, por outro lado quando coloco o WHERE, após filtrar a Query, ela não apresenta nenhum registro.
Estou ficando sem saber o que vazer.
fiz do jeito que vc disse. Porém o problema continua: Quando a SQL da Query não contém a clausula WHERE, tudo ocorre normalmente, por outro lado quando coloco o WHERE, após filtrar a Query, ela não apresenta nenhum registro.
Estou ficando sem saber o que vazer.
GOSTEI 0