跳至页脚内容
USING IRONBARCODE

How to Print Barcodes in Crystal Reports with VB.NET

将条形码添加到Crystal Reports可以提高您的业务流程,使其更快更准确,从库存跟踪到生成详细报告。 如果您曾尝试在VB.NET中使用基于字体的条形码,您就会知道,复杂的公式、有限的格式和打印机问题可能会让人感到沮丧。

幸运的是,现代条形码生成器SDK,例如IronBarcode,使创建和打印条形码变得简单。 在本指南中,我们将引导您完成所有步骤:在Visual Studio中设置IronBarcode,生成条形码,并直接在Crystal Reports中显示它们。 最终您将能够轻松生成专业且可靠的条形码。

在Crystal Reports中打印条形码的方法是什么?

在Crystal Reports中添加条形码有两种主要方法:基于字体的方法和SDK解决方案。

基于字体的方法需要在字体文件夹中安装特殊的条形码字体(True Type字体),并使用公式或用户函数库(UFL)来编码数据。 虽然这种方法可以工作,但通常涉及复杂的编码公式、有限的条形码格式支持(如Code 39或数据矩阵),以及跨不同打印机和系统可能出现的字体渲染问题,如微软的字体渲染文档中所述。

基于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. 在字段浏览器中,右键单击“数据库字段”并选择“数据库专家”

如何在Crystal Reports中用VB.NET打印条形码: 图1 - 数据库专家窗口

  1. 连接到您的数据库并选择包含条形码图像的表
  2. 将条形码图像字段拖到报表设计界面上
  3. 根据需要调整字段的大小和位置

您的报告设计器应类似于此:

如何在Crystal Reports中用VB.NET打印条形码: 图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、打印表单或模板中。

如何在Crystal Reports中用VB.NET打印条形码: 图3 - 使用Crystal Reports查看器显示生成的条形码

常见问题和解决方案是什么?

在使用VB.NET在Crystal Reports中实现条形码时可能会出现几个问题:

  • 条形码模糊:使用myBarcode.ResizeTo()增强分辨率,增加尺寸。
  • 扫描问题:确保条形码周围有足够的空白空间,或为Code 39添加星号标记。
  • 数据库连接问题:检查您的新OleDbConnection或新OleDbDataAdapter参数。 确保正确的数据集绑定。
  • 数据类型问题:始终使用图像或varbinary(max)字段来存储条形码二进制数据。
  • 条形码不显示:验证Crystal Reports查看器是否具有访问数据库、DataTable或文件资源的适当权限。
  • 系统问题:确保安装了所有必需的DLL,您的项目引用了正确的IronBarcode DLL。
  • 字体或打印机问题:确认True Type字体已安装在字体文件夹中,并为您的打印机配置。

有关其他故障排除支持,请访问IronBarcode故障排除指南

结论

使用VB.NET和IronBarcode在Crystal Reports中实现条形码为报表增强提供了一种可靠且简单的解决方案。 这种基于SDK的方法消除了字体依赖,同时提供了广泛的自定义选项。 无论是使用数据库还是DataTable,您都可以在您的Crystal Reports应用程序中实现包括数据矩阵、Code 39和其他格式的专业条形码。

通过下载IronBarcode的免费试用版,今天就开始在您的项目中实现条形码,探索其全部功能以在VB.NET中在Crystal Reports中打印条形码。

常见问题解答

在使用VB.NET的Crystal Reports中使用IronBarcode有什么好处?

在使用VB.NET的Crystal Reports中使用IronBarcode可以无缝集成条形码,增强如跟踪库存和生成详细报告等业务流程。它比基于字体的解决方案简化了条形码生成。

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 在佛罗里达州迈阿密长大,并在佛罗里达大学学习计算机科学和统计学。