Resultado de um Select (entre dadas) no Ireport é difetente de uma consulta direta no banco?[RESOL]

3 respostas
root_

Aew javada… seguinte, tenho a seguinte query no meu formulario do Ireport:
OBS: Banco de dados Firebird e pela ferramenta flamerobin executo essa query perfeitamente, claro q no lugar dos parametros eu coloco os valores especificos…

SELECT
     MOV.DATA_ENTRADA AS ENTRADA,
     MOV.SERIE,
     MOV.CTRC,
     C.RAZAO_NOME AS CONSIG,
     R.RAZAO_NOME AS REMETENTE,
     MOV.NUM_NF AS NF,
     MOV.VALOR_MERC AS VALOR,
     D.RAZAO_NOME AS DESTINATARIO,
     MOV.CIF_FOB AS "C/F",
     MOV.LOCAL_ENTREGA AS DESTINO,
     MOV.DATA_ENTREGA AS ENTREGA,
     MOV.PESO AS PESOKG,
     MOV.VALOR_BASE_CALCULO AS BASE_CALC,
     MOV.TOTAL AS COMISSAO
FROM MOVIMENTO MOV
    INNER JOIN CONSIG_REMET R ON MOV.REMET_ID=R.ID
    INNER JOIN DESTINATARIO D ON MOV.DESTINATARIO_ID=D.ID
    LEFT OUTER JOIN CONSIG_REMET C ON MOV.CONSIG_ID=C.ID
    WHERE MOV.SITUACAO='F' AND MOV.CONSIG_ID=$P{ID-CONSIG} AND MOV.DATA_ENTREGA BETWEEN $P{DATA-INICIAL} AND $P{DATA-FINAL} ORDER BY 1

OBS 1: OS CAMPOS DE DATA-INICIAL E DATA-FINAL SAO DO TIPO TIMESTAMP.

OBS 2: NO BANDO DE DADOS, NA TABELA MOVIMENTO, TENHO REGISTROS DE MOVIMENTOS Q ESTAO FINALIZADOS ENTRE OS DIAS 01.04.2009 ATÉ 15.04.2009.

[b] O problema é que quando eu executo o select direto no banco ele me retorna realmente os registros do dia 01.04.2009 até o dia 15. Já o retorno pelo Ireport os registros do dia 01.04.2009 não vem, somente do dia 02.04.2009 até 15.04.2009.

COMO FAÇO PARA NÃO ACONTECER ESSA DIFERENÇA??? SE É Q TEM SOLUÇÃO, PORQUE SENÃO TODA VEZ Q O CLIENTE QUISER UM RELATORIO ENTRE A DATA X E Y, VAI TER QUE COLOCAR NA APLICAÇAO REAMENTE ENTRE A DATA X-1 E Y.
[/b]

IMAGEM USANDO DA QUERY NO FLAMEROBIN (RETORNA 14 REGISTROS…)

IMAGEM DA MESMA QUERY, SÓ QUE VINDO DO IREPORT USANDO PARAMETROS PARA COMPLETAR A QUERY(RETORNA 10 REGISTROS, POIS OS DO DIA 01.04.2009 NAO VIERAM)…

3 Respostas

celsofurtado

Vc já tentou usar, ao invés de between, o >= e <=?

Exemplo:

... WHERE mov.data_entrega >= '01-04-2009' and mov.data_entrega <= '15-04-2009'

E talvez, quem sabe… usar outro formato de data, como ‘2009-04-01’ e ‘2009-04-15’?

Eu faria algumas tentativas deste tipo…

Espero ter ajudado…

té mais…

root_

Amigo… o select diretamente no banco funciona perfeitamente… a questao é no irepot, pois o data-inicial e data-final sao do tipo timestamp… entao eu n defino formato… tentarei colocando os parametros das datas como sting e passando ela no formato q o firebird entenda, q eh o DD.MM.AAAA, e vamo ver no que da neh…

root_

É… realmente nao da certo isso, tem que ser com timestamp mesmo… Pq no banco o tipo eh timesTamp, entao no ireport os paramentros tb tem que ser do mesmo tipo do banco…

Criado 22 de abril de 2009
Ultima resposta 23 de abr. de 2009
Respostas 3
Participantes 2