FILTRAGEM DE TABELA ENTRE DATAS
Alguém pode me ajudar com este código, na filtragem de tabela por data. Não uso QUERY .
Os componentes que uso são dois TDataTime.date.
Só que a filtragem não ocorre. Nada acontece. Também sei que é necessário formatar os campos para Formato Mysql=> yyy/mm/yy.
Alguém pode me ajudar. Já estou perdendo muito tempo e não sei como resolver.
Os componentes que uso são dois TDataTime.date.
tbl_local.filter := 'Data BETWEEN' + data_ini.date +' AND ' + data_fim.date;
Só que a filtragem não ocorre. Nada acontece. Também sei que é necessário formatar os campos para Formato Mysql=> yyy/mm/yy.
Alguém pode me ajudar. Já estou perdendo muito tempo e não sei como resolver.
Adailso Cosme
Curtidas 0
Respostas
Natanael Ferreira
11/04/2018
Faça um teste com o código abaixo:
tbl_local.Filtered := False;
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_ini)) +
' AND ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_fim));
tbl_local.Filtered := True;GOSTEI 0
Adailso Cosme
11/04/2018
Não deu certo!
tbl_local.Filtered := False;
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_ini)) +
' AND ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_fim));
tbl_local.Filtered := True;
Não deu certo!
bl_local.Filtered := False;
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_ini.date)) +
' AND ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_fim.date));
tbl_local.Filtered := True;
Pode me ajudar mais?
tbl_local.Filtered := False;
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_ini)) +
' AND ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_fim));
tbl_local.Filtered := True;
Não deu certo!
bl_local.Filtered := False;
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_ini.date)) +
' AND ' + QuotedStr(FormatDateTime('mm/dd/yyyy', data_fim.date));
tbl_local.Filtered := True;
Pode me ajudar mais?
GOSTEI 0
Natanael Ferreira
11/04/2018
Não uso MySql mas creio que o formato de data utilizado é o yyyy-mm-dd.
Verifique qual é o formato das datas do banco.
Se o formato for este yyyy-mm-dd, teste o código abaixo:
Verifique qual é o formato das datas do banco.
Se o formato for este yyyy-mm-dd, teste o código abaixo:
tbl_local.Filtered := False;
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('yyyy-mm-dd', data_ini)) +
' AND ' + QuotedStr(FormatDateTime('yyyy-mm-dd', data_fim));
tbl_local.Filtered := True;GOSTEI 0
Adailso Cosme
11/04/2018
There is no overloaded version of ''FormatDateTime'' that can be called with these arguments
GOSTEI 0
Adailso Cosme
11/04/2018
tbl_local.Filtered := False;
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('yyyy-mm-dd', data_ini.date)) +
' AND ' + QuotedStr(FormatDateTime('yyyy-mm-dd', data_fim.date));
Acrescentei o .date....
Agora o MySql esta apresentando erro de expressão.
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('yyyy-mm-dd', data_ini.date)) +
' AND ' + QuotedStr(FormatDateTime('yyyy-mm-dd', data_fim.date));
Acrescentei o .date....
Agora o MySql esta apresentando erro de expressão.
GOSTEI 0
Adailso Cosme
11/04/2018
Já tentei assim:
procedure Tfrm_relatorio.filtrarClick(Sender: TObject);
var
filtro:string;
begin
Filtro := 'Select * From tbl_local';
Filtro := Filtro+' and Data >= :pData1 and Data <= :pData2';
dm.tbl_local.SQL.Clear;
dm.tbl_local.SQL.ADD(Filtro);
dm.tbl_local.ParamByName('pData1').AsString := FormatDateTime('yyyy-mm-dd',Data_ini.Date);
dm.tbl_local.ParamByName('pData2').AsString := FormatDateTime('yyyy-mm-dd',data_fim.Date);
dm.tbl_local.Open;
end;
Nada acontece. A grid mostra tudo!!
procedure Tfrm_relatorio.filtrarClick(Sender: TObject);
var
filtro:string;
begin
Filtro := 'Select * From tbl_local';
Filtro := Filtro+' and Data >= :pData1 and Data <= :pData2';
dm.tbl_local.SQL.Clear;
dm.tbl_local.SQL.ADD(Filtro);
dm.tbl_local.ParamByName('pData1').AsString := FormatDateTime('yyyy-mm-dd',Data_ini.Date);
dm.tbl_local.ParamByName('pData2').AsString := FormatDateTime('yyyy-mm-dd',data_fim.Date);
dm.tbl_local.Open;
end;
Nada acontece. A grid mostra tudo!!
GOSTEI 0
Adailso Cosme
11/04/2018
Definitivamente, desisto de fazer filtro entre datas, numa Ttable.
A query funciona perfeitamente, porém na impressão do FastReport fica uma bagunça.
Ja a Ttable as integidades permanecem.
Obrigado a todos!!
Mas desisto!!
A filtragem entre datas numa Ttable, no delphi, é muito limitada.
A query funciona perfeitamente, porém na impressão do FastReport fica uma bagunça.
Ja a Ttable as integidades permanecem.
Obrigado a todos!!
Mas desisto!!
A filtragem entre datas numa Ttable, no delphi, é muito limitada.
GOSTEI 0
Adailso Cosme
11/04/2018
Não uso MySql mas creio que o formato de data utilizado é o yyyy-mm-dd.
Verifique qual é o formato das datas do banco.
Se o formato for este yyyy-mm-dd, teste o código abaixo:
Verifique qual é o formato das datas do banco.
Se o formato for este yyyy-mm-dd, teste o código abaixo:
tbl_local.Filtered := False;
tbl_local.filter := 'Data BETWEEN ' + QuotedStr(FormatDateTime('yyyy-mm-dd', data_ini)) +
' AND ' + QuotedStr(FormatDateTime('yyyy-mm-dd', data_fim));
tbl_local.Filtered := True;GOSTEI 0
Adailso Cosme
11/04/2018
Definitivamente, desisto de fazer filtro entre datas, numa Ttable.
A query funciona perfeitamente, porém na impressão do FastReport fica uma bagunça.
Ja a Ttable as integidades permanecem.
Obrigado a todos!!
Mas desisto!!
A filtragem entre datas numa Ttable, no delphi, é muito limitada.
A query funciona perfeitamente, porém na impressão do FastReport fica uma bagunça.
Ja a Ttable as integidades permanecem.
Obrigado a todos!!
Mas desisto!!
A filtragem entre datas numa Ttable, no delphi, é muito limitada.
GOSTEI 0