unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, Grids, DBGrids, QuickRpt, QRCtrls, ExtCtrls;
type
TForm1 = class(TForm)
ADODataSet1: TADODataSet;
Button1: TButton;
ADODataSet2: TADODataSet;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DataSource1: TDataSource;
DataSource2: TDataSource;
QuickRep1: TQuickRep;
DetailBand1: TQRBand;
QRSubDetail1: TQRSubDetail;
QRDBText1: TQRDBText;
QRDBText2: TQRDBText;
QRLabel1: TQRLabel;
QRDBText3: TQRDBText;
QRDBText4: TQRDBText;
QRDBText5: TQRDBText;
QRDBText6: TQRDBText;
procedure ADODataSet1AfterScroll(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure QRDBText1Print(sender: TObject;
var Value: string);
procedure QRLabel1Print(sender: TObject;
var Value: string);
procedure QRDBText3Print(sender: TObject;
var Value: string);
procedure QRDBText6Print(sender: TObject;
var Value: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ADODataSet1AfterScroll(DataSet: TDataSet);
begin
ADODataSet2.Filtered := false;
ADODataSet2.Filter := 'A=''' + DataSet.FieldByName('A').AsString + '''';
ADODataSet2.Filtered := true;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i, j, m: integer;
begin
ADODataSet2.AfterScroll := nil;
ADODataSet1.FieldDefs.Clear;
ADODataSet1.FieldDefs.Add('A', ftstring, 20, false);
ADODataSet1.CreateDataSet;
ADODataSet1.Open;
ADODataSet1.Append;
for i := 1 to 3do
begin
ADODataSet1.Append;
ADODataSet1.Fields[0].AsString := format('%d', );
end;
ADODataSet1.Post;
ADODataSet1.First;
ADODataSet2.FieldDefs.Clear;
ADODataSet2.FieldDefs.Add('A', ftstring, 20, false);
ADODataSet2.FieldDefs.Add('B', ftstring, 20, false);
ADODataSet2.CreateDataSet;
ADODataSet2.Open;
ADODataSet2.Append;
for m := 1 to 3do
for i := 1 to 3 * Mdo
begin
ADODataSet2.Append;
ADODataSet2.Fields[0].AsString := format('%d', [m]);
ADODataSet2.Fields[1].AsString := format('%d_%d', [m, i]);
end;
ADODataSet2.Post;
ADODataSet2.First;
ADODataSet1.AfterScroll := ADODataSet1AfterScroll;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
QuickRep1.Preview;
end;
procedure TForm1.QRDBText1Print(sender: TObject;
var Value: string);
begin
QRLabel1.Caption := Value;
end;
procedure TForm1.QRLabel1Print(sender: TObject;
var Value: string);
begin
Value := QRLabel1.Caption;
if Value <> '' then
QRLabel1.Caption := '';
end;
procedure TForm1.QRDBText3Print(sender: TObject;
var Value: string);
begin
if QRDBText2.DataSet.Eof then
Value := ''
else
QRDBText2.DataSet.Next;
end;
procedure TForm1.QRDBText6Print(sender: TObject;
var Value: String);
begin
if QRDBText2.DataSet.Eof then
Value := ''
end;
end.
object Form1: TForm1
Left = 192
Top = 107
Width = 543
Height = 375
Caption = 'Form1'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Scaled = False
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 32
Top = 16
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object DBGrid1: TDBGrid
Left = 40
Top = 112
Width = 320
Height = 120
DataSource = DataSource1
TabOrder = 1
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
end
object DBGrid2: TDBGrid
Left = 40
Top = 240
Width = 320
Height = 120
DataSource = DataSource2
TabOrder = 2
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
end
object QuickRep1: TQuickRep
Left = 136
Top = 112
Width = 794
Height = 1123
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
DataSet = ADODataSet1
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Arial'
Font.Style = []
Functions.Strings = (
'PAGENUMBER'
'COLUMNNUMBER'
'REPORTTITLE')
Functions.DATA = (
'0'
'0'
'''''')
Options = [FirstPageHeader, LastPageFooter]
Page.Columns = 1
Page.Orientation = poPortrait
Page.PaperSize = A4
Page.Values = (
100
2970
100
2100
100
100
0)
PrinterSettings.Copies = 1
PrinterSettings.Duplex = False
PrinterSettings.FirstPage = 0
PrinterSettings.LastPage = 0
PrinterSettings.OutputBin = Auto
PrintIfEmpty = True
SnapToGrid = True
Units = MM
Zoom = 100
object DetailBand1: TQRBand
Left = 38
Top = 38
Width = 718
Height = 3
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
AlignToBottom = False
Color = clWhite
ForceNewColumn = False
ForceNewPage = False
Size.Values = (
7.9375
1899.70833333333)
BandType = rbDetail
object QRDBText1: TQRDBText
Left = 8
Top = 0
Width = 8
Height = 17
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
Size.Values = (
44.9791666666667
21.1666666666667
0
21.1666666666667)
Alignment = taLeftJustify
AlignToBand = False
AutoSize = True
AutoStretch = False
Color = clWhite
DataSet = ADODataSet1
DataField = 'a'
OnPrint = QRDBText1Print
Transparent = False
WordWrap = True
FontSize = 10
end
end
object QRSubDetail1: TQRSubDetail
Left = 38
Top = 41
Width = 718
Height = 23
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
AlignToBottom = False
Color = clWhite
ForceNewColumn = False
ForceNewPage = False
Size.Values = (
60.8541666666667
1899.70833333333)
Master = QuickRep1
DataSet = ADODataSet2
PrintBefore = False
PrintIfEmpty = True
object QRDBText2: TQRDBText
Left = 128
Top = 3
Width = 8
Height = 17
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
Size.Values = (
44.9791666666667
338.666666666667
7.9375
21.1666666666667)
Alignment = taLeftJustify
AlignToBand = False
AutoSize = True
AutoStretch = False
Color = clWhite
DataSet = ADODataSet2
DataField = 'b'
OnPrint = QRDBText3Print
Transparent = False
WordWrap = True
FontSize = 10
end
object QRLabel1: TQRLabel
Left = 24
Top = 3
Width = 58
Height = 17
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
Size.Values = (
44.9791666666667
63.5
7.9375
153.458333333333)
Alignment = taLeftJustify
AlignToBand = False
AutoSize = True
AutoStretch = False
Caption = 'QRLabel1'
Color = clWhite
OnPrint = QRLabel1Print
Transparent = False
WordWrap = True
FontSize = 10
end
object QRDBText3: TQRDBText
Left = 200
Top = 3
Width = 8
Height = 17
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
Size.Values = (
44.9791666666667
529.166666666667
7.9375
21.1666666666667)
Alignment = taLeftJustify
AlignToBand = False
AutoSize = True
AutoStretch = False
Color = clWhite
DataSet = ADODataSet2
DataField = 'b'
OnPrint = QRDBText3Print
Transparent = False
WordWrap = True
FontSize = 10
end
object QRDBText4: TQRDBText
Left = 264
Top = 3
Width = 8
Height = 17
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
Size.Values = (
44.9791666666667
698.5
7.9375
21.1666666666667)
Alignment = taLeftJustify
AlignToBand = False
AutoSize = True
AutoStretch = False
Color = clWhite
DataSet = ADODataSet2
DataField = 'b'
OnPrint = QRDBText3Print
Transparent = False
WordWrap = True
FontSize = 10
end
object QRDBText5: TQRDBText
Left = 336
Top = 3
Width = 8
Height = 17
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
Size.Values = (
44.9791666666667
889
7.9375
21.1666666666667)
Alignment = taLeftJustify
AlignToBand = False
AutoSize = True
AutoStretch = False
Color = clWhite
DataSet = ADODataSet2
DataField = 'b'
OnPrint = QRDBText3Print
Transparent = False
WordWrap = True
FontSize = 10
end
object QRDBText6: TQRDBText
Left = 416
Top = 3
Width = 8
Height = 17
Frame.Color = clBlack
Frame.DrawTop = False
Frame.DrawBottom = False
Frame.DrawLeft = False
Frame.DrawRight = False
Size.Values = (
44.9791666666667
1100.66666666667
7.9375
21.1666666666667)
Alignment = taLeftJustify
AlignToBand = False
AutoSize = True
AutoStretch = False
Color = clWhite
DataSet = ADODataSet2
DataField = 'b'
OnPrint = QRDBText6Print
Transparent = False
WordWrap = True
FontSize = 10
end
end
end
object ADODataSet1: TADODataSet
AfterScroll = ADODataSet1AfterScroll
Parameters = <>
Left = 144
Top = 16
end
object ADODataSet2: TADODataSet
Parameters = <>
Left = 144
Top = 56
end
object DataSource1: TDataSource
DataSet = ADODataSet1
Left = 200
Top = 16
end
object DataSource2: TDataSource
DataSet = ADODataSet2
Left = 200
Top = 56
end
end