Seja Bem Vindo(a)




|
Exemplo de relatorio Rave

Bom galera, de vez en qnd nos deparamos com situações extremamente complicados em se tratando de relatorios e nem sempre a solução vem de forma rápida ... logo abaixo coloquei um exemplo simples de relatorio, pode ser observado que muitos elementos se repetem e não serão comentados 2 vezes ... espero que esse pequeno exemplo ajude a todos. qualquer sujestão para melhoria do codigo será muito bem vinda. meu icq:158519666
Esse codigo vai no botão que será usado para chamar a impressão
procedure TfrmRelGeral.BitBtn2Click(Sender: TObject); begin
RvSystem7.SystemPreview.FormState:=wsmaximized; //Inicia de forma maximinizada rvsystem7.DefaultDest:=rdpreview; //Mostra como o relatorio será impresso // pode ser tbm rdfile -> cria diretamente um arquivo com o relatorio //pode ser tbm rdprint -> que irá imprimir direto rvsystem7.SystemPrinter.Units:=uncm;// defini a unidade de medida rvsystem7.SystemPrinter.Orientation:=poLandScape; // define ser será retrato ou paisagem o default é retrato no caso seria so retirar essa linha rvsystem7.SystemPreview.RulerType:=rtbothcm;// defini se irá mostrar as reguas ou não rvsystem7.SystemPreview.PagesHigh:=50; // altura da pagina rvsystem7.Execute;
end;
esse codigo vai no evento onprint do rvsystem
procedure TDM.RvSystem7Print(Sender: TObject); var dif,compa1,compa2,progresso,iii:integer; data:tdatetime; texto:string; x,y : real;
begin dm.RvProject7.Execute; // se vc criou o plano de fundo no rave report5.0 e já carregou no RvProject aqui vc deve aciona-lo
DM.tbCompra.Filtered :=false; DM.tbVindobra.Filtered :=false; DM.tbReforma1.Filtered :=false; dm.Qhistorico.Filtered:=false;
x:=1; y:=6; iii:=0;
dm.RvSystem7.BaseReport.FontName:='Times New Roman'; //define o tipo de fonte dm.rvsystem7.BaseReport.fontsize:=7; //defini o tamanho da fonte dm.rvsystem7.BaseReport.GotoXY(14.5,24.5); // defini a posição dele na tela --> muito interessante vai ver que logo abaixo estaremos usando variaveis pra controlar a impressão na tela dm.rvsystem7.BaseReport.print('Relatório emitido dia '+datetostr(date)+ ' as ' +timetostr(time) ); // texto que será impresso
dm.rvsystem7.BaseReport.fontsize:=12; dm.rvsystem7.BaseReport.GotoXY(2.9,2.7); dm.rvsystem7.BaseReport.print('Pneus reformados ');
DM.Qhistorico.Filter := 'Reforma1 = '+QuotedStr('True'); dm.Qhistorico.Filtered:=true;
form1.ProgressBar1.Max:=dm.qHistorico.RecordCount; dm.rvsystem7.BaseReport.fontsize:=13; dm.rvsystem7.BaseReport.GotoXY(9,4.15); dm.rvsystem7.BaseReport.print('Números de fogo reforma');
while not(dm.qHistorico.Eof) do begin
if (dm.QhistoricoReforma1.Value <> false) and ((dm.QhistoricoBaixa.Value <> true) or (dm.QhistoricoBaixa.AsString ='')) then begin DM.tbCompra.Filter := 'Marcafogo = '+QuotedStr(dm.tbHistoricoMarcafogo.AsString); DM.tbVindobra.Filter := 'Marcafogo = '+QuotedStr(dm.tbHistoricoMarcafogo.AsString); DM.tbReforma1.Filter := 'Marcafogo = '+QuotedStr(dm.qHistoricoMarcafogo.AsString); DM.tbPneus.Filter := 'Marcafogo = '+QuotedStr(dm.qHistoricoMarcafogo.AsString); DM.tbCompra.Filtered :=true; DM.tbVindobra.Filtered :=true;
DM.tbReforma1.Filtered :=true; DM.tbPneus.Filtered:=true;
dm.rvsystem7.BaseReport.fontsize:=11; dm.rvsystem7.BaseReport.GotoXY(x,y); dm.rvsystem7.BaseReport.print( 'Nº de fogo '+dm.qHistoricoMarcafogo.AsString+ ' Serie '+dm.tbPneusSeriePneu.AsString+ ' Tamanho '+dm.tbPneusTamanho.AsString+ ' Marca '+dm.tbPneusMarcapneus.AsString+ ' Modelo ' +dm.tbPneusModelo.AsString+ ' Pneu Novo'+ dm.tbVindobraAutorizo.AsString + ' no dia '+dm.tbVindobraData.AsString 'comprado no dia '+dm.tbCompraData.AsString+ ' no fornecedor - CNPJ:'+DM.tbCompraRazao.AsString ); ' reformado dia '+dm.tbReforma1Data.AsString + ' no fornecedor '+dm.tbReforma1Razao.AsString); y:=y+0.5; iii:=iii+1;
dm.qHistorico.Next; form1.ProgressBar1.Position:=form1.ProgressBar1.Position + 1; if iii>36 then begin dm.rvsystem7.BaseReport.NewPage; // Muda a página dm.RvProject7.Execute;// carrega novamente o fundo {OBs na hora de mudar de pagina lembre-se de voltar as variaveis de controle de impressão para valores de corresponde ao inicio da pagina}
x:=3; y:=6; iii:=0; end;
end; end; form1.ProgressBar1.Position:=0; end;
end.
Bem esse exemplo mostra que vale mais a criatividae pq o numero de comandos do proprio rave são poucos vc vai precisar mais de definir onde irão aparecer os valores na tela e como será sua organização.
Bom esse foi a primeira vez que escrevo algo deste nivel, espero que vc´s me ajudem enviando sugestões e no que posso melhorar muito obrigado Detalhe sou o SNorte fico direto no canal #delphix no mirc rede Brasnet :)
|
Autor: Rodrigo Paulo Quirino
|
|