Comandos SQL
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
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
Curtidas 0
Respostas
Rjun
13/08/2005
SELECT * FROM Tabela WHERE Data BETWEEN :Data1 AND :Data2
GOSTEI 0
Leandrosl
13/08/2005
Amigo não funciono, deu erro de syntax, outra pergunta para que serve esse como ´BETWEEN ´.
Obrigado
Obrigado
GOSTEI 0
Rjun
13/08/2005
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.
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.
GOSTEI 0
Leandrosl
13/08/2005
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
Aguardo resposta
Obrigado
GOSTEI 0
Cristianojedi
13/08/2005
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
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
GOSTEI 0
Leandrosl
13/08/2005
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
GOSTEI 0
Cristianojedi
13/08/2005
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
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
GOSTEI 0
Leandrosl
13/08/2005
Amigo, testei mais deu o seguinte erro: ´ Operation not applicable ´.
Segue abaixo o codigo:
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;
GOSTEI 0
Lynx
13/08/2005
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;
GOSTEI 0
Lynx
13/08/2005
Ignore o código acima copiei igual...
segue abaixo
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;
GOSTEI 0
Leandrosl
13/08/2005
Já coloquei SQL.ADD e deu o mesmo erro
Obrigado
Obrigado
GOSTEI 0
Leandrosl
13/08/2005
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
Então eu acho que fica mais facil e Converter o campo ´DataVenda´ para Date, o que vcs acham ?
Obrigado
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
GOSTEI 0
Leandrosl
13/08/2005
Pessoal, alguém sabe me informar como eu converto um campo Texto para Data via SQL ?
Obrigado
Obrigado
GOSTEI 0