在条形码报告中使用条形码字体码 128

使用以下步骤将报告中的缺省条形码字体替换为条形码字体码 128。码 128 的打印字段略小于缺省字段 (条形码字体码 39 QuarterInch)。

注意 Infor 的条形码字体码 128 仅支持打印当前以缺省条形码字体可打印的字符。

注意: 对于 Code128、Code128Narrow 和 Code128VeryNarrow,建议使用 48 或更大的字号。对于 Code128Wide 和 Code128VeryWide,建议使用 36 或更大的字号。

如果使用该字段,必须将 English 作为 Windows 的区域设置。

以下是代码 128A 和代码 128B 的区别:

  • 代码 128A 不支持小写字母,但是代码 128B 支持小写字母。
  • 代码 128A 能够编译符号、数字 0 到 9、大写字母 (不是小写字母)、标准 ASCII 控制码和下表中显示的特殊字符。代码 128B 能够编译符号、数字 0 到 9、大写字母和小写字母和下表中显示的特殊字符。

建议您使用代码 128B;这通常是适用于大部分环境的最佳选择。

下表显示了代码 128 特殊字符:

ASCII 码    代码 128A    代码 128B   
32 FNC3 FNC3
33 FNC2 FNC2
34 班次 班次
35 代码 C 代码 C
36 代码 B FNC4
37 FNC4 代码 A
38 FNC1 FNC1
(FNC = 功能键)

要将报告中的缺省条形码字体替换为 Code128 字体:

  1. 在 Visual Studio 2008 中,打开 .rdl 文件,从中可以使用条形码字体 Code128 替换现有条形码字体(.rdl 文件通常存储在工具服务器的 TaskMan\Report 文件夹中)。
  2. 在 rdl 文件中包括以下功能之一:

    Code128 A:

    
    Public Function GetBarCodeOutput t(ByVal inputValue As String) As String
    Dim CheckDigit As Integer = 0 
    Dim i As Integer = 0 
    Dim BarCodeOutput As String = ""
    Dim BarCodeInput As String 
    Dim BarCodeTemp  As String = ""
    Dim SingleByte  As Integer = 0 
    BarCodeInput = inputValue.ToUpper()
    For i = 1 To Len(BarCodeInput)
        SingleByte = Asc(Mid(BarCodeInput, i,1))
        BarCodeTemp = BarCodeTemp + Chr(SingleByte - 32)
    Next 
    CheckDigit = 1
    For i = 1 To Len(BarCodeTemp) 
       SingleByte = Asc(Mid(BarCodeTemp, i,1))
       CheckDigit = (CheckDigit + (SingleByte * i)) Mod 103
    Next 
    BarCodeTemp = BarCodeTemp + Chr(CheckDigit)
    For i = 1 To Len(BarCodeTemp)
        SingleByte = Asc(Mid(BarCodeTemp, i, 1))     
        If SingleByte =0 Then
           BarCodeOutput = Chr(0)
        ElseIf SingleByte > 0 And SingleByte < 94 Then
           BarCodeOutput = BarCodeOutput + Chr(SingleByte + 32)
        Else
           BarCodeOutput = BarCodeOutput + Chr(SingleByte + 103)
        End If
    Next        
    Return  "µ"+ BarCodeOutput + Chr(196)
    End Function

    Code128 B:

    
    Public Function GetBarCodeOutput(ByVal inputValue As String) As String
    Dim CheckDigit As Integer = 0 
    Dim i As Integer = 0 
    Dim BarCodeOutput As String = ""
    Dim BarCodeInput As String 
    Dim BarCodeTemp  As String = ""
    Dim SingleByte  As Integer = 0 
    BarCodeInput = inputValue.ToUpper()
    For i = 1 To Len(BarCodeInput)
        SingleByte = Asc(Mid(BarCodeInput, i,1))
        BarCodeTemp = BarCodeTemp + Chr(SingleByte - 32)
    Next 
    CheckDigit = 1
    For i = 1 To Len(BarCodeTemp) 
       SingleByte = Asc(Mid(BarCodeTemp, i,1))
       CheckDigit = (CheckDigit + (SingleByte * i)) Mod 103
    Next 
    BarCodeTemp = BarCodeTemp + Chr(CheckDigit)
    For i = 1 To Len(BarCodeTemp) 
        SingleByte = Asc(Mid(BarCodeTemp, i, 1))     
        If SingleByte =0 Then
           BarCodeOutput = Chr(0)
        ElseIf SingleByte > 0 And SingleByte < 94 Then
           BarCodeOutput = BarCodeOutput + Chr(SingleByte + 32)
        Else
           BarCodeOutput = BarCodeOutput + Chr(SingleByte + 103)
        End If
    Next        
    Return "¶"+ BarCodeOutput + Chr(196)
    End Function
    	
  3. 右键单击条形码对象并选择编辑公式。在“公式编辑器”中,将看到一个类似与此的公式:
    ="*" & Replace(UCase(Trim(Fields!item.Value)),"", "_") & "*"

    在此例中,Trim(Fields!item.Value) 是一个数据库字段,可用条形码替代。报告也能包括存储过程的公式

  4. 用您在步骤 2 添加的功能调用替换一行公式:
    
    =Code.GetBarCodeOutput(FieldValue)
    	

    其中,FieldValue 是一个数据字段或存储过程字段,可用条形码替代,例如:

    
    =Code.GetBarCodeOutput(Trim(Fields!item.Value))
  5. 单击关闭按钮关闭公式编辑器。
  6. 右键单击条形码对象并选择格式字段
  7. 字体选项卡上,选择适当的字体和字号。例如,选择字体代码 128,字号 48。
  8. 单击确定
  9. 保存 .rdl 文件并测试报告。