Fórum Type Mismatch #357609

25/04/2008

0

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

Responder

Posts

25/04/2008

Paulo

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.


Responder

Gostei + 0

25/04/2008

Lambretaveia

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á?


Responder

Gostei + 0

26/04/2008

Joaoshi

Colega, tente assim:

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

Espero ter ajudado.


Responder

Gostei + 0

28/04/2008

Lambretaveia

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?


Responder

Gostei + 0

28/04/2008

Lambretaveia

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;


Responder

Gostei + 0

28/04/2008

Paulo

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.


Responder

Gostei + 0

28/04/2008

Lambretaveia

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...


Responder

Gostei + 0

28/04/2008

Paulo

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


Responder

Gostei + 0

29/04/2008

Lambretaveia

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...


Responder

Gostei + 0

29/04/2008

Paulo

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.


Responder

Gostei + 0

30/04/2008

Lambretaveia

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...


Responder

Gostei + 0

16/05/2008

Lambretaveia

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


Responder

Gostei + 0

17/05/2008

Emerson Nascimento

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;


Responder

Gostei + 0

19/05/2008

Lambretaveia

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar