Consulta com Filtro em TDateTimePicker

Delphi

28/09/2016

Boa Noite meus Caros, venho incomodá-los novamente.
Estou tendo grande perca de tempo com um projeto em que tenho que fazer uma consulta com intervalo de datas entre "TDateTimePicker", mas não estou tendo sucesso.
O código que estou usando é o seguinte:
strsql:=' select tblcdsite0.iditem, (tblcdsite0.nomepro),tblmvmfat0.idempresa, ';
Strsql:=strsql+'(select sum( tblmvmite0.qtde ) sum_of_qtde from tblmvmite0 inner join tblmvmfat0 on (tblmvmite0.idfatent = tblmvmfat0.idfatent)';
strsql:=strsql+'where ((tblmvmfat0.entsai = ''E'' and tblmvmite0.iditem in ('+Edit1.text+')and tblmvmfat0.dtemissao between '+DTP1+' and '+DTP2+' AND TBLMVMFAT0.idempresa ='+Edit1.Text+' AND tblmvmfat0.idcoi in ('+edit2.text+'))))Quantidade_entrada,';
Strsql:=strsql+'(select sum( tblmvmite0.qtde ) sum_of_qtde from tblmvmite0 inner join tblmvmfat0 on (tblmvmite0.idfatent = tblmvmfat0.idfatent)';
strsql:=strsql+'where ((tblmvmfat0.entsai = ''S'' and tblmvmite0.iditem in ('+Edit1.text+')and tblmvmfat0.dtemissao between '+DTP1+' and '+DTP2+'  AND TBLMVMFAT0.idempresa ='+Edit1.Text+' AND tblmvmfat0.idcoi in ('+edit2.text+'))))Quantidade_saida,';
strsql:=strsql+' sum(tblmvmite0.qtde) QTDE,(select sum( tblmvmite0.qtde ) sum_of_qtde from tblmvmite0 ';
strsql:=strsql+' inner join tblmvmfat0 on (tblmvmite0.idfatent = tblmvmfat0.idfatent) ';
strsql:=strsql+' where ((tblmvmfat0.entsai = ''E'' and tblmvmite0.iditem in ('+Edit2.Text+')and tblmvmfat0.dtemissao between '+DTP1+' and '+DTP2+' AND tblmvmfat0.idcoi in ('+Edit3.Text+'))))- ';
strsql:=strsql+' (select sum( tblmvmite0.qtde ) sum_of_qtde from tblmvmite0 inner join tblmvmfat0 on (tblmvmite0.idfatent = tblmvmfat0.idfatent) ';
strsql:=strsql+' where ((tblmvmfat0.entsai = ''S'' and tblmvmite0.iditem in ('+Edit2.Text+')and tblmvmfat0.dtemissao between '+DTP1+' and '+DTP2+' AND tblmvmfat0.idcoi in ('+Edit3.Text+'))))as SALDO ';
strsql:=strsql+' from tblmvmfat0 inner join tblmvmite0 on (tblmvmfat0.idfatent = tblmvmite0.idfatent)';
strsql:=strsql+' inner join tblcdsite0 on (tblmvmite0.iditem = tblcdsite0.iditem) ';
strsql:=strsql+' where tblcdsite0.iditem in ('+Edit2.Text+') AND tblmvmfat0.idcoi in ('+Edit3.Text+') and tblmvmfat0.entsai IN (''E'')and tblmvmfat0.dtemissao between '+DTP1+' and '+DTP2+' ';
strsql:=strsql+' And tblmvmfat0.idempresa in ('+Edit1.Text+') group by tblcdsite0.iditem, tblmvmfat0.idcoi, tblcdsite0.nomepro, tblmvmfat0.idempresa, SALDO ';

Utilizo Delphi + Firebird 2.5.
Grato desde já.
Alan Junior

Alan Junior

Curtidas 0

Melhor post

Eduardo Silva.

Eduardo Silva.

29/09/2016

O campo tipo Date do Firebird utiliza o formato padrão americano (yyyy-mm-dd), então você vai ter que fazer a conversão
via código no Delphi, exemplo utilizando dois DateTimePicker:

'Select * From SuaTabela Where DATA_EMISSAO Between ' +
QuotedStr(FormatDateTime('yyyy-mm-dd', DateTimePicker1.Date)) + ' And ' +
QuotedStr(FormatDateTime('yyyy-mm-dd', DateTimePicker2.Date));

[sds]

Eduardo Belo
e-mail: beloelogica@gmail.com
GOSTEI 2

Mais Respostas

Alan Junior

Alan Junior

28/09/2016

Olá, boa tarde Eduardo Belo. Conforme instrução, fiz exatamente o descrito. Porem ao realizar a consulta, retornou o seguinte erro:
Sql Parse Error: EOF in string detected.
Desde já grato pela atenção.
GOSTEI 0
Eduardo Silva.

Eduardo Silva.

28/09/2016

Olá, boa tarde Eduardo Belo. Conforme instrução, fiz exatamente o descrito. Porem ao realizar a consulta, retornou o seguinte erro:
Sql Parse Error: EOF in string detected.
Desde já grato pela atenção.


Observe que utilizei o QuotedStr com o componente TDateTimePicker, faça o mesmo com o componente TEdit e veja se continua dando esse erro.
GOSTEI 0
POSTAR