可視化報(bào)告生成器FastReport VCL功能指南:從Delphi應(yīng)用程序創(chuàng)建銷售收據(jù)
報(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,在新版本中,添加了對最新版本IDE的支持,簡化了用于付款標(biāo)準(zhǔn)的條形碼的創(chuàng)建,新增從預(yù)覽窗口直接編輯RichView的功能,同時(shí)修復(fù)了多個(gè)Bug問題。歡迎下載體驗(yàn)。(點(diǎn)擊下方按鈕下載)
Delphi編程語言,即Turbo Pascal,已經(jīng)成為許多開發(fā)者的起點(diǎn)。由于簡單明了的語法和以程序化風(fēng)格編寫的能力,它變得非常容易學(xué)習(xí)。很多人將它與Visual Basic進(jìn)行比較,但在其流行的高峰期,Delphi給了更多的機(jī)會(huì),這要?dú)w功于它的數(shù)據(jù)庫工作組件和自己的數(shù)據(jù)庫--Interbase。
盡管C #和.Net平臺(tái)取代了Delphi和VCL,但仍有大量的擁護(hù)者。即使是用這種語言編寫的舊應(yīng)用程序也可以使用現(xiàn)代庫輕松升級,例如FastReport 6 VCL報(bào)表生成器。例如,自動(dòng)化會(huì)計(jì)系統(tǒng)需要報(bào)表。
一個(gè)自動(dòng)化的銷售會(huì)計(jì)系統(tǒng)應(yīng)該允許形成付款單據(jù),如銷售收據(jù)。在本文中,將探討如何從Delphi應(yīng)用程序中創(chuàng)建和打印銷售收據(jù)。我們將使用FastReport VCL報(bào)表生成器來創(chuàng)建收據(jù)本身,并使用用戶應(yīng)用程序來打印它。除了打印之外,還可以簡單地將收據(jù)顯示在報(bào)表查看窗口中,可以從該窗口中打印收據(jù),將其保存為流行的文檔格式之一,將其作為電子郵件發(fā)送或上傳到云存儲(chǔ)中。
要?jiǎng)?chuàng)建銷售收據(jù),我們需要的信息有:訂單、客戶、賣家和訂單內(nèi)容。
在本文中,將使用FastReport VCL發(fā)行版中的demo.mdb數(shù)據(jù)庫。為了創(chuàng)建應(yīng)用程序,將使用Delphi 7開發(fā)環(huán)境。
首先,讓我們在表單中添加兩個(gè)按鈕:一個(gè)用于運(yùn)行報(bào)表設(shè)計(jì)器,另一個(gè)用于顯示或打印成品報(bào)表。將OpenDialog組件也添加到表單中--這將允許我們選擇所需的報(bào)表文件來打開。
現(xiàn)在讓我們繼續(xù)為報(bào)表創(chuàng)建一個(gè)數(shù)據(jù)源--銷售收據(jù)。如上所述,我們使用的是demo.mdb數(shù)據(jù)庫,或者更準(zhǔn)確的說是表。訂單,客戶,項(xiàng)目,零件和員工。我們將使用ADOConnection組件連接到數(shù)據(jù)庫,并使用ADOTable組件從每個(gè)表中獲取數(shù)據(jù)。Orders表與Customers、Items和Employees表相連。因此,我們需要設(shè)置這些連接。為此,為每個(gè)ADOTable添加一個(gè)DataSource組件,為了使所有這些表在報(bào)表中可用,為每個(gè)表添加frxBDDataSet組件。
因此,要使用一個(gè)表,我們應(yīng)該獲得三個(gè)組件:ADOTable,DataSource,frxDBDataSet。
在ADOConnection中,從FastReport VCL交付創(chuàng)建到demo.mdb數(shù)據(jù)庫的連接。這些組件設(shè)置(針對五個(gè)表中的每個(gè))如下所示。
訂單表:
1.對于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–訂單;
- TableName –訂單。
2.對于DataSource,設(shè)置屬性:
?數(shù)據(jù)集–訂單。
3.對于frxDBDataSet,設(shè)置屬性:
?數(shù)據(jù)集–訂單;
?用戶名–訂單。
客戶表:
1.對于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–客戶;
- IndexFieldnames – CustNo;
- MasterSource –數(shù)據(jù)源1;
- MasterFields-客戶編號;
- TableName –客戶。
2.對于數(shù)據(jù)源,設(shè)置屬性:
?數(shù)據(jù)集–客戶。
3.對于frxDBDataSet,設(shè)置屬性:
?數(shù)據(jù)集–客戶;
?用戶名–客戶。
項(xiàng)目表:
1.對于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–項(xiàng)目;
- IndexFieldnames – 訂單號;
- MasterSource –數(shù)據(jù)源1;
- MasterFields-訂單號;
- TableName –項(xiàng)目。
2.對于數(shù)據(jù)源,設(shè)置屬性:
?數(shù)據(jù)集–項(xiàng)目。
3.對于frxDBDataSet,設(shè)置屬性:
?數(shù)據(jù)集–項(xiàng)目;
?用戶名–項(xiàng)目。
零件表:
1.對于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–零件;
- TableName –零件。
2.對于數(shù)據(jù)源,設(shè)置屬性:
?數(shù)據(jù)集–零件。
3.對于frxDBDataSet,設(shè)置屬性:
?數(shù)據(jù)集–零件;
?用戶名–零件。
員工表:
1.對于ADOTable,設(shè)置屬性:
- 連接– ADOConnection1;
- 名稱–員工;
- IndexFieldnames – EmpNo;
- MasterSource –數(shù)據(jù)源1;
- MasterFields-EmpNo;
- TableName –員工。
2.對于數(shù)據(jù)源,設(shè)置屬性:
?數(shù)據(jù)集–員工。
3.對于frxDBDataSet,設(shè)置屬性:
?數(shù)據(jù)集–員工;
?用戶名–員工。
客戶表、項(xiàng)目表和雇員表與DataSource1(第一個(gè)表--訂單)有關(guān)系。它們通過鍵連接,因此對于訂單表中的一條記錄,將選擇這些表中的相應(yīng)記錄。
項(xiàng)目表包含了訂單中的項(xiàng)目信息。沒有關(guān)于項(xiàng)目的具體數(shù)據(jù)--只有一個(gè)到零件表的鏈接。讓我們從零件表中添加兩個(gè)字段--價(jià)格和描述--到物品表的ADOTable中。這樣,我們以后就不需要使用Parts表了。
要將可計(jì)算字段添加到Items表中,雙擊ADOTable對象,就會(huì)看到一個(gè)包含表字段的窗口。最初它是空的,但你可以從上下文菜單中選擇添加字段......來加載它們。
價(jià)格和描述字段將從 "零件 "表中提取。在上下文菜單中選擇 "新建字段... "并添加價(jià)格字段。
以同樣的方式添加產(chǎn)品描述(描述字段)。
現(xiàn)在,只要我們創(chuàng)建了數(shù)據(jù)源并配置了表之間的關(guān)系,讓我們在表單中添加幾個(gè)按鈕。你可能還記得,第一個(gè)按鈕是啟動(dòng)報(bào)表設(shè)計(jì)器,第二個(gè)按鈕是顯示報(bào)表。不要忘記在表單中添加frxReport組件。
為每個(gè)按鈕添加一個(gè)點(diǎn)擊事件。下面是顯示報(bào)表設(shè)計(jì)器的事件處理程序代碼。
frxReport1.DesignReport();
要打印完成的報(bào)表,可以在表單中添加 "打開文件 "對話框,選擇在設(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)用程序,點(diǎn)擊設(shè)計(jì)報(bào)表按鈕,然后進(jìn)行報(bào)表創(chuàng)建。
首先,選擇報(bào)表數(shù)據(jù)集。
我們在這個(gè)報(bào)表中不需要零件表,所以不需要選擇它。我們繼續(xù)創(chuàng)建模板。在我們的報(bào)表中,有兩個(gè)數(shù)據(jù)帶。MasterData和DetailData。在第一個(gè)數(shù)據(jù)帶中,我們輸出的是客戶的信息。
- 名字 - Customer. Company;
- 地址 - Customer.Addr1;
- 電話--Customer.Phone.
以及客戶的其他信息:
- 公司名稱;
- 雇員– Employee.FirstName Employee.Last Name;
- 訂單號– Orders.OrderNo;
- 銷售日期– Orders.SaleDate。
該范圍鏈接到“訂單”表。訂單的內(nèi)容信息將顯示在下級數(shù)據(jù)帶中:產(chǎn)品名稱,數(shù)量,項(xiàng)目價(jià)格,指定數(shù)量的價(jià)格??傆?jì)-例如總凈額,稅率,最終金額(含稅)-將顯示在頁腳中。
行總小計(jì)的計(jì)算方法是將數(shù)量和物料價(jià)格相乘作為單個(gè)表項(xiàng)的一部分:
在這里我們可以說我們的報(bào)告已準(zhǔn)備好顯示。將其保存到本地存儲(chǔ),然后關(guān)閉報(bào)表設(shè)計(jì)器。使用表單上的第二個(gè)按鈕,選擇保存的報(bào)告并進(jìn)行打?。ㄈ绻诖a中使用了打印選項(xiàng)),或者如果選擇了報(bào)告預(yù)覽選項(xiàng)– ShowReport(),則對其進(jìn)行預(yù)覽。
就是這樣,你只需花費(fèi)很少的精力,就可以為你的會(huì)計(jì)系統(tǒng)實(shí)現(xiàn)有用的功能。幾乎不費(fèi)吹灰之力,您就可以為您的會(huì)計(jì)系統(tǒng)實(shí)現(xiàn)有用的功能?,F(xiàn)在,從報(bào)表查看窗口,你可以打印它或保存在流行的文件格式之一。PDF, DOCS, XLSX, XML, RTF和許多其他格式。
還想要更多嗎?您可以點(diǎn)擊閱讀【FastReport 報(bào)表2020最新資源盤點(diǎn)】,查找需要的教程資源。如果您有任何疑問或需求,請隨時(shí)加入FastReport技術(shù)交流群(783996712),我們很高興為您提供查詢和咨詢。