Fórum Comandos SQL #291681

13/08/2005

0

Pessoal, a minha duvida é o seguinte, quero fazer uma SQL para filtrar a quantidade de registro entre mêses, Exemplo:
Tenho um formulario com 2 DateTimePicker, um é a Data Inicial e o outro a Data Final, e um DBGrid. O usuário vai selecionar uma Data Inicial e Final (Ex: Data Inicial: 13/07/2005 e Data Final: 13/08/2005), então o DBgrip irá mostrar só os registro feitos durante esse periodo de 13/07/2005 a 13/07/2005.

Obrigado


Leandrosl

Leandrosl

Responder

Posts

13/08/2005

Rjun

SELECT * FROM Tabela WHERE Data BETWEEN :Data1 AND :Data2



Responder

Gostei + 0

13/08/2005

Leandrosl

Amigo não funciono, deu erro de syntax, outra pergunta para que serve esse como ´BETWEEN ´.

Obrigado


Responder

Gostei + 0

13/08/2005

Rjun

Erro de sintaxe? Então você deve ter feito algo errado. Que banco você esta usando? E qual tecnologia de acesso? Carregou os parâmetros Data1 e Data2?

A cláusula BETWEEN seleciona os registros que tiverem o valor entre cláusula 1 e cláusula2. No exemplo ele seleciona os registros que tiveram o campo data entre os valores Data1 e Data2.


Responder

Gostei + 0

13/08/2005

Leandrosl

Rjun, no meu caso eu tenho estou usando 2 DateTimePicker, um é a Data Inicial e a Outra é Data Final, nesse caso como terei que proceder ? Sobre o erro, era erro de sintaxe, mais já resolve, o banco que estou utilizando é MySQL.

Aguardo resposta
Obrigado


Responder

Gostei + 0

13/08/2005

Cristianojedi

Colega,

Qual tecnologia (DBExpress, quais componentes?) você está usando? O erro parou e filtrou os registros que você queria? Você está passando a query no componente?

Cristiano


Responder

Gostei + 0

14/08/2005

Leandrosl

Pessoal eu não sei muito sobre Delphi, então eu vo colocar aqui a linha de comando, aí se alguém pode corrigir

 With QueryAnuncio Do
        Begin
            Close;
            SQL.Clear;
            SQL.Add(´SELECT * FROM anuncios´);
            SQL.Add(´WHERE DataVenda BETWEEN:"´+DateTimePickerDInicial.DateTime+´" AND "´+DateTimePickerDFinal.DateTime+´"´);
            SQL.Add(´ORDER BY NomeCliente´);
            Open;
        End; 

Obrigado



Responder

Gostei + 0

14/08/2005

Cristianojedi

Faz assim:

With QueryAnuncio Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM anuncios´);
SQL.Add(´WHERE DataVenda BETWEEN :DATAINI AND :DATAFIN´);
SQL.Add(´ORDER BY NomeCliente´);
ParamByName(´DATAINI´).AsDate := DateTimePickerDInicial.Date;
ParamByName(´DATAFIN´).AsDate := DateTimePickerDFinal.Date;
Open;
End;

Cristiano


Responder

Gostei + 0

14/08/2005

Leandrosl

Amigo, testei mais deu o seguinte erro: ´ Operation not applicable ´.
Segue abaixo o codigo:

With QueryAnuncio Do
Begin
Close;
SQL.Clear;
SQL.Text:=´SELECT * FROM anuncios WHERE DataVenda BETWEEN :DataInicial AND :DataFinal´;
ParamByName(´DataInicial´).AsDate := DateTimePickerDInicial.Date;
ParamByName(´DataFinal´).AsDate := DateTimePickerDFinal.Date;
Open;
End;



Responder

Gostei + 0

14/08/2005

Lynx

não é SQL.text, é SQL.add;

With QueryAnuncio Do 
Begin 
Close; 
SQL.Clear; 
SQL.Text:=´SELECT * FROM anuncios WHERE DataVenda BETWEEN :DataInicial AND :DataFinal´; 
ParamByName(´DataInicial´).AsDate := DateTimePickerDInicial.Date; 
ParamByName(´DataFinal´).AsDate := DateTimePickerDFinal.Date; 
Open; 
End; 



Responder

Gostei + 0

14/08/2005

Lynx

Ignore o código acima copiei igual...
segue abaixo
With QueryAnuncio Do 
Begin 
Close; 
SQL.Clear; 
SQL.add:=´SELECT * FROM anuncios WHERE DataVenda BETWEEN :DataInicial AND :DataFinal´; 
ParamByName(´DataInicial´).AsDate := DateTimePickerDInicial.Date; 
ParamByName(´DataFinal´).AsDate := DateTimePickerDFinal.Date; 
Open; 
End; 



Responder

Gostei + 0

14/08/2005

Leandrosl

Já coloquei SQL.ADD e deu o mesmo erro

Obrigado


Responder

Gostei + 0

14/08/2005

Leandrosl

Pessoal, descobri o problema !!!
O Problema está no Tipo do campo da Tabela, quando eu coloco na tabela o campo DataVenda como ´Date´, o formato fica (Ex:2005-01-08), e não 01/08/2005, No Codigo eu coloquei assim, eu sei que está errado mais não deu erro

With QueryAnuncio Do
Begin
Close;
SQL.Clear;
SQL.Add(´SELECT * FROM anuncios WHERE DataVenda >= :DataInicial AND DataVenda <= :DataFinal´);
ParamByName(´DataInicial´).AsString := DateToStr(DateTimePickerDInicial.Date);
ParamByName(´DataFinal´).AsString := DateToStr(DateTimePickerDFinal.Date);
SQL.Add(´ORDER BY NomeCliente´);
Open;
End;


Então eu acho que fica mais facil e Converter o campo ´DataVenda´ para Date, o que vcs acham ?

Obrigado


Responder

Gostei + 0

15/08/2005

Leandrosl

Pessoal, alguém sabe me informar como eu converto um campo Texto para Data via SQL ?

Obrigado


Responder

Gostei + 0

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

Aceitar