跳過到頁腳內容
使用IRONBARCODE

如何使用VB.NET在Crystal Reports中打印條碼

將條碼添加到 Crystal Reports 可以增強您的業務流程,從跟蹤庫存到生成詳細報告,使其更快且更準確。 如果您曾在 VB.NET 中嘗試使用基於字體的條碼,您就會知道使用複雜的公式、有限的格式和打印機問題多麼棘手,使其令人沮喪。

幸運的是,如IronBarcode這樣的現代條碼生成器 SDK 使創建和打印條碼變得簡單。 在本指南中,我們將引導您完成所有操作:在 Visual Studio 中設置 IronBarcode,生成條碼,並將其直接顯示在您的 Crystal Reports 中。 到最後,您將能夠生成專業、可靠的條碼,幾乎沒有麻煩。

在 Crystal Reports 中打印條碼的方法是什麼?

為 Crystal Reports 添加條碼主要有兩種方法:基於字體的方法和 SDK 解決方案。

基於字體的方法需要在字體文件夾中安裝特殊條碼字體(True Type 字體)並使用公式或用戶函數庫(UFL)來編碼數據。 雖然這種方法有效,但它通常涉及複雜的編碼公式、有限的條碼格式支持(例如 Code 39 或數據矩陣),以及在不同打印機和系統中的潛在字體渲染問題,正如Microsoft 的字體渲染文檔中所討論的。

基於 SDK 的解決方案提供了更強大的替代方案。這些庫以程序方式生成條碼圖像,提供更好的可靠性、廣泛的格式支持和更簡單的實施。 IronBarcode exemplifies this modern approach, allowing developers to 生成條碼作為圖像,通過標準數據庫字段或 DataTable 對象無縫集成到 Crystal Reports。 此方法確保在所有平台上的一致渲染,並消除在使用 VB.NET 打印 Crystal Report 中的條碼時的字體依賴問題。

如何為 VB.NET 設置 IronBarcode?

在 VB.NET 項目中設置 IronBarcode 需要最少的配置。 首先,通過 NuGet 包管理器運行以下命令安裝庫:

Install-Package BarCode

或者,使用 Visual Studio 中的包管理器 UI 搜索並安裝 "IronBarcode"。 安裝後,在 VB.NET 代碼中導入命名空間:

Imports IronBarCode
Imports IronBarCode
VB .NET

確保您的項目目標是 .NET Framework 4.0 或更高版本,或任何版本的 .NET Core/.NET 5+。 IronBarcode 與所有支持圖片字段的 Crystal Reports 版本兼容,使其能夠廣泛與現有項目兼容。 有關詳細的設置說明,請參閱 IronBarcode 文檔。

立即下載 IronBarcode,開始在您的 Crystal Reports 中創建專業條碼。

我如何生成條碼並將其存儲在數據庫中?

使用 IronBarcode 創建條碼並將其存儲在 Crystal Reports 的過程涉及生成條碼圖像並使用新 OleDbConnection 或 SqlConnection 將其保存到您的數據庫。 以下是完整示例:

選項 1:使用數據庫

Imports IronBarCode
Imports System.Data.SqlClient
Module BarcodeGenerator
    Sub CreateAndStoreBarcode()
        ' Generate a Code128 barcode
        Dim myBarcode = BarcodeWriter.CreateBarcode("PROD-12345", BarcodeWriterEncoding.Code128)
        ' Add readable text below the barcode
        myBarcode.AddBarcodeValueTextBelowBarcode()
        ' Resize to appropriate dimensions and adjust font size
        myBarcode.ResizeTo(400, 150)
        ' Connect to your database (example uses connection string)
        Using connection As New SqlConnection("YourConnectionString")
            ' SQL command to post barcode data
            Dim cmd As New SqlCommand("INSERT INTO Products (ProductCode, BarcodeImage) VALUES (@Code, @Image)", connection)
            ' Add parameters
            cmd.Parameters.AddWithValue("@Code", "CUSTOMER-12345")
            cmd.Parameters.AddWithValue("@Image", myBarcode.BinaryStream)
            ' Execute the command
            connection.Open()
            cmd.ExecuteNonQuery()
        End Using
    End Sub
