報表的編輯
# 報表的編輯
已建立好的報表也可以進行編輯操作,我們把報表編輯頁面按功能的不同分為四大區域,從上至下依次為主功能表功能區;報表主欄位編輯按鈕及文字編輯按鈕功能區;報表明細功能區;主報表與子報表切換區。各部份功能如下:

# 1. 主功能表功能區
主功能表功能區上方有文件、編輯、檢視、報表這四個下拉選單。
File(文件): 點選[File(文件)]
,彈出的下拉選單中如下功能:新建一張報表,打開舊的報表,關閉目前報表;儲存報表以及頁面設定和列印功能;
Edit(編輯): [Edit(編輯)]
下拉選單中有剪下,複製,刪除等功能;
View(檢視): [View(檢視)]
下拉選單中有工具欄、尺規、格子選項、顯示數據等功能,在報表編輯頁面中,有很多編輯按鈕功能並沒有以系統預設方式顯示出來,這就需要我們手動開啟,例如在報表中有些欄位爲了美觀要讓它全部靠左對齊,或者居中對齊,這就要用到靠向或間距工具,我們點選View
-Toolbars
-Align or Space
,靠向或間距欄位前就被勾選,此時這些工具就會在報表主欄位編輯按鈕及文字編輯按鈕功能區中顯示出來。


Report(報表): [Report(報表)]
下拉選單中常用到的功能有標題,總結,頁首,頁尾。標題就是報表的抬頭區域,通常將公司名稱,聯繫方式,地址,報表名稱等數據建立於此區域中;使用者可以在頁首、組首、細節、組尾、頁尾部份建立單據的產品明細數據,每張單據中只能有一個頁首,頁尾,頁首與頁尾中又可以新建多個組,每個組又分為組首、細節、組尾,我們在組首及細節部份建立單據的產品明細數據,在組尾部分建立客戶基本數據及小計項,注意小計項只能放在組尾,小計項的數值帶出欄位要點選[計算欄位]按鈕,它會顯示該筆單據中的所有交易金額之和。通常情況下不用組也可以完成一張報表,但是如果要製作一些稍複雜的報表,如按照所需類別進行彙總的一些報表就需要使用到組,組的好處是可以更加精細地按照條件進行索引彙總,新建組時點選[Report(報表)]
-[Groups(組)]
,螢幕彈出新建組的視窗,在組旁的下拉選單中選擇索引欄位,即該組是以哪個欄位來排序,各欄位對應的名稱請參照欄位對照手冊。


Data(數據): 點選[Data(數據)]
按鈕可以用SQL語言新建查詢語句,依據使用者所需制定報表;
Calc: 點選[Calc]
按鈕可以用Pascal語言自己編寫程式,進行數值計算;
Design(設計): 進入編輯頁面的預設選項就是設計頁面,報表主體欄位的新增,設計以及編輯都在該頁面內實現;
Preview(預覽): 點選[Preview(預覽)]
按鈕可以預覽報表新增或編輯的效果。
# 2. 報表主欄位編輯按鈕及文字編輯按鈕功能區
如上圖為報表主欄位編輯按鈕及文字編輯按鈕功能區,上排從左至右依次為:
圖示 | 名稱 | 説明 |
---|---|---|
選擇物件按鈕 | 此欄位系統預設為按下狀態,對報表中的欄位框或文字框進行選擇時,需要將此按鈕按下才可以選取 | |
標籤按鈕 | 新增欄位名稱,如序號,產品名稱,產品編號等文字說明欄位時請按下此按鈕 | |
備註按鈕 | 備註按鈕用與新增備註文字,手工輸入 | |
Rict Text按鈕 | 與備註按鈕功能相同,用於新增備註說明文字,手工輸入 | |
系統變數按鈕 | 用於新增系統預設的系統變數,如時間,頁數等 | |
變數按鈕 | 用於手工新增序號,時間,頁數等變數 | |
圖案按鈕 | 用於新增圖案 | |
圖形按鈕 | 用於新增矩形,圓形,三角形等圖形 | |
線條按鈕 | 用於新增線條 | |
條碼按鈕 | 用於新增條碼 | |
二維碼按鈕 | 用於新增二維碼 | |
文字欄位按鈕 | 與標籤功能類似,只是欄位框中的內容來自資料庫,而非手工輸入 | |
備註欄位按鈕 | 與備註按鈕功能類似,只是欄位框中的內容來自資料庫,而非手工輸入 | |
DB Rict Text按鈕 | 與Rict Text功能類似,只是欄位框中的內容來自資料庫,而非手工輸入 | |
計算欄位按鈕 | 新增小計,合計項欄位時要點選此按鈕才可計算 | |
圖案欄位按鈕 | 新增圖案欄位,點此按鈕 | |
條碼欄位按鈕 | 新增條碼欄位,點此按鈕 | |
二維碼欄位按鈕 | 新增二維碼欄位,點此按鈕 | |
區域按鈕 | 新增區域欄位,點此按鈕 | |
子報表按鈕 | 建立子報表時,點此按鈕 | |
隔頁符號按鈕 | 使用此按鈕建立隔頁符號 | |
繪圖區域按鈕 | 使用此按鈕建立一個自定義的繪圖區域 | |
表格繪圖按鈕 | 使用此按鈕建立一個表格 | |
Google Map 按鈕 | 使用此按鈕建立一個 Google Map區域 | |
PDF顯示按鈕 | 使用此按鈕建立一個PDF顯示的區域 |
文字編輯按鈕與通常辦公軟體中的文字按鈕功能相同,如對文字進行加粗,加夏劃線,左右對齊,變換文字顏色等,在此就不贅述了。
在上文中我們開啟了靠向及間距工具,這裡面的工具在報表排版時會經常用到。

