DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 31/8/2010 9:44:22 AM

  Bom dia a todos, gostaria de saber como faço para trabalhar com parametros no quickreport?
 
  Att,
  Cleverson Melo.
LEONARDO XAVIER
 
 


País: Brasil
Estado: SC
Cidade: Jaguaruna
Mensagens: 680
 Postado em: 31/8/2010 10:55:04 AM
Que tipo de parâmetros você esta se referindo?

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 31/8/2010 11:22:00 AM
  Assim, de acordo com um parametro que eu passar o relatório é mostrado .

 
WILTON SéRGIO BACALá JúNIOR
 

País: Brasil
Estado: SP
Cidade: São José do Rio Preto
Mensagens: 69
 Postado em: 31/8/2010 11:30:25 AM
Explica melhor como é essa ideia de passagem de parametros que vc deseja fazer?

bacalajr

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 31/8/2010 11:40:05 AM
  Queria gerar um relatório de acordo com a data que eu passar como parametro.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 31/8/2010 2:11:32 PM
Parametro é na query, não tem nada a ver com o relatório.
Monte o seu relatório normalmente e antes de chama-lo passe os parametros para query e abra-a.

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 31/8/2010 3:58:23 PM
  Eu fiz na Query mesmo, mas quando vou abrir o relatório, ele abre vazio.
 
  Está dessa forma:
 
  Na Query =
 
  select * from veiculacao
  where DATAFIM BETWEEN :DATAINI AND :DATAFIM
 
 
  No botão onde chama o formulário
 
  CLIENTDATASET.FETCHPARAMS;
  CLIENTDATASET.PARAMS.PARAMBYNAME('DATAINI').VALUE:=EDIT1.TEXT;
  CLIENTDATASET.PARAMS.PARAMBYNAME('DATAFIM').VALUE:=EDIT2.TEXT;
  CLIENTDATASET.OPEN;
  FORM_RELATORIO.QUICKREP1.PREVIEW;
             

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 31/8/2010 7:25:42 PM
CLIENTDATASET.FETCHPARAMS;
CLIENTDATASET.PARAMS.PARAMBYNAME('DATAINI').AsDateTime:=StrToDate(EDIT1.TEXT);
CLIENTDATASET.PARAMS.PARAMBYNAME('DATAFIM').AsDateTime:=StrToDate(EDIT2.TEXT);
CLIENTDATASET.OPEN;
//Para ver se retornou registro
ShowMessage(IntToStr(ClientDataset.RecordCount));
FORM_RELATORIO.QUICKREP1.PREVIEW;

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 1/9/2010 10:58:55 AM
  Não deu certo, ele está retornando vazio, mas no banco ele retorna alguns registros. Isso tá muito estranho

 
jhow
 

País: Brasil
Estado: SP
Cidade: Paraguaçu Paulista
Mensagens: 33
 Postado em: 1/9/2010 11:06:23 AM
o DataSet do QRDBText está setado na query ou no clientdataset?
Verifica tbm se datafield está setado no campo certo da sua tabela.

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 1/9/2010 11:09:58 AM
  Ele está setado no ClientDataSet, Ele está funcionando, só não funciona quando coloco os parametros.

 
LEONARDO XAVIER
 
 


País: Brasil
Estado: SC
Cidade: Jaguaruna
Mensagens: 680
 Postado em: 1/9/2010 11:29:53 AM
Faz o seguinte, abra o seu quickreport e verifique se na aba de propriedades dele o campo dataset, esta setado no datasource do seu formulario do relatório. Se ele nao estiver aparecendo você ira abrir as Fields de sua Query e clicar em qualquer uma delas e arrastar o campo selecionado para dentro do seu quick report, irá aparcer uma mensagem clique em ok. Após ter feito isso veja se ao selecionar  o campo DataSet de seu quickreport isa aparecer a sua consulta. Qualquer coisa posta aqui.

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 1/9/2010 3:59:40 PM
  Eu fiz outros testes e ele não está aceitando nenhum parametro.

 
CARLOS EDUARDO DOMINGUES MAZZI
 
 


País: Brasil
Estado: SP
Cidade: LINS
Mensagens: 591
 Postado em: 1/9/2010 4:06:48 PM
na linha antes de passar os parametros insira...
 
clientDataset.prepare;
 
para que ele verifique antes, da passagem de parametros.
 
tente depois me avise.

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 1/9/2010 4:10:02 PM
  Ele não está reconhecendo esse comando (prepare).

 
jhow
 

País: Brasil
Estado: SP
Cidade: Paraguaçu Paulista
Mensagens: 33
 Postado em: 1/9/2010 4:13:12 PM
Tente assim
#Código
CLIENTDATASET.CLOSE;
CLIENTDATASET.FETCHPARAMS;
CLIENTDATASET.PARAMS.PARAMBYNAME('DATAINI').AsDateTime:=StrToDate(EDIT1.TEXT);
CLIENTDATASET.PARAMS.PARAMBYNAME('DATAFIM').AsDateTime:=StrToDate(EDIT2.TEXT);
CLIENTDATASET.OPEN;

 

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 1/9/2010 4:18:10 PM
Só melhorando um pouco o código:
#Código
With CLIENTDATASET do
begin
  CLOSE;
  FETCHPARAMS;
  PARAMS.PARAMBYNAME('DATAINI').AsDateTime:=StrToDate(EDIT1.TEXT);
  PARAMS.PARAMBYNAME('DATAFIM').AsDateTime:=StrToDate(EDIT2.TEXT);
  OPEN;
end;

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 1/9/2010 4:21:29 PM
  Lá na Query a propriedade Data Type está ftDate
  E value está vazio, é isso mesmo?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 1/9/2010 4:38:32 PM
sim é isso mesmo.

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 1/9/2010 4:42:14 PM
  Alguém pode me mostrar algum exemplo por favor?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 1/9/2010 4:45:53 PM
O paramType ta como Input?

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 1/9/2010 4:49:31 PM
Tem um artigo aqui no site ensinando a fazer pesquisas com data com clientDataset:
 
 

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 1/9/2010 4:57:45 PM
  Está sim

 
LEONARDO BERTOLINI
 

País: Brasil
Estado: MG
Cidade: Belo Horizonte
Mensagens: 47
 Postado em: 1/9/2010 6:11:53 PM
Cara,  ou sua query não está retornando nehum registro .....   ou a query não está vinculada ao componente de relatório..

flw

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 2/9/2010 8:21:55 AM
  Mas quando eu tiro os parametros ele mostra todos os registros.

 
LEONARDO BERTOLINI
 

País: Brasil
Estado: MG
Cidade: Belo Horizonte
Mensagens: 47
 Postado em: 2/9/2010 1:45:11 PM
Pois eh,..    pega a query com os parametros e roda na mão no BD...  e ve se retorna algum registro...

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 2/9/2010 2:10:13 PM
  Sim, ele retorna os registros.

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 2/9/2010 4:23:33 PM
  Eu coloquei assim agora e ele está mostrando a contagem dos registros, porém não está mostrando no relatório, ele está setando para a query certa, verifiquei.
 
 
 
  with DmRelatorio.CdsVeiculacao do
          begin
            close;
            FetchParams;
            Params.ParamByName('DATAINI').AsDate:=DataInicial.Date;
            Params.ParamByName('DATAFIM').AsDate:=DataFinal.Date;
            Open;
            ShowMessage(IntToStr(RecordCount));  //aqui ele está mostrando a contagem
          end;
          with FmRelatVeiculacao do
            begin
              QuickRep1.Preview;
              Release;
              FmRelatVeiculacao:=nil;
            end;
          FmRelatorioVeiculacao.Close;
      end; 

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 4:37:34 PM
Veja se a propriedade Dataset do relatório aponta para DmRelatorio.CdsVeiculacao.
Veja se você tem uma banda detail e dentro desta banda você deve colocar os qrdbText, com a propriedade Dataset apontando para DmRelatorio.CdsVeiculacao e Datafield apontando para seu respectivo campo.

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 2/9/2010 5:09:31 PM
  Já verifiquei, ele está apontando para seus respectivos campos.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 2/9/2010 7:01:59 PM
Cara isto é um mistério, mande para o meu email o seu projeto.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 3/9/2010 10:03:43 AM
Só consegui abrir o seu projeto, não consegui roda-lo pois minha versão do delphi e do firebird é inferior a sua, mas vamos a algumas modificações:
 
No FmRelatorioVeiculacao, tem uma unit desnecessaria, que não está sendo usada para nada.
 
uses UDmRelatorio, UnRelatorioVeiculacao, UFmRelatorioAgendamento;//Retire UFmRelatorioAgendamento
 
Deixe assim:
uses UDmRelatorio, UnRelatorioVeiculacao;
 
No trecho de código abaixo, pode simplificar:
with FmRelatVeiculacao do
            begin
              QuickRep1.Preview;
              Release;
              FmRelatVeiculacao:=nil;
            end;
          FmRelatorioVeiculacao.Close;
 
Substitua por apenas:
  FmRelatVeiculacao.QuickRep1.Preview;
 
Vamos ao relatório agora:
 
procedure TFmRelatVeiculacao.FormCreate(Sender: TObject);
begin
  inherited;
  DmRelatorio.CdsVeiculacao.Open;
end;
 
O evento acima, não deve existir de jeito nenhum e talvez seja isso que está fazendo seu relatório vir vazio, pois, no FmRelatorioVeiculacao, você já ta dando open no cdsVeiculacao, lembra?
 
with DmRelatorio.CdsVeiculacao do
          begin
            close;
            FetchParams;
            Params.ParamByName('DATAINI').AsDate:=DataInicial.Date;
            Params.ParamByName('DATAFIM').AsDate:=DataFinal.Date;
            Open;
            ShowMessage(IntToStr(RecordCount));
          end;
 
No evento abaixo:
procedure TFmRelatVeiculacao.FormDestroy(Sender: TObject);
begin
  inherited;
  DmRelatorio.CdsAgendamento.Close;
  DmRelatorio.Free;
  DmRelatorio:=nil;
end;
 
Retire a linha:
DmRelatorio.CdsAgendamento.Close;
Pois, você não ta usando CdsAgendamento para nada.
 
Faça as modificações e teste, para ver como irá funcionar.
 
Qualquer coisa, cole aqui o código fonte apenas destas duas units.
 
 

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 3/9/2010 10:28:37 AM
  Fiz as modificações, mas continua do mesmo jeito.
  Tá muito estranho, pois parece que está normal.

 
ERILEY VILAGRANDE BARBOSA
 
 


País: Brasil
Estado: RS
Cidade: Alegrete
Mensagens: 700
 Postado em: 3/9/2010 11:20:34 AM
Tente reconstruir o relatório, pois, se você utiliza os outros relatórios da mesma forma e da certo, o problema é com este relatório.

 
Cleverson
 

País: Brasil
Estado: BA
Cidade: Barreiras
Mensagens: 43
 Postado em: 4/9/2010 8:44:50 AM
  E aí galera deu certo rsrs
  Fiz a construção do relatório novamente.
  Muito estranho, mas o importamte é que deu certo agora.
 
  Obrigado a todos pelas ajudas.
 

 
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03