Fórum Parametros do Delphi para o Rave #429238

21/11/2012

0

Bom dia pessoal,

minha duvida é a seguinte,

Fiz um relatório de comissão de vendedores, ele esta funcionando perfeitamente, porém preciso que ele filtre por datas.

No rave estou utilizando o DriverDataView, e no delphi coloquei dois DataTimePicker ( o dataI e dataF )

como faço para passar esses parametros para o rave ?
Willian Pavan

Willian Pavan

Responder

Posts

21/11/2012

Alisson Santos

Como está fazendo a chamada do dataset, pois você tem que criar uma rotina no dataset e passar o seu componente de data como os paramentros.
Responder

Gostei + 0

22/11/2012

Willian Pavan

Como está fazendo a chamada do dataset, pois você tem que criar uma rotina no dataset e passar o seu componente de data como os paramentros.


Bom dia Alisson, eu fiz o seguinte, criei esses parametros na minha query: (ele não esta apresentando nenhum erro, porem não me traz nenhum dado)

zQuery.Parambyname('DATAI').ASDATE := pesqData1.DATE;
zQuery.Parambyname('DATAF').ASDATE := pesqData2.DATE;


e a minha SQL é essa:

SELECT
  T1.NUMERO,
  T1.DATA_DAV,
  T1.VENDEDOR,
  T1.VALOR_TOT_PRO,
  T1.VALOR_TOT_DAV,
  T1.CLIENTE,
  T3.CODIGO,
  T3.NOME AS NOMECLIE,
  T2.NOME,

  CAST ((T1.VALOR_TOT_PRO * T2.COMISSAOV /100) AS NUMERIC(15,2)) AS CPROD,
  CAST (((T1.VALOR_TOT_DAV) * T2.COMISSAOV) /100 AS NUMERIC(15,2)) AS CNOTA,
  CAST ((T1.VALOR_TOT_DAV ) AS NUMERIC(15,2)) AS BCOMISAO,
  CAST ((T1.VALOR_TOT_DAV * T2.COMISSAOV /100)/(T1.VALOR_TOT_DAV)*100 AS NUMERIC(15,2)) AS PERCOM
FROM
    CABDAV T1, VENDEDOR T2, CLIENTE T3
WHERE
  T1.VENDEDOR = T2.NOME  AND
  T1.CLIENTE = T3.CODIGO AND
  T1.VALOR_TOT_DAV <> '0'  AND
  T1.DATA_DAV BETWEEN  :DATAI AND :DATAF
ORDER BY
  T1.VENDEDOR,
  T1.DATA_DAV


Responder

Gostei + 0

22/11/2012

William

Colega é sempre bom perguntar, vc testou essa instrução SQL direto no banco, passando as datas na própria instrução?

Não sei qual SGBD vc está usando, por exemplo, quando escrevo instruções SQL primeiro testo no IBExpert(Firebird), se funcionar transfiro para o delphi.

Caso não funcione no delphi, debugo a aplicação acompanhando a passagem de parâmetros geralmente é nesse ponto que dá problema.
Responder

Gostei + 0

22/11/2012

Willian Pavan

Colega é sempre bom perguntar, vc testou essa instrução SQL direto no banco, passando as datas na própria instrução?

Não sei qual SGBD vc está usando, por exemplo, quando escrevo instruções SQL primeiro testo no IBExpert(Firebird), se funcionar transfiro para o delphi.

Caso não funcione no delphi, debugo a aplicação acompanhando a passagem de parâmetros geralmente é nesse ponto que dá problema.


Olá Amigo,

Meu banco de dados é Firebird e executei no próprio IBExpert e funcionou certinho, quando executei ele me pediu as datas (DATAI e DATAF que são meus parametros) e listou perfeitamente.
Responder

Gostei + 0

22/11/2012

Bruno Leandro

Ola Willian tente debugar esse trexo e veja qual informação os parametros abaixo estao recebendo, outro ponto e no momento que voce abre a query, veja a propriedade recordcount da query, o valor retornado.

zQuery.Parambyname('DATAI').ASDATE := pesqData1.DATE;
zQuery.Parambyname('DATAF').ASDATE := pesqData2.DATE;
Responder

Gostei + 0

22/11/2012

Willian Pavan

Ola Willian tente debugar esse trexo e veja qual informação os parametros abaixo estao recebendo, outro ponto e no momento que voce abre a query, veja a propriedade recordcount da query, o valor retornado.