End Module
Imports IronBarCode
Imports System.Data.SqlClient
Module BarcodeGenerator
    Sub CreateAndStoreBarcode()
        ' Generate a Code128 barcode
        Dim myBarcode = BarcodeWriter.CreateBarcode("PROD-12345", BarcodeWriterEncoding.Code128)
        ' Add readable text below the barcode
        myBarcode.AddBarcodeValueTextBelowBarcode()
        ' Resize to appropriate dimensions and adjust font size
        myBarcode.ResizeTo(400, 150)
        ' Connect to your database (example uses connection string)
        Using connection As New SqlConnection("YourConnectionString")
            ' SQL command to post barcode data
            Dim cmd As New SqlCommand("INSERT INTO Products (ProductCode, BarcodeImage) VALUES (@Code, @Image)", connection)
            ' Add parameters
            cmd.Parameters.AddWithValue("@Code", "CUSTOMER-12345")
            cmd.Parameters.AddWithValue("@Image", myBarcode.BinaryStream)
            ' Execute the command
            connection.Open()
            cmd.ExecuteNonQuery()
        End Using
    End Sub
End Module
VB .NET

通過創建一個新的 SqlConnection(或新的 OleDbConnection)來連接到您的數據庫並發布您的條碼數據。

選項 2:使用 DataTable

Imports IronBarCode
Imports System.Data
Function CreateBarcodeDataTable() As DataTable
    Dim dt As New DataTable()
    dt.Columns.Add("ProductCode", GetType(String))
    dt.Columns.Add("Barcode", GetType(Byte()))
    ' Add table row for each product
    Dim row As DataRow = dt.NewRow()
    row("ProductCode") = "PROD-12345"
    ' Create barcode on-the-fly and convert to binary
    Dim barcode = BarcodeWriter.CreateBarcode("CUSTOMER-12345", BarcodeWriterEncoding.Code128)
    barcode.AddBarcodeValueTextBelowBarcode()
    barcode.ResizeTo(400, 150)
    row("Barcode") = barcode.BinaryStream
    dt.Rows.Add(row)
    Return dt
End Function
Imports IronBarCode
Imports System.Data
Function CreateBarcodeDataTable() As DataTable
    Dim dt As New DataTable()
    dt.Columns.Add("ProductCode", GetType(String))
    dt.Columns.Add("Barcode", GetType(Byte()))
    ' Add table row for each product
    Dim row As DataRow = dt.NewRow()
    row("ProductCode") = "PROD-12345"
    ' Create barcode on-the-fly and convert to binary
    Dim barcode = BarcodeWriter.CreateBarcode("CUSTOMER-12345", BarcodeWriterEncoding.Code128)
    barcode.AddBarcodeValueTextBelowBarcode()
    barcode.ResizeTo(400, 150)
    row("Barcode") = barcode.BinaryStream
    dt.Rows.Add(row)
    Return dt
End Function
VB .NET

此代碼生成一個值為 "PROD-12345" 的Code 128 條碼。 AddBarcodeValueTextBelowBarcode() 方法在條碼下方添加可讀文本。 ResizeTo() 方法調整尺寸以適應您的報告佈局。 有關更多條碼格式,請瀏覽 支持的條碼類型

如何在 Crystal Reports 中顯示條碼?

一旦條碼存儲在數據庫中,在 Crystal Reports 中顯示它們遵循標準圖像字段程序:

  1. 打開 Crystal Reports 並創建一個新的報告或打開一個現有的報告
  2. 在 Field Explorer 中右鍵單擊 "Database Fields" 並選擇 "Database Expert"

如何在 VB.NET 中打印 Crystal Reports 的條碼:圖 1 - 數據庫專家窗口

  1. 連接到您的數據庫並選擇包含條碼圖像的表
  2. 將條碼圖像字段拖到報告設計界面上
  3. 根據需要調整字段的大小和位置

您的報告設計器應如下圖所示:

如何在 VB.NET 中打印 Crystal Reports 的條碼:圖 2 - 報告設計器佈局

為在報告運行時動態生成條碼,修改 DataTable 或數據庫查詢以動態生成條碼:

Function GetReportData() As DataTable
    Dim dt As New DataTable()
    dt.Columns.Add("ProductCode", GetType(String))
    dt.Columns.Add("Barcode", GetType(Byte()))
    ' Add table row
    Dim row As DataRow = dt.NewRow()
    row("ProductCode") = "CUSTOMER-12345"
    ' Create barcode on-the-fly and convert to binary
    Dim barcode = BarcodeWriter.CreateBarcode("CUSTOMER-12345", BarcodeWriterEncoding.Code128)
    row("Barcode") = barcode.BinaryStream
    dt.Rows.Add(row)
    Return dt
End Function
Function GetReportData() As DataTable
    Dim dt As New DataTable()
    dt.Columns.Add("ProductCode", GetType(String))
    dt.Columns.Add("Barcode", GetType(Byte()))
    ' Add table row
    Dim row As DataRow = dt.NewRow()
    row("ProductCode") = "CUSTOMER-12345"
    ' Create barcode on-the-fly and convert to binary
    Dim barcode = BarcodeWriter.CreateBarcode("CUSTOMER-12345", BarcodeWriterEncoding.Code128)
    row("Barcode") = barcode.BinaryStream
    dt.Rows.Add(row)
    Return dt
