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