zQuery.Parambyname('DATAI').ASDATE := pesqData1.DATE;
zQuery.Parambyname('DATAF').ASDATE := pesqData2.DATE;


Vou tentar fazer isso, mas acho que ja sei oque pode ser.
se coloco para fazer a verificação da data dessa maneira ele não da certo:
 T1.DATA_DAV BETWEEN '28/10/2012' AND '22/11/2012'


porem se coloco dessa maneira ele funciona certinho
T1.DATA_DAV BETWEEN '28-OCT-2012' AND '28-NOV-2012'


só não sei como faço para o meu parametro receber a data dessa maneira
Responder

Gostei + 0

22/11/2012

Bruno Leandro

ok, entao tenta assim

zQuery.Parambyname('DATAI').asstring := FormatDateTime('dd-mmm-yyyy',pesqData1.DATE);
zQuery.Parambyname('DATAF').asstring := FormatDateTime('dd-mmm-yyyy',pesqData2.DATE);
Responder

Gostei + 0

22/11/2012

Willian Pavan

ok, entao tenta assim

zQuery.Parambyname('DATAI').asstring := FormatDateTime('dd-mmm-yyyy',pesqData1.DATE);
zQuery.Parambyname('DATAF').asstring := FormatDateTime('dd-mmm-yyyy',pesqData2.DATE);


Fiz como você me passou, ele não apresenta nenhum erro, mais não traz nenhum dado
Responder

Gostei + 0

22/11/2012

Bruno Leandro

olha willian tenta desta forma

zQuery.close;
zQuery.sql.clear;
zQuery.sql.text := ' SELECT ' +
' T1.NUMERO, ' +
' T1.DATA_DAV, ' +
' T1.VENDEDOR, ' +
' T1.VALOR_TOT_PRO, ' +
' T1.VALOR_TOT_DAV, ' +
' T1.CLIENTE, ' +
' T3.CODIGO, ' +
' T3.NOME AS NOMECLIE, ' +
' T2.NOME, ' +

' CAST ((T1.VALOR_TOT_PRO * T2.COMISSAOV /100) AS NUMERIC(15,2)) AS CPROD, ' +
' CAST (((T1.VALOR_TOT_DAV) * T2.COMISSAOV) /100 AS NUMERIC(15,2)) AS CNOTA, ' +
' CAST ((T1.VALOR_TOT_DAV ) AS NUMERIC(15,2)) AS BCOMISAO, ' +
' CAST ((T1.VALOR_TOT_DAV * T2.COMISSAOV /100)/(T1.VALOR_TOT_DAV)*100 AS NUMERIC(15,2)) AS PERCOM ' +
' FROM ' +
' CABDAV T1, VENDEDOR T2, CLIENTE T3 ' +
' WHERE ' +
' T1.VENDEDOR = T2.NOME AND ' +
' T1.CLIENTE = T3.CODIGO AND ' +
' T1.VALOR_TOT_DAV <> '0' AND ' +
' T1.DATA_DAV BETWEEN '+QuotedStr(FormatDateTime('dd-mmm-yyyy',pesqData1.DATE))+' AND '+QuotedStr(FormatDateTime('dd-mmm-yyyy',pesqData2.DATE)) +
' ORDER BY ' +
' T1.VENDEDOR, ' +
' T1.DATA_DAV ';
zQuery.Open;
Responder

Gostei + 0

22/11/2012

Willian Pavan

olha willian tenta desta forma

zQuery.close;
zQuery.sql.clear;
zQuery.sql.text := ' SELECT ' +
' T1.NUMERO, ' +
' T1.DATA_DAV, ' +
' T1.VENDEDOR, ' +
' T1.VALOR_TOT_PRO, ' +
' T1.VALOR_TOT_DAV, ' +
' T1.CLIENTE, ' +
' T3.CODIGO, ' +
' T3.NOME AS NOMECLIE, ' +
' T2.NOME, ' +