通常我們使用這些工具將報表中的欄位左右對齊或是上下對齊,例如要將一列上下沒有對齊的欄位靠左對齊就要先用滑鼠左鍵選中這些欄位 ,再點選靠左對齊的按鈕,這些欄位即以最左邊的欄位為準,全部向左對齊。

圖示 | 説明 |
---|---|
靠左排列 | |
垂直靠中排列 | |
靠右排列 | |
靠頂排列 | |
水準靠中排列 | |
靠底排列 | |
水準等距排列 | |
垂直等距排列 | |
靠到數據帶的中間(水準) | |
靠到數據帶的中間(垂直) |
# 2.1. 報表明細功能
我們在列印出來的報表中看到的所有可見部份都位於報表明細功能區內,報表明細功能區中又可以細分為標題,頁首,組首,細節,組尾,頁尾,總結等。
報表抬頭部份,如公司名稱,聯繫方式,聯繫人,報表名稱放置於標題區域內,報表明細數據,如出貨產品名稱,數量,單價,合計金額等都位可新建於頁首,頁尾,組首,細節,組尾等區域內;總結區域中通常放置表尾條文,簽名,備註文字或是圖檔,實際列印出來的報表中,它所處的位置在細節與頁尾區域之間。
# 2.2. 主報表與子報表切換區
以我們建立的這張銷售出貨單為例,報表明細主體部分可分位抬頭部門,出貨數據明細部分,帳款科目三部份,其中抬頭部份建立在主報表中,另外新建兩個子報表,分別放置出貨明細與帳款科目部份。
新建子報表時點選工具欄內的子報表[SubReport]
按鈕 ,此時在頁面底部的主報表與子報表切換區域內就會多出一個選擇按鈕,如下圖紅色區域內的按鈕就是新建的子報表按鈕,如果您要編輯主報表或其他子報表時可點選此處的按鈕進行切換。
主報表只有一個,依據報表結構您可以建立多個子報表,列印時主報表位於頁面的最上方,然後依次為各個子報表,您可以點選預覽按鈕瀏覽效果。
# 3. 報表編輯使用範例
使用者在實際使用報表過程中,會用到一些常用的編輯功能,我們還是以單據別出貨明細表為例講解如何使用:
# 3.1. 如何更該欄位說明與數據顯示欄位
首先進入單據別出貨明細表的編輯頁面,我們將報表表頭部份的公司地址換成公司的e-mail。

點選公司在左上方顯示兩個下拉選單,在靠左邊的下拉選單中點選Scompany,在靠右邊的下拉選單中點選email,此時公司的email數據便從資料庫中提取至選中的欄位里了,需要注意的是如果提取資料庫中公司的系統數據,如公司名稱、公司編號、公司地址、電話、傳真等資訊需要選中Scompany這個選項,然後再從它右邊的下拉選單中提取對應的明細項。


# 3.2. 如何修改明細欄位的內容
單據別出貨明表的明細欄位內容在主報表之下的子報表中,首先進入該子報表編輯頁面,如下圖:

