Fórum Parametros do Delphi para o Rave #429238
21/11/2012
0
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
Curtir tópico
+ 0Posts
21/11/2012
Alisson Santos
Gostei + 0
22/11/2012
Willian Pavan
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_DAVGostei + 0
22/11/2012
William
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.
Gostei + 0
22/11/2012
Willian Pavan
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.
Gostei + 0
22/11/2012
Bruno Leandro
zQuery.Parambyname('DATAI').ASDATE := pesqData1.DATE;
zQuery.Parambyname('DATAF').ASDATE := pesqData2.DATE;
Gostei + 0
22/11/2012
Willian Pavan
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
Gostei + 0
22/11/2012
Bruno Leandro
zQuery.Parambyname('DATAI').asstring := FormatDateTime('dd-mmm-yyyy',pesqData1.DATE);
zQuery.Parambyname('DATAF').asstring := FormatDateTime('dd-mmm-yyyy',pesqData2.DATE);
Gostei + 0
22/11/2012
Willian Pavan
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
Gostei + 0
22/11/2012
Bruno Leandro
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;
Gostei + 0
22/11/2012
Willian Pavan
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" '
Gostei + 0
22/11/2012
William
Gostei + 0
22/11/2012
Willian Pavan
É do tipo DATE
Gostei + 0
22/11/2012
Willian Pavan
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;
Gostei + 0
22/11/2012
Willian Pavan
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.
Gostei + 0
23/11/2012
Willian Pavan
Alguma Dica?
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)