发布网友 发布时间:2022-04-08 09:59
共2个回答
懂视网 时间:2022-04-08 14:21
code128b(Tar As Range) ‘128B码:ChrW(204). Dim s$, i%, ss$, j%, curR%, checkB% curR = Tar.Row s = Tar.Value checkB = 1 ‘开始位的码值为104 mod 103 =1 For i = 1 To Len(s) ss = Mid(s, i, 1) j = Asc(ss) ‘不过滤无效字符,比如汉字. If j < 135 Then j = j - 32 ElseIf j > 134 Then j = j - 100 End If checkB = (checkB + i * j) Mod 103 ‘计算校验位 Next If checkB < 95 And checkB > 0 Then ‘有的资料直接求103的模,解说不充分,因为有的校验位超过127时,系统会"吃"掉它们(连带休止符). checkB = checkB + 32 ElseIf checkB > 94 Then ‘字体设置时,字模被定义了2个值.观察字体文件时能发现. checkB = checkB + 100 End If code128b = ChrW(204) & s & IIf(checkB, ChrW(checkB), Chr(32)) & ChrW(206) End FUNCTION根据这段代码,突然想到是不是可以直接移植到Sql Server能,经过打印,扫描试验确实可以,代码如下:
create FUNCTION StrToCode128B( @Str NVARCHAR(200))--128B码:ChrW(204) RETURNS NVARCHAR(200) AS BEGIN DECLARE @checkB INT DECLARE @i INT ,@j INT DECLARE @str2 NVARCHAR(2) SET @i=1 SET @checkB = 1 --开始位的码值为104 mod 103 =1 -- WHILE @i <= LEN(@Str) BEGIN SET @str2 = SUBSTRING(@Str,@i,1) SET @j = ASCII(@str2) --不过滤无效字符,比如汉字 IF @j<135 BEGIN SET @j=@j-32 END ELSE IF @j>134 BEGIN SET @j=@j-100 END SET @checkB = (@checkB + @i * @j) % 103 --计算校验位 SET @i=@i+1 END IF @checkB<95 AND @checkB>0 --有的资料直接求103的模,解说不充分,因为有的校验位超过127时,系统会"吃"掉它们(连带休止符). BEGIN SET @checkB = @checkB + 32 END ELSE IF @checkB > 94 -- ‘字体设置时,字模被定义了2个值.观察字体文件时能发现. BEGIN SET @checkB = @checkB + 100 END RETURN NCHAR(204) + @Str + CASE WHEN @checkB>0 THEN NCHAR(@checkB) ELSE NCHAR(32) END + NCHAR(206) END
以上在转化的过程中主要遇到如下问题:
1.VBA中的ASC()函数对应SQL的函数是ASCII()
2.VBA中的ChrW()函数对应的SQL函数是 NCHAR()。这点需要特别注意,因为ChrW和HCHAR都是unicode字符。而如果用CHAR的话就是不行,刚开始没注意,用CHAR函数,拼接后,返回的字符串始终为空(或不可见字符), 结果调试好久都不知道问题出在哪里。
利用SQL为Code128码添加起始符和休止符
标签:
热心网友 时间:2022-04-08 11:29
交叉25码(code 2 of 5 Interleaved)是一种黑色线条(Bar)和白色线条(Space)都可以表示信息的高密度、连续、非定长具有自校验功能的双向条形码,广泛应用于仓储、包装、运输等领域。
交叉25码由左侧空白区、起始符、数据符、终止符及右侧空白区构成,第一个数字编码在黑色线条中,第二个编码在白色线条中,这种自检代码提供了高数据容量。因此,交叉25码只能编码偶数个数字,如果位数是奇数,则前面会自动插入零。接下来我们看一下中琅条码生成器中生成交叉25码(code 2 of 5 Interleaved)的方法。
在中琅条码生成器中新建标签,设置标签大小行列等信息,标签新建完成之后是一个空白标签,我们可以通过左边工具栏的“绘制一维条码”按钮生成交叉25码。条码生成器生成的条形码默认的类型是code128,所以我们需要打开条形码属性,把条形码类型修改为交叉25码(code 2 of 5 Interleaved)。
关于交叉25码的数据可以在条形码属性-数据源中修改添加,数据对象类型支持“手动输入”“数据库导入”“随机生成”“序列生成”等等。其中“数据库导入”又包含多种方式(TXT、Excel、MySQL、SQL Server等)具体的操作方法可以参考视频教程:如何导入Excel表数据批量生成条形码。
最后通过中琅条码生成器的打印预览按钮,预览查看一下批量生成的交叉25码。