Comandos SQL

Delphi

13/08/2005

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

Curtidas 0

Respostas

Rjun

Rjun

13/08/2005

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



GOSTEI 0
Leandrosl

Leandrosl

13/08/2005

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

Obrigado


GOSTEI 0
Rjun

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.


GOSTEI 0
Leandrosl

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


GOSTEI 0
Cristianojedi

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


GOSTEI 0
Leandrosl

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

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


GOSTEI 0
Leandrosl

Leandrosl

13/08/2005

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;



GOSTEI 0
Lynx

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

Lynx

13/08/2005

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; 



GOSTEI 0
Leandrosl

Leandrosl

13/08/2005

Já coloquei SQL.ADD e deu o mesmo erro

Obrigado


GOSTEI 0
Leandrosl

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

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

Leandrosl

13/08/2005

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

Obrigado


GOSTEI 0
POSTAR