Buscar

Relatórios rave

nome

Miguel Machado

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

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.

Publicidade

Vote no artigo




Quantidade de votos: 1 voto
Aceitação: 0%


Detalhes do artigo

Categoria: Object pascal
Adicionado dia: 19/04/05
Por: Miguel Machado
Visualizado: 21950 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009