可視化報(bào)告生成器FastReport VCL功能指南:從Delphi應(yīng)用程序創(chuàng)建發(fā)票
報(bào)表生成器FastReport VCL是用于在軟件中集成商務(wù)智能的現(xiàn)代解決方案。它提供了可視化模板設(shè)計(jì)器,可以訪問最受歡迎的數(shù)據(jù)源,報(bào)告引擎,預(yù)覽,將過濾器導(dǎo)出為30多種格式,并可以部署到云,Web,電子郵件和打印中。
近日,F(xiàn)astReport VCL更新至v6.7,在新版本中,添加了對(duì)最新版本IDE的支持,簡化了用于付款標(biāo)準(zhǔn)的條形碼的創(chuàng)建,新增從預(yù)覽窗口直接編輯RichView的功能,同時(shí)修復(fù)了多個(gè)Bug問題。歡迎下載體驗(yàn)。(點(diǎn)擊下方按鈕下載)
隨著C和.Net平臺(tái)的出現(xiàn),Delphi VCL的普及程度略有下降,但是世界各地有許多Delphi開發(fā)人員。許多應(yīng)用程序都是用VCL編寫的,需要進(jìn)行現(xiàn)代化。
如果想要實(shí)現(xiàn)商品周轉(zhuǎn)的會(huì)計(jì)信息系統(tǒng),則需要從該應(yīng)用程序生成一些文檔。這可以是報(bào)告,銷售和出納支票,發(fā)票。在本文中,將研究從創(chuàng)建應(yīng)用程序到報(bào)表顯示,打印發(fā)票的整個(gè)過程。
本教程將使用Delphi 7開發(fā)環(huán)境來創(chuàng)建應(yīng)用程序,并使用FastReport VCL報(bào)告生成器來創(chuàng)建報(bào)告。該應(yīng)用程序的工作歸結(jié)為將必要的組件添加到表單并進(jìn)行設(shè)置。
在組件面板上找到FastReport選項(xiàng)卡,然后將frxReport組件添加到表單中。我們還需要為報(bào)告創(chuàng)建數(shù)據(jù)源。例如,我們將使用FastReport VCL發(fā)行版中的demo.mdb數(shù)據(jù)庫。使用下表:訂單,客戶,物料,零件。將ADOConnection組件從組件面板的ADO選項(xiàng)卡拖放到窗體上。然后添加四個(gè)ADOTable組件。
在“數(shù)據(jù)訪問”選項(xiàng)卡中,添加四個(gè)數(shù)據(jù)源組件。在FastReport選項(xiàng)卡中,添加四個(gè)frxDBDataSet組件。現(xiàn)在我們得到了:ADOTable,DataSource,frxDBDataSet,還需要將它們配置為三個(gè)。
第一個(gè)三:
-
對(duì)于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–訂單;
- TableName –訂單;
-
對(duì)于數(shù)據(jù)源,設(shè)置屬性:
- 數(shù)據(jù)集–訂單
-
對(duì)于frxDBDataSet,設(shè)置屬性:
- 數(shù)據(jù)集–訂單
- 用戶名–訂單
第二個(gè)三:
-
對(duì)于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–客戶;
- IndexFieldnames – CustNo;
- MasterSource –數(shù)據(jù)源1;
- MasterFields-客戶編號(hào);
- TableName –客戶;
-
對(duì)于數(shù)據(jù)源,設(shè)置屬性:
- 數(shù)據(jù)集–客戶
-
對(duì)于frxDBDataSet,設(shè)置屬性:
- 數(shù)據(jù)集–客戶
- 用戶名–客戶
第三個(gè)三:
-
對(duì)于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–項(xiàng)目;
- IndexFieldnames – 訂單號(hào);
- MasterSource –數(shù)據(jù)源1;
- MasterFields-訂單號(hào);
- TableName –項(xiàng)目;
-
對(duì)于數(shù)據(jù)源,設(shè)置屬性:
- 數(shù)據(jù)集–項(xiàng)目
-
對(duì)于frxDBDataSet,設(shè)置屬性:
- 數(shù)據(jù)集–項(xiàng)目
- 用戶名–項(xiàng)目
第四個(gè)三:
-
對(duì)于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–零件;
-
對(duì)于數(shù)據(jù)源,設(shè)置屬性:
- 數(shù)據(jù)集–零件
-
對(duì)于frxDBDataSet,設(shè)置屬性:
- 數(shù)據(jù)集–零件
- 用戶名–零件
Customer和Items表與DataSource1(第一個(gè)表-Orders)有關(guān)系。這意味著它們通過密鑰(一對(duì)多關(guān)系)鏈接。許多訂單只能有一個(gè)客戶,等等。這是必要的,以便在報(bào)表中顯示特定訂單的信息時(shí),將從與此訂單相關(guān)的鏈接表中提取數(shù)據(jù)。
讓我們?cè)贏DOTable中為Items表創(chuàng)建可計(jì)算字段,以簡化報(bào)表模板的進(jìn)一步工作。雙擊該對(duì)象,然后看到一個(gè)帶有表字段的窗口。最初它是空的,但是您可以通過選擇添加字段來從上下文菜單中加載它們:
價(jià)格和說明字段將從零件表中獲取。在上下文菜單中選擇“新建字段”,然后添加“價(jià)格”字段:
以相同的方式添加產(chǎn)品描述(“描述”字段):
現(xiàn)在,一旦我們創(chuàng)建了數(shù)據(jù)源并配置了表之間的關(guān)系,就讓我們?cè)诒韱沃刑砑訋讉€(gè)按鈕:Design Report和ShowReport。第一個(gè)按鈕啟動(dòng)報(bào)表設(shè)計(jì)器,第二個(gè)按鈕顯示報(bào)表。為每個(gè)按鈕添加一個(gè)單擊事件。這是顯示報(bào)表設(shè)計(jì)器的事件處理程序代碼:
frxReport1.DesignReport();
要打印完成的報(bào)告,可以將“打開文件”對(duì)話框添加到表單中以選擇在設(shè)計(jì)器中創(chuàng)建的報(bào)告。打印報(bào)告的代碼將如下所示:
OpenDialog1.Filter := 'FastReport VCL (*.fr3)|*.FR3'; OpenDialog1.Execute(); if Length(OpenDialog1.FileName)>0 then begin frxReport1.LoadFromFile(OpenDialog1.FileName); frxReport1.PrepareReport(); frxReport1.Print(); end
如果需要預(yù)覽報(bào)告,可以將“打印”功能替換為“報(bào)告”顯示:
frxReport1.ShowReport();
現(xiàn)在,可以運(yùn)行該應(yīng)用程序,單擊“設(shè)計(jì)報(bào)告”按鈕,然后繼續(xù)創(chuàng)建報(bào)告?,F(xiàn)在該討論我們將要?jiǎng)?chuàng)建的報(bào)告。為了使文檔易于理解并避免客戶提出問題,您需要在文檔中填寫所有必要的信息。但是同時(shí),不應(yīng)該使文檔過載。讓我們嘗試保持這種微妙的平衡。因此,我們認(rèn)為發(fā)票應(yīng)包含以下信息:
此圖突出顯示了文檔的重要區(qū)域。
- 有關(guān)賣方的信息。任何正式文件都應(yīng)包含有關(guān)賣方的信息:姓名,地址,電話,電子郵件,其他信息(可選);
- 有關(guān)買方聯(lián)系人的信息–必須指出實(shí)際負(fù)責(zé)付款的人;
- 訂單和發(fā)票標(biāo)識(shí)符,發(fā)票開具和到期日。這些標(biāo)識(shí)符將有助于在數(shù)據(jù)庫中查找發(fā)票或訂單,以防客戶以后有任何疑問。
- 有關(guān)訂單內(nèi)容的信息。您的客戶必須了解他所支付的費(fèi)用。必須指定貨物的名稱和數(shù)量,以及每單位的成本;
- 總量??偨痤~不僅對(duì)于付款是必要的,而且對(duì)于理解計(jì)算也是必要的;
- 付款詳情。由于這是付款發(fā)票,因此應(yīng)包含收款人詳細(xì)信息;
- 國外付款的銀行詳細(xì)信息。即使在這種情況下,客戶不是來自國外,也可以將這些數(shù)據(jù)保留為統(tǒng)一的格式。
- 解釋性信息。如有疑問,提供聯(lián)系方式很重要。還應(yīng)該警告延遲付款的后果。這將使客戶不耽誤它。
我們將在已經(jīng)啟動(dòng)的報(bào)表設(shè)計(jì)器中創(chuàng)建這樣的文檔。首先,選擇報(bào)告數(shù)據(jù)集。
我們?cè)诖藞?bào)告中不需要“零件”表,因此無需選擇它。讓我們繼續(xù)創(chuàng)建模板。我們的報(bào)告中有兩個(gè)數(shù)據(jù)帶:MasterData和DetailData。在第一個(gè)數(shù)據(jù)段中,我們輸出有關(guān)客戶端的信息:
- 名稱-Customer.Company
- 地址-Customer.Addr1
- 電話-客戶電話
以及客戶的發(fā)票編號(hào)– Orders.OrderNo、發(fā)票日期-系統(tǒng)變量[日期]、到期付款–當(dāng)前日期[日期] +天數(shù)。
該范圍鏈接到“訂單”表。訂單的內(nèi)容信息將顯示在下級(jí)數(shù)據(jù)帶中:產(chǎn)品名稱,數(shù)量,項(xiàng)目價(jià)格,指定數(shù)量的價(jià)格,某些國家/地區(qū)的價(jià)格中未包含的增值稅(示例所示),增值稅總額。增值稅金額,凈額,發(fā)票總額將顯示在頁腳中。付款細(xì)節(jié)也將顯示在此處。
在頁面頁腳中添加一些說明性信息,以避免客戶提出一些問題:
將報(bào)告保存在本地存儲(chǔ)中,然后關(guān)閉報(bào)告設(shè)計(jì)器。如果在按鈕代碼中使用了ShowReport(),則使用第二個(gè)按鈕選擇生成的報(bào)告并獲得“打印”對(duì)話框或預(yù)覽窗口。
因此,我們創(chuàng)建了付款發(fā)票,并在半小時(shí)內(nèi)將其顯示給用戶?,F(xiàn)在,從報(bào)告預(yù)覽窗口中,我們可以將其發(fā)送以打印或?qū)С鰹橐环N流行的電子文檔格式:PDF,DOCX,XLSX,RTF等。
還想要更多嗎?您可以點(diǎn)擊閱讀【FastReport 報(bào)表2020最新資源盤點(diǎn)】,查找需要的教程資源。如果您有任何疑問或需求,請(qǐng)隨時(shí)加入FastReport技術(shù)交流群(783996712),我們很高興為您提供查詢和咨詢。