Você está pronto para o kylix?  
    Seja Bem Vindo(a)

 .NET
 ASP
 ASP.NET
 Assembly
 C
 C#
 CGI
 Clarion
 Clipper
 Cobol
 ColdFusion
 CSS
 Delphi
 DHTML
 HTML
 Java
 JavaScript
 Jscript
 JSP
 Kylix
 Lisp
 LUA
 MAX
 MSP
 Pascal
 Perl
 PHP
 Python
 Qbasic
 SQL
 VBScript
 Visual Basic
 Visual Fox Pro
 Water
 WML
 XML
 XP

 Access
 Oracle
 SQL Server

 Lógica
 Orientação a Objeto
 Programação de Jogos

 Sobre o site
 Publicidade
 Expediente
 Contato



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

 

Sobre:  Sobre o Site | Publicidade | Expediente | Contato