Consulta com Filtro em TDateTimePicker

28/09/2016

0

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

Responder

Post mais votado

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

Eduardo Silva.

Eduardo Silva.
Responder

Mais Posts

05/10/2016

Alan Junior

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.
Responder

05/10/2016

Eduardo Silva.

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.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar