Filtro no Rave Report
Galera, sou novato tanto no rave quanto no Delphi.
Estou fazendo um filtro e jogando para SdsVendas (TSQLDATASET) com o command text, para filtrar no banco de dados e receber a informação de vendas do dia escolhido pelo cliente.
tenho um DATASOURCE no meu form, dois maskedit e um button.
quero que o cliente coloque a data desejada e clique no botão, para saber as vendas apenas dessa data. Fiz o seguinte select
Rm.sDSVendas.CommandText := 'select *from venda v where v.data >= '+MeDtInicial.Text+' AND v.data <= '+MeDtFinal.Text;
RM.RvProj.ExecuteReport('VendasRealizadas');
onde eu estou errando, poderiam me ajudar?
Estou fazendo um filtro e jogando para SdsVendas (TSQLDATASET) com o command text, para filtrar no banco de dados e receber a informação de vendas do dia escolhido pelo cliente.
tenho um DATASOURCE no meu form, dois maskedit e um button.
quero que o cliente coloque a data desejada e clique no botão, para saber as vendas apenas dessa data. Fiz o seguinte select
Rm.sDSVendas.CommandText := 'select *from venda v where v.data >= '+MeDtInicial.Text+' AND v.data <= '+MeDtFinal.Text;
RM.RvProj.ExecuteReport('VendasRealizadas');
onde eu estou errando, poderiam me ajudar?
Ricardo Lima
Curtidas 0
Respostas
Ricardo Lima
05/11/2013
o form completo e o seguinte
unit UfrmConsultaVenda;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls,
Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.ComCtrls;
type
TFrmConsultaVenda = class(TForm)
MeDtInicial: TMaskEdit;
MeDtFinal: TMaskEdit;
Button1: TButton;
DsVendaC: TDataSource;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmConsultaVenda: TFrmConsultaVenda;
implementation
{$R *.dfm}
uses uRM;
procedure TFrmConsultaVenda.Button1Click(Sender: TObject);
begin
Rm.sDSVendas.CommandText := 'select *from venda v where v.data >= '+MeDtInicial.Text+' AND v.data <= '+MeDtFinal.Text;
RM.RvProj.ExecuteReport('VendasRealizadas');
end;
end.
unit UfrmConsultaVenda;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls,
Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.ComCtrls;
type
TFrmConsultaVenda = class(TForm)
MeDtInicial: TMaskEdit;
MeDtFinal: TMaskEdit;
Button1: TButton;
DsVendaC: TDataSource;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmConsultaVenda: TFrmConsultaVenda;
implementation
{$R *.dfm}
uses uRM;
procedure TFrmConsultaVenda.Button1Click(Sender: TObject);
begin
Rm.sDSVendas.CommandText := 'select *from venda v where v.data >= '+MeDtInicial.Text+' AND v.data <= '+MeDtFinal.Text;
RM.RvProj.ExecuteReport('VendasRealizadas');
end;
end.
GOSTEI 0
Marcos Saffran
05/11/2013
o form completo e o seguinte
unit UfrmConsultaVenda;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls,
Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.ComCtrls;
type
TFrmConsultaVenda = class(TForm)
MeDtInicial: TMaskEdit;
MeDtFinal: TMaskEdit;
Button1: TButton;
DsVendaC: TDataSource;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmConsultaVenda: TFrmConsultaVenda;
implementation
{$R *.dfm}
uses uRM;
procedure TFrmConsultaVenda.Button1Click(Sender: TObject);
begin
Rm.sDSVendas.CommandText := 'select *from venda v where v.data >= '+MeDtInicial.Text+' AND v.data <= '+MeDtFinal.Text;
RM.RvProj.ExecuteReport('VendasRealizadas');
end;
end.
unit UfrmConsultaVenda;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls,
Data.DB, Vcl.Grids, Vcl.DBGrids, Vcl.ComCtrls;
type
TFrmConsultaVenda = class(TForm)
MeDtInicial: TMaskEdit;
MeDtFinal: TMaskEdit;
Button1: TButton;
DsVendaC: TDataSource;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FrmConsultaVenda: TFrmConsultaVenda;
implementation
{$R *.dfm}
uses uRM;
procedure TFrmConsultaVenda.Button1Click(Sender: TObject);
begin
Rm.sDSVendas.CommandText := 'select *from venda v where v.data >= '+MeDtInicial.Text+' AND v.data <= '+MeDtFinal.Text;
RM.RvProj.ExecuteReport('VendasRealizadas');
end;
end.
Olá Ricardo,
tente assim:
Rm.sDSVendas.CommandText := 'select *from venda v where v.data >= '+MeDtInicial.Text+' AND v.data <= '+MeDtFinal.Text;
if Rm.sDSVendas.Active then
Rm.sDSVendas.Active := False;
Rm.sDSVendas.Active := True;
RM.RvProj.ExecuteReport('VendasRealizadas');aqui o SQLDataSet foi fechado e aberto para poder pegar os dados do commandtext, no meu programa eu também faço isso com o clientdataset, antes de executar o relatório.
GOSTEI 0
Ricardo Lima
05/11/2013
Entendi, quando chegar do trabalho vou testar e aviso.
Obrigado
Obrigado
GOSTEI 0
Paulo Freire
05/11/2013
No seu select separe o * do from.
GOSTEI 0
Ricardo Lima
05/11/2013
FAREI ISSO
GOSTEI 0
Ricardo Lima
05/11/2013
Pessoal, descobri um erro e resolvi. no meu dspvendas a propriedade do DataSetProvidor poAllowCommandText estava false. mudei para True
agora está me passando o seguinte erro:
"TOKEN UNKNOWN - LINE 1, COLUMN 39
1"
Meu codigo está assim:
.
Pelo que pesquisei e erro de sintaxe, mas não consigo achar o erro.
Podem me ajudar?
Antes que me esqueça, estou usando dois TMaskEdit para a digitação do usuario
agora está me passando o seguinte erro:
"TOKEN UNKNOWN - LINE 1, COLUMN 39
1"
Meu codigo está assim:
Rm.cDSVendas.CommandText := 'select * from venda v where v.data >= 19.06.2013 AND v.data <= 19.06.2013';
if Rm.cDSVendas.Active then
Rm.CDSVendas.Active := False;
Rm.CDSVendas.Active := True;
ShowMessage(MeDtInicial.Text);
RM.RvProj.ExecuteReport('VendasRealizadas');Pelo que pesquisei e erro de sintaxe, mas não consigo achar o erro.
Podem me ajudar?
Antes que me esqueça, estou usando dois TMaskEdit para a digitação do usuario
GOSTEI 0
Marcos Saffran
05/11/2013
Olá Ricardo,
tente as dadas nesses formatos: aaaa-mm-dd ou dd-mm-aaaa, não se esqueça que do separador '-'.
tente as dadas nesses formatos: aaaa-mm-dd ou dd-mm-aaaa, não se esqueça que do separador '-'.
GOSTEI 0
Ricardo Lima
05/11/2013
ficou assim:
Também tentei invertendo as datas.
Porém, deu o seguinte erro:
expression evaluation not supported
Rm.cDSVendas.CommandText := 'select * from venda v where v.data >= 2013-06-19 AND v.data <= 2013-06-19';
if Rm.cDSVendas.Active then
Rm.CDSVendas.Active := False;
Rm.CDSVendas.Active := True;
RM.RvProj.ExecuteReport('VendasRealizadas');Também tentei invertendo as datas.
Porém, deu o seguinte erro:
expression evaluation not supported
GOSTEI 0
Ricardo Lima
05/11/2013
NUSSSSSSS, consegui aqui...
Bem, consegui parcialmente. Quanto eu coloco duas datas iguais, o sistema puxa certinho, más quando eu coloco duas datas diferente (de, ate); vem tudo em branco...
alguém poderia me dizer o pq?
segue codigo
ai galera, muito obrigado pela ajuda...
Bem, consegui parcialmente. Quanto eu coloco duas datas iguais, o sistema puxa certinho, más quando eu coloco duas datas diferente (de, ate); vem tudo em branco...
alguém poderia me dizer o pq?
segue codigo
var
S: String;
begin
RM.CDSVendas.Close;
S := 'select * from venda v where v.data <= ' + QuotedStr(MeDtInicial.Text)
+ ' and v.data >= ' + QuotedStr(MeDtFinal.Text);
RM.CDSVendas.CommandText := S;
RM.CDSVendas.Open;
RM.RvProj.ExecuteReport('VendasRealizadas');
S := EmptyStr;ai galera, muito obrigado pela ajuda...
GOSTEI 0
Ricardo Lima
05/11/2013
já descobri o erro, no select quando eu coloquei <= e >= eu inverti....
deveria ser >= e <=
obrigado gente...
este post já está resolvido....
deveria ser >= e <=
obrigado gente...
este post já está resolvido....
GOSTEI 0
Marcos Saffran
05/11/2013
NUSSSSSSS, consegui aqui...
Bem, consegui parcialmente. Quanto eu coloco duas datas iguais, o sistema puxa certinho, más quando eu coloco duas datas diferente (de, ate); vem tudo em branco...
alguém poderia me dizer o pq?
segue codigo
ai galera, muito obrigado pela ajuda...
Bem, consegui parcialmente. Quanto eu coloco duas datas iguais, o sistema puxa certinho, más quando eu coloco duas datas diferente (de, ate); vem tudo em branco...
alguém poderia me dizer o pq?
segue codigo
var
S: String;
begin
RM.CDSVendas.Close;
S := 'select * from venda v where v.data <= ' + QuotedStr(MeDtInicial.Text)
+ ' and v.data >= ' + QuotedStr(MeDtFinal.Text);
RM.CDSVendas.CommandText := S;
RM.CDSVendas.Open;
RM.RvProj.ExecuteReport('VendasRealizadas');
S := EmptyStr;ai galera, muito obrigado pela ajuda...
Olá Ricardo, tente trocar o '<=' antes do MeDtInivial' por '>=' e trocar o '>=' antes do 'MedtFinal' por '<=', pois do jeito que está está tentando buscar as datas que são menores ou iguais à data inicial e as datas que são maiores ou iguais à data final.
GOSTEI 0
Marcos Saffran
05/11/2013
Desculpe-me, não vi que você já havia resolvido.
GOSTEI 0
Ricardo Lima
05/11/2013
BLZ, VLW
GOSTEI 0