下面我們將明細欄位中的業務員欄位改為出貨日期欄位,用滑鼠選中業務員的欄位,如圖所示,在左上方的欄位中將業務員手工更改為出貨日期,此時報表欄位中的業務員也變成了出貨日期:

接下來我們用滑鼠點選一下出貨日期下方的欄位,即原來的業務員編號欄位,我們將這裡面的內容更改為出貨日期,這些都是從資料庫中提取的,選中這個欄位後,左上角工具欄處顯示了兩個下拉選單,在靠左的下拉選單中點選Query選項,在靠右的下拉選單中點選shipdate選項,可以看到原來的業務員編號欄位中的內容變成了出貨日期,這些都是從資料庫中自動提取出來的。

# 3.3. 如何在報表中印出圖片
在報表中也可以加入圖片,如公司logo,假設我們加在表頭部分,首先進入報表編輯狀態下,在主報表中點選新增圖片的按鈕。

然後在頁面適當位置點一下滑鼠左鍵,出現一個欄位框,在欄位框中點一下滑鼠右鍵,從彈出選單中點選圖像,這時又彈出一個視窗,從您的電腦中選擇路徑找到放在報表中的圖片,選擇確認后即可顯示于報表中 ,如果圖片與顯示區域的尺寸不合,需要調整Stretch 屬性。使用者還可以點選預覽按鈕來瀏覽 。






# 3.4. 如何在明細標題顯示陰影
爲了使報表頁面更加美觀,我們可以在明細標題欄中加入陰影效果,以單據別出貨單為例,進入編輯頁面,我們給公司名稱加個陰影,點選報表中的公司名稱欄位,再點選工具欄右側的Highlight Color
反白顏色按鈕,螢幕中彈出一個顏色選取視窗,選擇陰影色,明細標題即顯示為陰影。



# 4. 如何寫報表公式
不同的報表樣式各不一樣,有複雜的報表,也有簡單的報表。爲了使報表適應不同的需求,報表設計器提供了一些簡單的函式。
# 4.1. 使用報表公式的流程
首先將界面切換為 Events,然後選擇要設定的標籤。

假設在 OnGetText
中使用 FormateMoney
實現數字的英文大寫功能。

procedure Label20OnGetText(var Text: String);
begin
Text := FormateMoney(Text);
end;
2
3
4
5
6

使用 Compile,當變成綠色時,表示程式編寫無誤。
可運行預覽檢視結果。
# 4.2. 數字的英文大寫
數字的英文大寫可檢視報表公式流程中給出的例子。
# 4.3. 數字的中文大寫
中文大寫請使用 SyRMB
函式。
procedure Label20OnGetText(var Text: String);
begin
Text := SyRMB(Text);
end;
2
3
4
# 4.4. 兩個字元相連
兩個字元相連可使用 +
符號進行拼接。
procedure Label20OnGetText(var Text: String);
begin
Text := Text + ' ' + Scompany['companyname'];
end;
2
3
4
# 4.5. 兩個數字相乘並與另一個字串相連
數字相乘可使用 *
符號來表示,相乘要求使用數值型別的變數,且要與字串相連的話需要將相乘后的結果轉換為字串格式floattostr
。轉換的示例如下:
procedure Label20OnGetText(var Text: String);
begin
Text := FloatToStr(Cds_detail['armoredqty']*Cds_detail['packqty']*Cds_detail['boxqty'])+' '+Cds_detail['whunit'];
end;
2
3
4
# 4.6. 序號
如需要使用公式產生序號,需要使用Variable,建立OnCalc
事件:
procedure Variable1OnCalc(var Value: Variant);
begin
Value := Value+1;
end;
2
3
4
注意
選擇Variable1時,型別必須設定為Integer。

# 4.7. 數字小位格式化
以下是格式化的一些例子:
FormatFloat('#,0.00;-#,0.00', 1234.084); //結果是:1234.08
FormatFloat('#,0.0;-#,0.0', 1234.084); //結果是:1234.1
FormatFloat('#,0;-#,0', 1234.084); //結果是:1234
2
3
# 4.8. 數字轉字串
FloatToStr(1235.43); //轉換爲 1235.43的字串,可用於標籤顯示
# 4.9. 字元轉數字
StrToFloat(1235.43); //轉換爲 1235.43的字串為數字
# 4.10. 擷取字串
Copy('abc',1,1); //結果是:a
Copy('abc',1,2); //結果是:ab
Copy('abc',2,2); //結果是:bc
2
3