如何將報表與Lazarus中FastReport的資料連線?

roffey發表於2021-03-31

FastReport .NET是適用於Windows Forms,ASP.NET,MVC和.NET Core的全功能報表解決方案。它可以在Microsoft Visual Studio 2005-2019中使用。支援.Net Framework 2.0-4.x,.NET Core 3.0及以上版本。

在FastReport .NET 2021.1的新版本中,我們實現了對.NET 5的支援。新增了新條形碼-Deutsce Post Leitcode。將RTF轉換為報告物件的演算法已得到顯著改進。並且還新增了用於轉換數字的新功能。

慧都網歡迎免費下載體驗。

在上一篇有關使用圖表的圖表中,我們已經熟悉商業圖形和條形碼。現在是時候使任務複雜化並使用不同的資料來源了。大多數報告通常基於資料庫中的資料。為了訪問此資料,Lazarus提供了FastReport使用的強大機制。 

資料訪問元件

這指的是“資料訪問”選項卡中的元件,這些元件可以用作報表的資料來源。任何TDataSet後繼元件都可以用於此目的。

除了訪問專案中定義的資料外,FastReport還允許您在執行時建立新元件。我們公司建立資料訪問元件的原理與Lazarus環境中使用的原理非常相似-我們在表單上強加了一個元件,並在物件檢查器中配置了它的屬性。在選擇資料庫格式時,執行時連線的功能受到更多限制,因此在撰寫本文時,只能在執行時建立DBF和SqLite3。

這是指DataAccess選項卡中的元件,這些元件使用FastReportn選項卡中的TfrxDBDataSet聯結器元件將表或其他資料來源連線到波段。該元件充當資料來源和FastReport核心之間的中介。該元件負責瀏覽記錄和訪問欄位。這樣,您就可以避免將FastReport核心與任何資料訪問庫繫結在一起。

FastReport可以與BDE和任何其他庫同時使用,也可以從與資料庫無關的源(例如陣列或檔案)中完全檢索資料。

TfrxDataSet元件旨在與資料來源一起使用,並且應注意其多功能性。它可以使用從TDataSet繼承的所有連線。這就是BDE,CVS和絕大多數其他庫!要與其他資料來源(陣列,檔案等)一起使用,請使用TfrxUserDataSet元件。

要將TfrxDBDataSet元件連結到資料來源,必須配置以下選項之一:

  • DataSet屬性,直接連結到表或查詢。
  • DataSource屬性,該屬性連線到TDataSource元件。

兩種連線方法都是等效的,只是第一種方法沒有TDataSource元件。

為了使元件及其相關資料在報告中可用,您需要明確指定在報告中使用哪些資料來源。在FastReport設計器中,選擇選單項“ Report / Data ...”,然後在出現的視窗中選中所需源旁邊的框。

æ°æ®æºéæ©çªå£

FastReport設計器中的元件說明

TfrxDBFTable元件旨在組織對.dbf資料庫表的訪問,並具有以下屬性:

  • FilePath指定資料庫資料夾的路徑。
  • TableName分配資料庫的名稱。透過選擇資料庫,您還將更改路徑。
  • FieldAliases允許您指定自定義欄位名稱。
  • Filter包含一個用於過濾記錄的表示式。
  • 已過濾確定是否應用過濾器。
  • IndexFieldNames儲存構成索引的欄位的名稱。
  • IndexName定義二級索引的名稱。
  • MasterFields包括與主資料集關聯的欄位。
  • 母版與母版資料集相同。
  • UserName設定資料集的別名(使用者名稱)。

元件的屬性分配與Lazarus中的TDbf屬性相同。要將元件連線到資料庫表,只需填寫TableName屬性。透過設定Active:= True開啟表。

FieldAliases屬性編輯器允許您選擇在訪問表時將可用的欄位,併為每個欄位和整個表設定自定義名稱。

å«åç¼è¾å¨

MasterFields屬性編輯器用於在兩個表之間建立主從關係。要在從屬表中連結兩個具有主從關係的表,請在Master屬性中指定主表,然後呼叫MasterFields屬性編輯器。如果表具有要使用的二級索引,請首先配置IndexName屬性。

РедакÑоÑÑвÑзей主ä»ç»è

該編輯器使您可以直觀地連結資料集的主欄位和明細欄位。當集透過主/從關係連結時,詳細集的內容在您瀏覽主集時被過濾,因此它僅包含與當前主集記錄相關的記錄。

要連結集欄位,請從左側列表(詳細集)中選擇該欄位,然後從右側列表(主集)中選擇該欄位,然後單擊“新增”按鈕。這會將欄位對映移到較低的列表。要清除底部列表,請使用“清除”按鈕。重要的是要注意,要連結的欄位必須是同一型別並且是關鍵。