End Function
VB .NET

此方法在加載報告時動態生成條碼,消除此之前需要在數據庫中預存儲圖像的需求。 您還可以使用 Crystal Reports 的導出功能將報告轉換為 PDF。 有關 Crystal Reports 數據源的更多信息,請參閱 SAP 的 Crystal Reports 文檔

輸出

您的 Crystal Report 應顯示具有可讀文本和適當字體大小的條碼。根據需要調整字體、字段大小或邊距以符合掃描器、打印機或標籤的需求。 條碼現在可以直接從您的 VB 程式或項目中包含在 PDF、打印表單或模板中。

如何在 VB.NET 中打印 Crystal Reports 的條碼:圖 3 - 使用 Crystal Reports Viewers 顯示生成的條碼

常見問題和解決方案是什麼?

在使用 VB.NET 在 Crystal Reports 中實施條碼時可能會出現幾個問題:

  • 條碼模糊:使用 myBarcode.ResizeTo() 增加分辨率以獲得更大的尺寸。
  • 掃描問題:確保在條碼周圍有足夠的空白區域或為 Code 39 包含星號標記。
  • 數據庫連接問題:檢查您的新 OleDbConnection 或新 OleDbDataAdapter 參數。 確保正確的數據集綁定。
  • 數據類型問題:始終使用圖像或 varbinary(max) 字段存儲條碼二進制數據。
  • 條碼未顯示:確保 Crystal Reports 檢視器具有對數據庫、DataTable 或文件資源的正確訪問權限。
  • 系統問題:確保安裝所有必需的 DLL,並且您的項目引用了正確的 IronBarcode DLL。
  • 字體或打印機問題:確認 True Type 字體已安裝在字體文件夾中並為您的打印機配置。

有關其他故障排除支持,請訪問 IronBarcode 故障排除指南

結論

在 Crystal Reports 中使用 VB.NET 和 IronBarcode 實施條碼提供了一個可靠且簡單的報告增強解決方案。 這種基於 SDK 的方法消除了字體依賴性,同時提供了廣泛的自定義選項。 無論是使用數據庫還是 DataTable,您都可以在 Crystal Reports 應用程序中實施專業條碼,包括數據矩陣、Code 39 和其他格式。

立即通過下載IronBarcode 的免費試用版,在您的項目中開始實施條碼,以探索其在使用 VB.NET 打印 Crystal Reports 中的條碼方面的全部功能。

常見問題解答

在 Crystal Reports 中使用 IronBarcode 與 VB.NET 有哪些好處?

在 Crystal Reports 中使用 IronBarcode 與 VB.NET 可以無縫集成條碼,增強業務流程,例如庫存跟踪和生成詳細報告。與基於字體的解決方案相比,它簡化了條碼生成。

IronBarcode 如何改善 Crystal Reports 中的條碼生成?

IronBarcode 提供了一個簡單直觀的 SDK,通過消除複雜的公式,並減少在 Crystal Reports 中的格式限制和打印機兼容性問題,提高了條碼生成。

IronBarcode 能否在 Crystal Reports 中處理不同的條碼格式?

是的,IronBarcode 支持廣泛的條碼格式,使其能在 Crystal Reports 中應用於各種場合,確保兼容性和可靠性。

將 IronBarcode 集成到 VB.NET 項目中是否困難?

不,將 IronBarcode 集成到 VB.NET 項目中設計為用戶友好,提供清晰的文檔和支持,使過程順利高效。

為什麼我應該選擇 IronBarcode 而不是基於字體的條碼解決方案?

IronBarcode 提供了比基於字體的條碼更強大和靈活的解決方案,避免了複雜的公式和打印機問題,並提供廣泛的格式支持和可靠性。

IronBarcode 是否支持直接從 Crystal Reports 打印條碼?

是的,IronBarcode 允許從 Crystal Reports 直接打印條碼,保證高質量輸出並減少其他方法通常與之相關的複雜性。

在 VB.NET 中基於字體的條碼常見問題是什麼?

基於字體的條碼通常涉及複雜的公式、有限的格式選項和打印機兼容性問題,IronBarcode 通過其綜合的 SDK 幫助克服這些問題。

Jordi Bardia
軟體工程師
Jordi 在 Python、C# 和 C++ 上最得心應手,當他不在 Iron Software 展現技術時,便在做遊戲編程。在分担产品测测试,产品开发和研究的责任时,Jordi 为持续的产品改进增值。他说这种多样化的经验使他受到挑战并保持参与, 而这也是他与 Iron Software 中工作一大乐趣。Jordi 在佛罗里达州迈阿密长大,曾在佛罗里达大学学习计算机科学和统计学。