報表設計
# Smart之報表設計
# 1. 說明
範例使用Smart智慧控制平臺,用於設計報表的列印格式並使用數據進行報表的列印。
在使用該範例前,請先檢查配套使用的資料庫Smart是否存在,需要使用到的示例的數據SQL命令如下。
--Table_Test數據表,存放列印用的數據。
CREATE TABLE [dbo].[Table_Test](
[FCode] [nvarchar](50) NOT NULL,
[FName] [nvarchar](50) NOT NULL
) ON [PRIMARY]
--Dict_Report數據表,存放報表的列印格式內容
CREATE TABLE [dbo].[Dict_Report](
[FReportID] [nvarchar](36) NOT NULL,
[FModuleID] [nvarchar](36) NULL,
[FOrderByNo] [int] NULL,
[FReportName] [nvarchar](100) NULL,
[FReportImg] [image] NULL,
[FRightID] [nvarchar](36) NULL,
[FRightCode] [nvarchar](50) NULL,
[FRemark] [nvarchar](100) NULL,
[FPrintNum] [int] NULL,
[FRoleName] [nvarchar](50) NULL,
CONSTRAINT [PK__Dict_Rep__23B5CEDA46E78A0C] PRIMARY KEY CLUSTERED
(
[FReportID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
--Dict_ReportSQL數據表,存放報表所使用的列印SQL內容
CREATE TABLE [dbo].[Dict_ReportSQL](
[FMXID] [nvarchar](36) NOT NULL,
[FReportID] [nvarchar](36) NULL,
[FModuleID] [nvarchar](36) NULL,
[FOrderNo] [int] NULL,
[FSQLType] [nvarchar](20) NULL,
[FSQL] [nvarchar](4000) NULL,
[FMXRemark] [nvarchar](100) NULL,
CONSTRAINT [PK__Dict_Rep__89939BF14316F928] PRIMARY KEY CLUSTERED
(
[FMXID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
--插入測試用的數據
INSERT INTO Table_Test(FCode,FName)
VALUES('0101','小明')
INSERT INTO Table_Test(FCode,FName)
VALUES('0102','小王')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
運行TARS,將該資料庫配置為連線設定test,使Smart能夠訪問該資料庫。同時在Smart中根據TARS連線設定的內容配置Smart帳套設定。
# 2. 設計明細
開啟Smart智慧控制平臺,分別加入下插圖之控制元件。或者通過點選功能表欄[檔案]-[打開專案]選擇範例專案檔案來打開該範例。

①:TImage元件,控制元件名稱為Image1。
②:TRFDataSet元件,控制元件名稱為RFDataSet1。
③:TLabel元件,控制元件名稱為Label1。
④:TBitBtn元件,控制元件名稱為BitBtnLoad。
⑤:TBitBtn元件,控制元件名稱為BitBtnDesign。
Main窗體屬性設定
Caption:設定窗體標題=報表設計。ClientHeight:設定窗體客戶區高度=438。ClientWidth:設定窗體客戶區寬度=465。BorderStyle:設定窗體型別=bsDialog。
①Image1屬性設定
Align:設定對齊方式為alClient。Stretch:設定圖片拉伸=True。Picture:設定圖片。 點選Picture屬性右側的[...]按鈕,打開檔案上傳界面,點選[Load...]從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]載入圖片。

③Label1屬性設定
Caption:設定文字內容為報表設計。Font:設定字型。雙擊該屬性或者點選右側的[...]打開字型設定界面,設定內容如下:

④BitBtnLoad屬性設定
Height:設定控制元件高度=190。Width:設定控制元件寬度=150。Caption:設定按鈕顯示的字幕=載入數據集。Layout:設定佈局內容=blGlyphTop(影象位於頂部)。Glyph:設定顯示的影象。 點選Picture屬性右側的[...]按鈕,打開檔案上傳界面,點選[Load...]從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]載入圖片。
⑤BitBtnDesign屬性設定
Height:設定控制元件高度=190。Width:設定控制元件寬度=150。Caption:設定按鈕顯示的字幕=報表設計。Layout:設定佈局內容=blGlyphTop(影象位於頂部)。Glyph:設定顯示的影象。 點選Picture屬性右側的[...]按鈕,打開檔案上傳界面,點選[Load...]從檔案瀏覽器中選擇對應的圖片檔案上傳,返回該界面下,待顯示出圖片後點擊[OK]載入圖片。
# 3. 程式設計
# 3.1. 程式初始設定
該程式無初始設定。
# 3.2. 事件設定
- ④BitBtnLoad-OnClick事件
點選[載入數據集按鈕],將數據載入至數據集中。
procedure TMyHandler.BitBtnLoadClick;
//載入數據集
begin
FThis.RFDataSet1.Connection := dm.DBConnection;
FThis.RFDataSet1.SQL.Text := 'SELECT FCode,FName FROM Table_Test';
FThis.RFDataSet1.Open;
end;
1
2
3
4
5
6
7
2
3
4
5
6
7
- ⑤BitBtnDesign-OnClick事件
點選[報表設計],將數據載入至報表中。
procedure TMyHandler.BitBtnDesignClick;
//報表設計界面
{
//打開報表配置
PaxFunc.ShowReport('ReportPrint',FThis,'','',false,false);
//預覽報表,id為報表模板檔案的id,對應為數據表中Dict_Report中的FReportID。
PaxFunc.ShowReport('ReportPrint',FThis,'','EB8BA008-4730-4BAC-AD5F-2D469C2FB732',false,True);
//列印報表
PaxFunc.ShowReport('ReportPrint',FThis,'','EB8BA008-4730-4BAC-AD5F-2D469C2FB732',false,false);
}
begin
if FThis.RFDataSet1.IsEmpty then
begin
ShowMessage('數據集未載入或為空,請先新增數據后再點選該按鈕。');
Exit;
end;
paxfunc.ShowReport('Smart',FThis,'','',false,false);
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 4. 運行模板
通過工具欄儲存,將程式儲存為 sdb 專案檔案。
使用滑鼠點選工具欄運行(Run),測試運行結果。

點選可進入到報表設計的界面,具體的設計方法可檢視報表設計工具使用。