Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gil Brandão

[Resolvido] Filtro SQL em 03 Campos diferentes (Data), (Hora Inic

Recommended Posts

Boa Tarde, Senhores!

To com outro probleminha também de fácil solução para os senhores, quero fazer um filtro SQL e preciso que me ajudem nesse sentido...

 

Bom, tenho três campos para serem filtrados simultaneamente são eles: (AL_NOME_FREQ_LIST),(AL_DATA_FREQ_LIST),(HORA_ENTRADA), fixados em 03 TDateTimePicker diferentes quero fazer um filtro que retorne o seguinte:

Combinação de 03 critérios: (NOME DO ALUNO ), (DATA) e (HORA DA ENTRADA):...

Ou seja, retorne no DBGrid no período de Ex. (11:00:00 a 13:00:00) do dia (08/03/2011) quantos alunos entraram na Academia.

 

Uso firebird 2.0 e Delphi7

 

estou usando estes comandos:

 

VAR

INICIO: STRING;

FINAL: STRING;

Begin

Inicio := TimeToStr(PesqData1_Hora_Inicio.Time);

Final := TimeToStr(PesqData1_Hora_Final.Time);

PesqData1_Inicio_Apagar.Date:=Date;

 

Query_Hora.Close;

Query_Hora.SQL.Clear;

Query_Hora.SQL.Text:='SELECT AL_COD_FREQ_IMPORT_LIST,AL_NOME_FREQ_LIST,AL_MODALIDADE_FREQ_LIST,AL_DATA_FREQ_LIST,AL_INSTRUTOR_FREQ_LIST,HORA_ENTRADA FROM AC_AL_FREQ_LIST WHERE HORA_ENTRADA >=:pInicial and HORA_ENTRADA <=:pFinal ORDER BY AL_DATA_FREQ_LIST';

Query_Hora.ParamByName('pInicial').AsDateTime := StrToTime(Inicio);

Query_Hora.ParamByName('pFinal').AsDateTime := StrToTime(Final);

Query_Hora.Prepare;

Query_Hora.Open;

 

 

Retorna apenas o horario de entrada de todos os dias como acrescento a data a este comando?

 

desde já agradeço a atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem mudei o esquema coloquei o terceiro DATA1 e mesmo assim nada... Onde eu estou errando?

 

VAR

INICIO: STRING;

FINAL: STRING;

DATA1: string;

begin

 

Inicio := TimeToStr(PesqData1_Hora_Inicio.Time);

Final := TimeToStr(PesqData1_Hora_Final.Time);

Data := DateToStr(pesqData1.Date);

 

Query_Dia_Hora.Close;

Query_Dia_Hora.SQL.Clear;

Query_Dia_Hora.SQL.Text:='SELECT AL_DATA_FREQ_LIST,AL_NOME_FREQ_LIST,HORA_ENTRADA FROM AC_AL_FREQ_LIST WHERE HORA_ENTRADA >=:pInicial and HORA_ENTRADA <=:pFinal ORDER BY AL_NOME_FREQ_LIST';

Query_Dia_Hora.ParamByName('DATA1').AsDate := StrToDate(Data1);

Query_Dia_Hora.ParamByName('pInicial').AsTime := StrToTime(Inicio);

Query_Dia_Hora.ParamByName('pFinal').AsTime := StrToTime(Final);

Query_Dia_Hora.Prepare;

Query_Dia_Hora.Open;

Query_Dia_Hora.Last;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que sua query teria que ficar assim:

SELECT al_data_freq, al_nome_freq_list, hora_entrada FROM ac_al_freq_list WHERE (al_data_freq_List = :PData AND (hora_entrada BETWEEN :PInicial AND :PFInal))

 

Não testei a query acima, pode estar errada, por favor, teste e diga o resultado

Compartilhar este post


Link para o post
Compartilhar em outros sites

[RESOLVIDO] Criei um parametro a mais para a data e pronto...

 

VAR

INICIO: STRING;

FINAL: STRING;

DATA1: string;

begin

 

Inicio := TimeToStr(PesqData1_Hora_Inicio.Time);

Final := TimeToStr(PesqData1_Hora_Final.Time);

Data1 := DateToStr(pesqData1.Date);

 

Query_Dia_Hora.Close;

Query_Dia_Hora.SQL.Clear;

Query_Dia_Hora.SQL.Text:='SELECT AL_COD_FREQ_IMPORT_LIST,AL_DATA_FREQ_LIST,AL_NOME_FREQ_LIST,HORA_ENTRADA FROM AC_AL_FREQ_LIST WHERE AL_DATA_FREQ_LIST =:DATA1 AND HORA_ENTRADA >=:pInicial and HORA_ENTRADA <=:pFinal ORDER BY AL_NOME_FREQ_LIST';

Query_Dia_Hora.ParamByName('DATA1').AsDate:=StrToDate(Data1);

Query_Dia_Hora.ParamByName('pInicial').AsTime := StrToTime(Inicio);

Query_Dia_Hora.ParamByName('pFinal').AsTime := StrToTime(Final);

Query_Dia_Hora.Prepare;

Query_Dia_Hora.Open;

Query_Dia_Hora.Last;

 

É isso aí!

[RESOLVIDO]

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.