' CAST ((T1.VALOR_TOT_PRO * T2.COMISSAOV /100) AS NUMERIC(15,2)) AS CPROD, ' +
' CAST (((T1.VALOR_TOT_DAV) * T2.COMISSAOV) /100 AS NUMERIC(15,2)) AS CNOTA, ' +
' CAST ((T1.VALOR_TOT_DAV ) AS NUMERIC(15,2)) AS BCOMISAO, ' +
' CAST ((T1.VALOR_TOT_DAV * T2.COMISSAOV /100)/(T1.VALOR_TOT_DAV)*100 AS NUMERIC(15,2)) AS PERCOM ' +
' FROM ' +
' CABDAV T1, VENDEDOR T2, CLIENTE T3 ' +
' WHERE ' +
' T1.VENDEDOR = T2.NOME AND ' +
' T1.CLIENTE = T3.CODIGO AND ' +
' T1.VALOR_TOT_DAV <> '0' AND ' +
' T1.DATA_DAV BETWEEN '+QuotedStr(FormatDateTime('dd-mmm-yyyy',pesqData1.DATE))+' AND '+QuotedStr(FormatDateTime('dd-mmm-yyyy',pesqData2.DATE)) +
' ORDER BY ' +
' T1.VENDEDOR, ' +
' T1.DATA_DAV ';
zQuery.Open;


Bruno, ele deu o seguinte erro
' Conversion error from string "30-dez-2012" '
Responder

Gostei + 0

22/11/2012

William

Colega esse campo é do tipo Date no tabela?
Responder

Gostei + 0

22/11/2012

Willian Pavan

Colega esse campo é do tipo Date no tabela?


É do tipo DATE
Responder

Gostei + 0

22/11/2012

Willian Pavan

Bruno, fiz de uma outra maneira e deu certo, coloquei um Dbgrid para fazer um teste e ele filtrou certinho
porem no rave report, que é o que eu preciso ele sai em branco

segue o codigo abaixo:

valdata1:= DateToStr(pesqData1.date);
valdata2:= DateToStr(pesqData2.date);

DATAI:= copy(valdata1,4,2) + '/' + copy(valdata1,1,2) + '/' + copy(valdata1,7,4);
DATAF:= copy(valdata2,4,2) + '/' + copy(valdata2,1,2) + '/' + copy(valdata2,7,4);





zQuery.close;
zQuery.sql.clear;
zQuery.sql.text := ' SELECT ' +
' T1.NUMERO, ' +
' T1.DATA_DAV, ' +
' T1.VENDEDOR, ' +
' T1.VALOR_TOT_PRO, ' +
' T1.VALOR_TOT_DAV, ' +
' T1.CLIENTE, ' +
' T3.CODIGO, ' +
' T3.NOME AS NOMECLIE, ' +
' T2.NOME, ' +

' CAST ((T1.VALOR_TOT_PRO * T2.COMISSAOV /100) AS NUMERIC(15,2)) AS CPROD, ' +
' CAST (((T1.VALOR_TOT_DAV) * T2.COMISSAOV) /100 AS NUMERIC(15,2)) AS CNOTA, ' +
' CAST ((T1.VALOR_TOT_DAV ) AS NUMERIC(15,2)) AS BCOMISAO, ' +
' CAST ((T1.VALOR_TOT_DAV * T2.COMISSAOV /100)/(T1.VALOR_TOT_DAV)*100 AS NUMERIC(15,2)) AS PERCOM ' +
' FROM ' +
' CABDAV T1, VENDEDOR T2, CLIENTE T3 ' +
' WHERE ' +
' T1.VENDEDOR = T2.NOME AND ' +
' T1.CLIENTE = T3.CODIGO AND ' +
' T1.VALOR_TOT_DAV <> 0 AND ' +
' T1.DATA_DAV >= ' + #39 + DATAI + #39 + 'AND' +
' T1.DATA_DAV <= ' + #39 + DATAF + #39 +
' ORDER BY ' +
' T1.VENDEDOR, ' +
' T1.DATA_DAV ';
zQuery.Open;
Responder

Gostei + 0

22/11/2012

Willian Pavan

bruno, fiz de uma outra maneira e deu certo, coloquei um dbgrid para fazer um teste e ele filtrou certinho
porem no rave report, que é o que eu preciso ele sai em branco


Desculpa, erro meu ele não esta saindo em branco, na verdade esta dando uma mensagem de erro "Empty SQL Statement"
isso quando executo o projeto do rave, no grid que coloquei para testar filtrou certinho.
Responder

Gostei + 0

23/11/2012

Willian Pavan

E ai Bruno, wllfl....

Alguma Dica?
Responder

Gostei + 0

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

Aceitar