Type Mismatch

Delphi

25/04/2008

Alguém poderia me ajudar?
Estou tentando filtrar meu relátório em Rave com Query.
Estou passando parâmetros com o seguinte código:

Query1.PArambyname(´Dataini´).Asdate := DataInicial.Date;
Query1.PArambyname(´Datafim´).Asdate := Datafinal.Date;
Query1.Active:= true;
Query1.Open;

No query os parâmetros estão como ftDate e o código está:

SELECT COUNT(DISTINCT (data_chamado))
FROM chamados
WHERE data_chamado Like :Dataini and data_chamado Like :Datafim

Só que quando executo aparece a mensagem Type Mismatch. Alguém sabe como resolver isto?


Lambretaveia

Lambretaveia

Curtidas 0

Respostas

Paulo

Paulo

25/04/2008

Voce deve estar passando um tipo por variável ou parâmetro. diferente daquele suportado pelo DataType do banco. É muito comum eu passar um date e o banco só aceita datetime, por exemplo. Dê uma olhada no tipo aceito pelo banco ou que está vindo da aplicação para ele.


GOSTEI 0
Lambretaveia

Lambretaveia

25/04/2008

Ok Obrigado pela ajuda.

Eu mudei o formato do banco de data para string e funcionou.

Só que não está filtrando ainda, o relatorio sai todos os registros impressos porque será?


GOSTEI 0
Joaoshi

Joaoshi

25/04/2008

Colega, tente assim:

SELECT COUNT(DISTINCT (data_chamado))
FROM chamados
WHERE data_chamado [b:27a61d3cdc]Between[/b:27a61d3cdc] :Dataini and :Datafim

Espero ter ajudado.


GOSTEI 0
Lambretaveia

Lambretaveia

25/04/2008

Obrigado,

Tentei dessa forma executou normalmente sem erros mas ainda não filtra
Está imprimindo tudo.
Estou usando o RvQueryConnection conectado ao query será que não estou fazendo a conexão correta?


GOSTEI 0
Lambretaveia

Lambretaveia

25/04/2008

Ah... esqueci, meu código do botão imprimir está assim:

query1.close;
Query1.Active:= true;
Query1.PArambyname(´Dataini´).Asstring := datetostr(DataInicial.Date);
Query1.PArambyname(´Datafim´).Asstring := datetostr(Datafinal.Date);
Query1.Open;
RvQueryConnection1.Query.Active := true;
Form1.RvProject1.close;
Form1.RvProject1.ExecuteReport(´Report1´);
Form1.RvProject1.Open;
Query1.Active:= false;
RvQueryConnection1.Query.Active := false;
FrmDataChamados.Close;
tabelas.tb_chamados.close;


GOSTEI 0
Paulo

Paulo

25/04/2008

Posso estar erado, mas se seu campo é uma string, não poderá filtrar uma data. Acho que vc deve usar o padrão do banco para datas e não tirar o tipo data e colocar string. Use o DateTime, a maioria dos bancos aceita esse DataType e passe pelo seu parametro um DateTime ao invés de um Date.


GOSTEI 0
Lambretaveia

Lambretaveia

25/04/2008

Ok Paulo Obrigado novamente, fiz da forma como falou. Coloquei o banco como data e passei os parâmetros como datetime. Nenhum erro, aceitou tranquilamente. Só que os filtros não funcionam, ainda está imprimindo tudo no Rave.
Instalei a versão 5.1 demo do Rave para descartar a possibilidade de algum Bug do Rave, mas não adiantou. Não tenho mais idéia do que possa estar ocorrendo...


GOSTEI 0
Paulo

Paulo

25/04/2008

Poste a query toda aí para te ajudarmos, não o botão, mas a query.


GOSTEI 0
Lambretaveia

Lambretaveia

25/04/2008

Ok, A query está assim:

SELECT COUNT(DISTINCT (data_chamado))
FROM chamados
WHERE data_chamado Between :Dataini and :Datafim

Onde dataini e datafim são dois parâmetros tipo datetime Data_chamado é o campo da tabela Chamados
Databasename do query está conectado ao BDE e o Datasource está conectado ao Ds_chamados. Parece que as conexões estão todas ok. Ah tenho tambem um RvQueryconection conectado ao Query...


GOSTEI 0
Paulo

Paulo

25/04/2008

Fiz aqui comigo exatamente como está sua query e funcionou, passando para o datatype data_chamado um Date e nos parâmetros também um Date. Não achei nenhum problema. Usei o banco Firebird.


GOSTEI 0
Lambretaveia

Lambretaveia

25/04/2008

Que estranho, no meu não funciona, eu estou usando paradox.
Talvez o problema esteja no Rave, eu estou usando um datacycle para gerar os relatórios...


GOSTEI 0
Lambretaveia

Lambretaveia

25/04/2008

Pessoal ainda não consegui resolver o problema dos filtros, se alguem tiver mais alguma sugestão eu agradeço...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

25/04/2008

query1.close; --> fecha a query Query1.Active:= true; --> ABRE a query Query1.PArambyname(´Dataini´).Asstring := datetostr(DataInicial.Date); Query1.PArambyname(´Datafim´).Asstring := datetostr(Datafinal.Date); Query1.Open; --> ABRE a query (já estava aberta!!!) RvQueryConnection1.Query.Active := true; --> é a mesma query?!?!?! Form1.RvProject1.close; Form1.RvProject1.ExecuteReport(´Report1´); Form1.RvProject1.Open; Query1.Active:= false; RvQueryConnection1.Query.Active := false; FrmDataChamados.Close; tabelas.tb_chamados.close;


deveria ser:

Query1.Close;
Query1.Parambyname(´Dataini´).AsDate := DataInicial.Date;
Query1.Parambyname(´Datafim´).AsDate := Datafinal.Date;
Query1.Open;

como não conheço impressão em RAVE, não sei o que significa essa linha:
RvQueryConnection1.Query.Active := true;


GOSTEI 0
Lambretaveia

Lambretaveia

25/04/2008

Obrigado,
Tentei fazer da forma como colocou mas não funcionou ainda

a linha RvQueryConnection1.Query.Active := true; estou tentando fazer a conexão do componente do Rave que está conectado ao query, mas nem assim funciona.

Estou usando Delphi 7.0 Com Rave 5.0 BD Paradox 7


GOSTEI 0
POSTAR