Vamos criar um relatório agrupando por data e no processo ver algumas dicas.
Em uma nova aplicação defina o Name do Form principal para
wMain e coloque um botão Name btnRelat. Salve o Form como uMain.pas.
Crie um novo Form com name wRelat, salve como uRelat.pas.
No Form wRelat coloque um componente TQuickRep e um TADOQuery.
Defina o name da Query para qryDados.
Faça conexão da Query com a ba
se que quiser e da forma que quiser, para esse exemplo basta saber que a tabela que usei tem 3 campos: Data(date), Nome(char), Valor(decimal).
Defina a SQL para "select ( year(data) * 100 ) + month(data) as anomes , * from dados order by data".
No QuickRep1 defina a DataSet para qryDados.
Atenção para o campo "anomes" que criamos no Select e no Order, isso é parte importante para o grupo do relatório funcionar.
No QuickRep1 coloque um TQRGroup e defina a Expression para "anomes".
No TQRGroup coloque 2 TQRLabel. Um TQRLabel defina Caption para "Ano / Mês:", o outro defina o Name para lblData.
Coloque no QuickRep1 um TQRBand com Name bandDetail e BandType rbDetail.
No bandDetail coloque:
TQRDBText DataSet qryDados e DataField Data.
TQRDBText DataSet qryDados e DataField Nome.
TQRDBText DataSet qryDados e DataField Valor.
Coloque outro TQRBand Name bandFooter e BandType rbGroupFooter.
No bandFooter coloque um TQRExpr e defina o a Expression para "sum(valor)" e ResetAfterPrint para True.
Esse será o totalizador de valor por grupo.
No TQRGroup defina a FooterBand para bandFooter e no evento BeforePrint:
begin
lblData.Caption:= FormatDateTime( 'yyyy/mm' , qryDados.FieldByName( 'data' ).AsDateTime );
end;
No Form wMain adicione na Uses uRelat e no evento Click do btnRelat:
begin
wRelat.qryDados.Open;
wRelat.QuickRep1.Preview;
end;
Execute e clique no botão para ver o resultado.