但是在Lazarus本身中,這些屬性不適用於TDbf元件的選擇(主從分類和篩選),並且由於我們使用了此元件,因此它對我們也不起作用。

TfrxLazSqliteQuery元件旨在使用SqLite3對資料庫進行SQL查詢,並具有以下屬性:

  • 資料庫指定資料庫連線名稱(預設始終為“ sqlLite”)。
  • FieldAliases允許您指定自定義欄位名稱。
  • 過濾器儲存一個表示式以過濾記錄。
  • 已過濾確定是否應用過濾器。
  • Master與Master資料集相同。
  • 引數顯示查詢引數列表。
  • SQL包含查詢文字。
  • UserName設定資料集的別名(使用者名稱)。
  • IgnoreDupParams-如果為true,則查詢引數的名稱將不會在引數編輯器中重複。

SQL屬性具有其自己的編輯器,用於填充SQL查詢: 

TfrxLazSqliteQueryç»ä»¶ä¸­çSQLæ¥è¯¢ç¼è¾å¨

Params屬性也有其自己的編輯器。如果查詢文字包含引數,則可用。

TfrxLazSqliteQueryç»ä»¶ä¸­çåæ°ç¼è¾å¨

引數可以有兩種型別:一種是從主資料集分配的,另一種是具有特定值的,其中值可以是常量,對變數的引用或物件屬性。 

如果引數是從主資料集中獲取的,則必須配置TfrxLazSqliteQuery.Master屬性。資料集必須包含與引數名稱相同的欄位。無需指定引數型別和值。

TfrxLazSqliteDataBase元件用於連線到SqLite3資料庫。其用途類似於TSQLite3Connection和TSqlTransaction元件,並且具有以下屬性:

  • 已連線-啟用True時,將啟用連線。
  • DatabaseName允許您選擇資料庫的名稱。
  • LoginPrompt定義在連線資料庫時是否必須要求使用者輸入密碼。如果LoginPrompt = False,則必須在連線字串中指定使用者名稱和密碼。

透過資料庫訪問構建報告

考慮構建一個簡單的報告,其中包含資料訪問元件,我們將以LDemo演示資料庫為例。

首先,讓我們建立一個專案,透過該專案我們將進行實驗。在Lazarus中建立一個新專案,並將其放在表單元件TfrxReport,TfrxDesigner,TfrxDialogControls,TfrxDBDataset,TDbf上。

带æFastReportç»ä»¶çLazarus中ç表å

配置與資料庫的連線。為此,請找到Dbf1的TableName屬性,然後在對話方塊中選擇資料庫檔案-任何具有.dbf副檔名的檔案都可以使用。然後將frxDBDataset1屬性DataSet設定為“ Dbf1”。

然後將按鈕新增到表單,然後在OnClick中輸入以下程式碼:

procedure TForm1.Button1Click(Sender: TObject);
begin
 frxReport1.DesignReport;
end;

記住要允許Linux專案使用執行緒。安裝文章中對此進行了描述 。之後,編譯並執行專案。建立終端使用者報告設計器不需要任何其他操作。

當您單擊“設計”時,設計器將開啟並顯示一個空報告。考慮在這種環境下構建簡單的報告。順便說一句,到目前為止,您已經知道如何將資料庫從Lazarus連線到FR。

一個簡單的“列表”型別報告

現在,我們將在執行時從一個已經使用FR的資料庫表中輸出資料。執行以下步驟來生成報告:

1.單擊設計器工具欄上的“新建報告”按鈕。FastReport將建立一個空報告,其中包含頁面“程式碼”,“資料”,“ Page1”。

2.切換到“資料”頁面,然後在頁面上放置“ DBF表”元件:

å°frxDBFTableç»ä»¶æ·»å å°æ¥å中

3.選擇要連線的資料庫。為此,透過從演示專案中選擇customer.dbf檔案,在物件檢查器中設定TableName屬性。

4.要將1級資料庫連線到表,請雙擊該表,然後在開啟的視窗中選擇我們的表。然後將所需欄位從“資料樹”視窗拖放到報告表上。我們的報告將如下所示:

æ¥å模æ¿çå表è¾åº

要檢視生成的報告,請單擊工具欄上的“預覽”按鈕。 

有用的資料處理選項

“資料”選項卡不僅適用於資料訪問元件。使用“文字”和“繪圖”物件,可以放置說明標籤並繪製簡單的圖,如下圖所示:

æ°æ®æ述示ä¾

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69995027/viewspace-2765839/,如需轉載,請註明出處,否則將追究法律責任。

相關文章