Ir para conteúdo

POWERED BY:

Arquivado

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

Marcos Barbosa

[Resolvido] Consulta - Período de datas com DateTimerPicker

Recommended Posts

Pessoal, tenho na minha tabela o campo data tipo Data/Hora (ACCESS), estou querendo fazer um filtro por cliente e período de datas, uso o componente DateTimerPicker e estou fazendo minha rotina assim:

   dm.QRY_relatorio.Close;
   dm.QRY_relatorio.SQL.Clear;
   dm.QRY_relatorio.SQL.Add('SELECT * FROM telemedicina WHERE para = '+QuotedStr(Email)+
   ('data Between: DTP_data1 and: DTP_data2')+ 'ORDER BY assunto');

   dm.QRY_relatorio.Parambyname('DTP_data1').AsDateTime:=DTP_data1.Date;
   dm.QRY_relatorio.Parambyname('DTP_data2').AsDateTime:=DTP_data2.Date;
   dm.QRY_relatorio.Open;

Dessa forma quando compilo dá erro no ParamByName - [Error] U_EscolhaUnidade.pas(88): Undeclared identifier: 'Parambyname'

Se retiro o ParamByName dá erro quando executo o programa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

 

dm.QRY_relatorio.Parameters.ParamByName('DTP_data1').Value := FormatDateTime('dd/mm/yyyy', DTP_data1.Date);

dm.QRY_relatorio.Parameters.ParamByName('DTP_data2').Value := FormatDateTime('dd/mm/yyyy', DTP_data2.Date);

 

PS.: Levando em consideração q o seu campo data seja do tipo Date ..

 

Esqueci um detalhe, isso tudo se você já tenha configurado devidamente seus parâmetos no Object Inspetor, propriedade Parameters(DataType e Type).

Compartilhar este post


Link para o post
Compartilhar em outros sites

É eu não configurei esses parametros. Como devo proceder para fazer a configuração correta ?

 

 

Tente assim:

 

dm.QRY_relatorio.Parameters.ParamByName('DTP_data1').Value := FormatDateTime('dd/mm/yyyy', DTP_data1.Date);

dm.QRY_relatorio.Parameters.ParamByName('DTP_data2').Value := FormatDateTime('dd/mm/yyyy', DTP_data2.Date);

 

PS.: Levando em consideração q o seu campo data seja do tipo Date ..

 

Esqueci um detalhe, isso tudo se você já tenha configurado devidamente seus parâmetos no Object Inspetor, propriedade Parameters(DataType e Type).

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

colega na própria resposta eu já mostrei o caminho, no componente Query existe uma propriedade no Object Inspector, Parameters, clicando sobre ela abre outra janela com seus parâmetros previamente definidos na instrução 'SELECT', configure essas propriedades(DataType e Type), selecione as opção acho que é Date, ou coisa assim não me lembro bem, nas duas propriedades(DataType e Type) e pronto.

 

Acho que é isso, qualquer dúvida posta aí ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apesar de tentar fazer o q você indicou, não consegui, até mesmo por falta de conhecimento, ainda ñ sei fazer condições passando paramentros pelo SQL do object inspector. Tava dando vários erros, então tentei fazer diferente, mas mesmo assim fica dando um erro "Tipo de dados imcompativel na expressão de critério".

 

Coloquei a rotina assim:

 dm.QRY_relatorio.Close;
   dm.QRY_relatorio.SQL.Clear;

   var_sql := 'SELECT * FROM telemedicina WHERE dta_recebimento = '+QuotedStr( FormatDateTime( 'dd/MM/yyyy', dta_ini.Date ) );

   ShowMessage(var_sql);

   dm.QRY_relatorio.SQL.Add(var_sql);
   dm.QRY_relatorio.Open;
No banco o campo dta_recebimento é do tipo data/hora e os dados já são gravados assim: 17/11/2010 ou 7/1/2010.

Mas sempre dá esse erro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, muito obrigado pela paciência de todos vocês, vocês tiveram muita paciência e tentaram sempre me mostrar o caminho certo para resolver o problema, em nenhum momento foram ostis comigo, mesmo que comendo mosca o tempo todo.

Muito obrigado mesmo.

Com a ajuda de vocês consegui resolver o problema, fiz assim:

no data1: Em time do Object Inspector eu coloquei 00:00:00

no data2: Em time do Object Inspector eu coloquei 23:59:59

Nas condições:


dm.QRY_relatorio.Close;

   dm.QRY_relatorio.SQL.Clear;
   dm.QRY_relatorio.SQL.Add('SELECT * FROM telemedicina WHERE para = :email' );
   dm.QRY_relatorio.SQL.Add(' and data BETWEEN :_dataini and :_datafim');

   dm.QRY_relatorio.Parameters.ParamByName('email').Value := Email;
   dm.QRY_relatorio.Parameters.ParamByName('_dataini').Value := DTP_data1.DateTime;
   dm.QRY_relatorio.Parameters.ParamByName('_datafim').Value := DTP_data2.DateTime;

   dm.QRY_relatorio.Open; 

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.