Filtro data no firebird
Pessoal, a SQL abaixo, não filtra por data, em tabela firebird.
No Paradox filtra, com este mesmo codigo. Aguem pode corrigir?
fazendo um favor.
procedure TFormRelatorioOrdemServico.ButtonPesquisaClick(Sender: TObject);
var
DataInicio, DataFinal, CodigoOS, DescricaoOS, Empresa, Prioridade
, TipoManutencao, Status: String;
begin
DataModuleManut.IBQueryOrdemServico.Close;
DataModuleManut.IBQueryOrdemServico.Open;
DataModuleManut.IBQueryOrdemServico.Refresh;
DataInicio:= DateToStr(DateTimePickerDataInicio.Date);
DataFinal:= DateToStr(DateTimePickerDataFinal.Date);
CodigoOS:= AnsiUpperCase(EditCodigoOrdemServico.Text);
DescricaoOS:= AnsiUpperCase(EditDescricaoOrdemServico.text);
Empresa:= AnsiUpperCase(DBLookupComboBoxCodigoEmpresa.text);
Prioridade:= AnsiUpperCase(DBLookupComboBoxCodigoPrioridade.text);
TipoManutencao:= AnsiUpperCase(DBLookupComboBoxCodigoTipoManutencao.text);
Status:= AnsiUpperCase(DBLookupComboBoxCodigoStatus.text);
with DataModuleManut.IBQueryOrdemServico do
Begin
close;
Sql.Clear;
Sql.Add(´SELECT * FROM OrdemServico´);
Sql.Add(´WHERE UPPER(CodOrdemServico) LIKE ´+#39+´¬´+ CodigoOS + ´¬´+39);
Sql.Add(´AND UPPER(DescricaoOrdemServico) LIKE ´+39+´¬´+ DescricaoOS +´¬´+39);//+´Order By Data desc´);
Sql.Add(´AND UPPER(CodEmpresa) LIKE ´+39+´¬´+ Empresa +´¬´+39);
Sql.Add(´AND UPPER(CodPrioridade) LIKE ´+39+´¬´+ Prioridade +´¬´+39);
Sql.Add(´AND UPPER(CodTipoManutencao) LIKE ´+39+´¬´+ TipoManutencao +´¬´+39);
Sql.Add(´AND UPPER(CodStatus) LIKE ´+39+´¬´+ Status +´¬´+39);
Filtered := True;
Filter:=´DATA >=´+39+DataInicio+39+´ AND DATA <=´+39+DataFinal+39;
open;
If DataModuleManut.IBQueryOrdemServico.RecordCount <= 0 Then
begin
ShowMessage(´Nenhum registro foi localizado.´);
exit;
End
Else
DataModuleManut.IBQueryOrdemServico.Open;
end;
end;
Abraço
Joao
No Paradox filtra, com este mesmo codigo. Aguem pode corrigir?
fazendo um favor.
procedure TFormRelatorioOrdemServico.ButtonPesquisaClick(Sender: TObject);
var
DataInicio, DataFinal, CodigoOS, DescricaoOS, Empresa, Prioridade
, TipoManutencao, Status: String;
begin
DataModuleManut.IBQueryOrdemServico.Close;
DataModuleManut.IBQueryOrdemServico.Open;
DataModuleManut.IBQueryOrdemServico.Refresh;
DataInicio:= DateToStr(DateTimePickerDataInicio.Date);
DataFinal:= DateToStr(DateTimePickerDataFinal.Date);
CodigoOS:= AnsiUpperCase(EditCodigoOrdemServico.Text);
DescricaoOS:= AnsiUpperCase(EditDescricaoOrdemServico.text);
Empresa:= AnsiUpperCase(DBLookupComboBoxCodigoEmpresa.text);
Prioridade:= AnsiUpperCase(DBLookupComboBoxCodigoPrioridade.text);
TipoManutencao:= AnsiUpperCase(DBLookupComboBoxCodigoTipoManutencao.text);
Status:= AnsiUpperCase(DBLookupComboBoxCodigoStatus.text);
with DataModuleManut.IBQueryOrdemServico do
Begin
close;
Sql.Clear;
Sql.Add(´SELECT * FROM OrdemServico´);
Sql.Add(´WHERE UPPER(CodOrdemServico) LIKE ´+#39+´¬´+ CodigoOS + ´¬´+39);
Sql.Add(´AND UPPER(DescricaoOrdemServico) LIKE ´+39+´¬´+ DescricaoOS +´¬´+39);//+´Order By Data desc´);
Sql.Add(´AND UPPER(CodEmpresa) LIKE ´+39+´¬´+ Empresa +´¬´+39);
Sql.Add(´AND UPPER(CodPrioridade) LIKE ´+39+´¬´+ Prioridade +´¬´+39);
Sql.Add(´AND UPPER(CodTipoManutencao) LIKE ´+39+´¬´+ TipoManutencao +´¬´+39);
Sql.Add(´AND UPPER(CodStatus) LIKE ´+39+´¬´+ Status +´¬´+39);
Filtered := True;
Filter:=´DATA >=´+39+DataInicio+39+´ AND DATA <=´+39+DataFinal+39;
open;
If DataModuleManut.IBQueryOrdemServico.RecordCount <= 0 Then
begin
ShowMessage(´Nenhum registro foi localizado.´);
exit;
End
Else
DataModuleManut.IBQueryOrdemServico.Open;
end;
end;
Abraço
Joao
Joao1313
Curtidas 0
Respostas
Emerson Nascimento
26/11/2007
procedure TFormRelatorioOrdemServico.ButtonPesquisaClick(Sender: TObject); var CodigoOS, DescricaoOS, Empresa, Prioridade, TipoManutencao, Status: String; begin CodigoOS := AnsiUpperCase(EditCodigoOrdemServico.Text); DescricaoOS := AnsiUpperCase(EditDescricaoOrdemServico.text); Empresa := AnsiUpperCase(DBLookupComboBoxCodigoEmpresa.text); Prioridade := AnsiUpperCase(DBLookupComboBoxCodigoPrioridade.text); TipoManutencao := AnsiUpperCase(DBLookupComboBoxCodigoTipoManutencao.text); Status := AnsiUpperCase(DBLookupComboBoxCodigoStatus.text); with DataModuleManut.IBQueryOrdemServico do begin close; Sql.Clear; Sql.Add(´SELECT * FROM OrdemServico´); Sql.Add(´WHERE UPPER(CodOrdemServico) LIKE :CodOrdemServico´); Sql.Add(´AND UPPER(DescricaoOrdemServico) LIKE :DescricaoOrdemServico´); Sql.Add(´AND UPPER(CodEmpresa) LIKE :CodEmpresa´); Sql.Add(´AND UPPER(CodPrioridade) LIKE :CodPrioridade´); Sql.Add(´AND UPPER(CodTipoManutencao) LIKE :CodTipoManutencao´); Sql.Add(´AND UPPER(CodStatus) LIKE :CodStatus´); Sql.Add(´AND DATA BETWEEN :DATAINICIAL AND :DATAFINAL´); ParamByName(´CodOrdemServico´).AsString := ´¬´+ CodigoOS + ´¬´; ParamByName(´DescricaoOrdemServico´).AsString := ´¬´+ DescricaoOS +´¬´; ParamByName(´CodEmpresa´).AsString := ´¬´+ Empresa +´¬´; ParamByName(´CodPrioridade´).AsString := ´¬´+ Prioridade +´¬´; ParamByName(´CodTipoManutencao´).AsString := ´¬´+ TipoManutencao +´¬´; ParamByName(´CodStatus´).AsString := ´¬´+ Status +´¬´; ParamByName(´DataInicial´).AsDate := DateTimePickerDataInicio.Date; ParamByName(´DataFinal´).AsDate := DateTimePickerDataFinal.Date; Open; if IsEmpty then ShowMessage(´Nenhum registro foi localizado.´); end; end;
GOSTEI 0
Joao1313
26/11/2007
Obrigado Emerson, deu certo.
Abraços
Joao
Abraços
Joao
GOSTEI 0
Joao1313
26/11/2007
Agora deu outro problema, na verdade ja tinha mas eu nao
percebia. É que o like pega caracteres da frente ou de traz e/ou,
exemplo: seleciono 1 na pesquisa retorna 101, 10, 1,etc, ou seja
tudo que tem 1 na frente ou atraz. Do jeito que fiz que esta abaixo,
seleciona certo se peco 1 vem somente 1. mas nao seleciona todos
se nao digito uma selecao, e nem seleciona mais por data.
procedure TFormRelatorioOrdemServicoItem.ButtonPesquisaClick
(Sender: TObject);
var
CodigoOSItem, CodigoOS, SubConjunto, Defeito, Causa,
Providencia, TipoProblema, Mantenedor, Status: String;
begin
CodigoOSItem := AnsiUpperCase(EditCodigoOrdemServicoItem.Text);
CodigoOS := AnsiUpperCase(DBLookupComboBoxCodigoOrdemServico.text);
SubConjunto := AnsiUpperCase(DBLookupComboBoxCodigoSubConjunto.text);
Defeito := AnsiUpperCase(DBLookupComboBoxCodigoDefeito.text);
Causa := AnsiUpperCase(DBLookupComboBoxCodigoCausa.text);
Providencia := AnsiUpperCase(DBLookupComboBoxCodigoProvidencia.text);
TipoProblema := AnsiUpperCase(DBLookupComboBoxTipoProblema.text);
Mantenedor := AnsiUpperCase(DBLookupComboBoxCodigoMantenedor.text);
Status := AnsiUpperCase(DBLookupComboBoxCodigoStatus.text);
with DataModuleManut.IBQueryOrdemServicoItem do
begin
close;
Sql.Clear;
Sql.Add(´SELECT * FROM OrdemServicoItem´);
Sql.Add(´WHERE (CodItem) = :CodItem´);
Sql.Add(´or (CodOrdemServico) = :CodOrdemServico´);
Sql.Add(´or (CodSubConjunto) = :CodSubConjunto´);
Sql.Add(´or (CodDefeito) = :CodDefeito´);
Sql.Add(´or (CodCausa) = :CodCausa´);
Sql.Add(´or (CodProvidencia) = :CodProvidencia´);
Sql.Add(´or (CodTipoProblema) = :CodTipoProblema´);
Sql.Add(´or (CodMantenedor) = :CodMantenedor´);
Sql.Add(´or (CodStatus) = :CodStatus´);
Sql.Add(´and DATADAOSITEM BETWEEN :DATAINICIAL AND :DATAFINAL´);
ParamByName(´CodItem´).AsString := CodigoOSItem ;
ParamByName(´CodOrdemServico´).AsString := CodigoOS ;
ParamByName(´CodSubConjunto´).AsString := SubConjunto ;
ParamByName(´CodDefeito´).AsString := Defeito ;
ParamByName(´CodCausa´).AsString := Causa ;
ParamByName(´CodProvidencia´).AsString := Providencia ;
ParamByName(´CodTipoProblema´).AsString := TipoProblema ;
ParamByName(´CodMantenedor´).AsString := Mantenedor ;
ParamByName(´CodStatus´).AsString := Status ;
ParamByName(´DataInicial´).AsDate := DateTimePickerDataInicio.Date;
ParamByName(´DataFinal´).AsDate := DateTimePickerDataFinal.Date;
Open;
if IsEmpty then
ShowMessage(´Nenhum registro foi localizado.´);
end;
end;
Abraços
Joao
percebia. É que o like pega caracteres da frente ou de traz e/ou,
exemplo: seleciono 1 na pesquisa retorna 101, 10, 1,etc, ou seja
tudo que tem 1 na frente ou atraz. Do jeito que fiz que esta abaixo,
seleciona certo se peco 1 vem somente 1. mas nao seleciona todos
se nao digito uma selecao, e nem seleciona mais por data.
procedure TFormRelatorioOrdemServicoItem.ButtonPesquisaClick
(Sender: TObject);
var
CodigoOSItem, CodigoOS, SubConjunto, Defeito, Causa,
Providencia, TipoProblema, Mantenedor, Status: String;
begin
CodigoOSItem := AnsiUpperCase(EditCodigoOrdemServicoItem.Text);
CodigoOS := AnsiUpperCase(DBLookupComboBoxCodigoOrdemServico.text);
SubConjunto := AnsiUpperCase(DBLookupComboBoxCodigoSubConjunto.text);
Defeito := AnsiUpperCase(DBLookupComboBoxCodigoDefeito.text);
Causa := AnsiUpperCase(DBLookupComboBoxCodigoCausa.text);
Providencia := AnsiUpperCase(DBLookupComboBoxCodigoProvidencia.text);
TipoProblema := AnsiUpperCase(DBLookupComboBoxTipoProblema.text);
Mantenedor := AnsiUpperCase(DBLookupComboBoxCodigoMantenedor.text);
Status := AnsiUpperCase(DBLookupComboBoxCodigoStatus.text);
with DataModuleManut.IBQueryOrdemServicoItem do
begin
close;
Sql.Clear;
Sql.Add(´SELECT * FROM OrdemServicoItem´);
Sql.Add(´WHERE (CodItem) = :CodItem´);
Sql.Add(´or (CodOrdemServico) = :CodOrdemServico´);
Sql.Add(´or (CodSubConjunto) = :CodSubConjunto´);
Sql.Add(´or (CodDefeito) = :CodDefeito´);
Sql.Add(´or (CodCausa) = :CodCausa´);
Sql.Add(´or (CodProvidencia) = :CodProvidencia´);
Sql.Add(´or (CodTipoProblema) = :CodTipoProblema´);
Sql.Add(´or (CodMantenedor) = :CodMantenedor´);
Sql.Add(´or (CodStatus) = :CodStatus´);
Sql.Add(´and DATADAOSITEM BETWEEN :DATAINICIAL AND :DATAFINAL´);
ParamByName(´CodItem´).AsString := CodigoOSItem ;
ParamByName(´CodOrdemServico´).AsString := CodigoOS ;
ParamByName(´CodSubConjunto´).AsString := SubConjunto ;
ParamByName(´CodDefeito´).AsString := Defeito ;
ParamByName(´CodCausa´).AsString := Causa ;
ParamByName(´CodProvidencia´).AsString := Providencia ;
ParamByName(´CodTipoProblema´).AsString := TipoProblema ;
ParamByName(´CodMantenedor´).AsString := Mantenedor ;
ParamByName(´CodStatus´).AsString := Status ;
ParamByName(´DataInicial´).AsDate := DateTimePickerDataInicio.Date;
ParamByName(´DataFinal´).AsDate := DateTimePickerDataFinal.Date;
Open;
if IsEmpty then
ShowMessage(´Nenhum registro foi localizado.´);
end;
end;
Abraços
Joao
GOSTEI 0
Emerson Nascimento
26/11/2007
creio ter faltado apenas um parêntesis:
procedure TFormRelatorioOrdemServicoItem.ButtonPesquisaClick (Sender: TObject); var CodigoOSItem, CodigoOS, SubConjunto, Defeito, Causa, Providencia, TipoProblema, Mantenedor, Status: String; begin CodigoOSItem := AnsiUpperCase(EditCodigoOrdemServicoItem.Text); CodigoOS := AnsiUpperCase(DBLookupComboBoxCodigoOrdemServico.text); SubConjunto := AnsiUpperCase(DBLookupComboBoxCodigoSubConjunto.text); Defeito := AnsiUpperCase(DBLookupComboBoxCodigoDefeito.text); Causa := AnsiUpperCase(DBLookupComboBoxCodigoCausa.text); Providencia := AnsiUpperCase(DBLookupComboBoxCodigoProvidencia.text); TipoProblema := AnsiUpperCase(DBLookupComboBoxTipoProblema.text); Mantenedor := AnsiUpperCase(DBLookupComboBoxCodigoMantenedor.text); Status := AnsiUpperCase(DBLookupComboBoxCodigoStatus.text); with DataModuleManut.IBQueryOrdemServicoItem do begin close; Sql.Clear; Sql.Add(´SELECT * FROM OrdemServicoItem´); Sql.Add(´WHERE ( (CodItem) = :CodItem´); // *** abri o parêntesis *** Sql.Add(´or (CodOrdemServico) = :CodOrdemServico´); Sql.Add(´or (CodSubConjunto) = :CodSubConjunto´); Sql.Add(´or (CodDefeito) = :CodDefeito´); Sql.Add(´or (CodCausa) = :CodCausa´); Sql.Add(´or (CodProvidencia) = :CodProvidencia´); Sql.Add(´or (CodTipoProblema) = :CodTipoProblema´); Sql.Add(´or (CodMantenedor) = :CodMantenedor´); Sql.Add(´or (CodStatus) = :CodStatus )´); // *** fechei o parêntesis *** Sql.Add(´and DATADAOSITEM BETWEEN :DATAINICIAL AND :DATAFINAL´); ParamByName(´CodItem´).AsString := CodigoOSItem ; ParamByName(´CodOrdemServico´).AsString := CodigoOS ; ParamByName(´CodSubConjunto´).AsString := SubConjunto ; ParamByName(´CodDefeito´).AsString := Defeito ; ParamByName(´CodCausa´).AsString := Causa ; ParamByName(´CodProvidencia´).AsString := Providencia ; ParamByName(´CodTipoProblema´).AsString := TipoProblema ; ParamByName(´CodMantenedor´).AsString := Mantenedor ; ParamByName(´CodStatus´).AsString := Status ; ParamByName(´DataInicial´).AsDate := DateTimePickerDataInicio.Date; ParamByName(´DataFinal´).AsDate := DateTimePickerDataFinal.Date; Open; if IsEmpty then ShowMessage(´Nenhum registro foi localizado.´); end; end;
GOSTEI 0
Joao1313
26/11/2007
Show de bola Emerson, só faltou: quando nao faço
selesao nem uma deveria vir todos os registros, era
assim que funcionava, agora da aquela mensagem...
Abraços
Joao
selesao nem uma deveria vir todos os registros, era
assim que funcionava, agora da aquela mensagem...
Abraços
Joao
GOSTEI 0