利用SQL为Code128码添加起始符和休止符
在利用code128码字体打印条码是,打印出来的条形码,扫描枪会出现认不出的情况,这种情况是由于直接将文本设置为code128字体而没有给他们指定起始符和休止符引起的。
经过查资料获发现好多人遇到这样的问题,特别是利用word,excel直接设置code128字体打印时,一般都会曲线这种问题。
发现网上有个牛人在excel下用VBA写了一个为文本添加起始符和休止符的函数。确实好用
代码如下:
- Function code128b(Tar As Range) '128B码:ChrW(204).
- Dim s$, i%, ss$, j%, curR%, checkB%
- curR = Tar.Row
- s = Tar.Value
- checkB = '开始位的码值为104 mod 103 =1
- For i = To Len(s)
- ss = Mid(s, i, )
- j = Asc(ss) '不过滤无效字符,比如汉字.
- If j < Then
- j = j -
- ElseIf j > Then
- j = j -
- End If
- checkB = (checkB + i * j) Mod '计算校验位
- Next
- If checkB < And checkB > Then '有的资料直接求103的模,解说不充分,因为有的校验位超过127时,系统会"吃"掉它们(连带休止符).
- checkB = checkB +
- ElseIf checkB > Then '字体设置时,字模被定义了2个值.观察字体文件时能发现.
- checkB = checkB +
- End If
- code128b = ChrW() & s & IIf(checkB, ChrW(checkB), Chr()) & ChrW()
- 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码添加起始符和休止符的更多相关文章
- 利用SQL注入漏洞登录后台的实现方法
利用SQL注入漏洞登录后台的实现方法 作者: 字体:[增加 减小] 类型:转载 时间:2012-01-12我要评论 工作需要,得好好补习下关于WEB安全方面的相关知识,故撰此文,权当总结,别无它意.读 ...
- 利用SQL注入漏洞登录后台
所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询 ...
- 利用SQl对数据库实行数据拆分与组合
利用SQl对数据库实行数据拆分与组合实现提供以下几种方案: 方法一: WITH CTE AS (SELECT A.Id,A.[Uid],UserName FROM (SELECT A.[id], RE ...
- android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)
写在最前(这是对上一篇博文的问题做的更新[android利用zbar二维码扫描]) project下载 zbarLib编译project project下载0积分 bug 在2.3的系统中Hol ...
- ASP.net(C#)利用SQL Server实现注册和登陆功能
说说我现在吧,楼主现在从事的事IT行业,主攻DotNet技术:当然这次上博客园我也是有备而来,所有再次奉献鄙人拙作,以飨诸位,望诸位不吝赐教. 世界上大多数的工作都是熟练性的工种,编程也不例外,做久了 ...
- .NET 利用反射将对象数据添加到数据库
.NET 利用反射将对象数据添加到数据库 一些小型的项目,在不使用其他的框架(LINQ,NHibernate,EF等等框架)的前提下,这时候一些反复的增删改查就会让我们感到极其的繁琐,厌烦,为了避 ...
- KPPW2.5 漏洞利用--SQL注入
KPPW2.5 漏洞利用--SQL注入 SQL注入--布尔型盲注 环境搭建 1,集成环境简单方便,如wamp,phpstudy.... 2,KPPW v2.2源码一份(文末有分享)放到WWW目录下面 ...
- SQLmap是一款用来检测与利用SQL漏洞的注入神器。
sqlmap 重要参考 http://www.kali.org.cn/forum-75-1.html SQLmap是一款用来检测与利用SQL漏洞的注入神器.开源的自动化SQL注入工具,由Python写 ...
- PHP二维码添加logo的方法
PHP二维码添加logo的方法<pre> public function createqcode($text,$id){ include '/phpqrcode/phpqrcode.php ...
随机推荐
- android 基础题
1. Android的四大组件是哪些,它们的作用? (1).Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很 ...
- Jade教程
Jade 是一个高性能的模板引擎,它深受 Haml 影响,它是用 JavaScript 实现的,并且可以供 Node 使用. 如何在jade模板上加业务逻辑 if res.length==5 h1= ...
- Innodb ,MyISAM
1. InnoDB不支持FULLTEXT类型的索引. 2. InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算 ...
- SpringMVC中fastjson支持jsonp的实现
前边一篇文章主要说了下前端处理jsonp的方式,这篇主要介绍了后台接收和响应jsonp的一种方式 继承fastjson消息转换器类:com.alibaba.fastjson.support.sprin ...
- .net下web页生产一维条形码
code-39 前台 aspx <asp:Image ID="imgBandCode" runat="server" ImageUrl="~/W ...
- PYTHON-面向对象 类 绑定方法
面向对象三大特性(*****) 1继承 1. 什么是继承 继承是一种新建类的方式,新建的类称之为子类/派生类,被继承的类称之为父类/基类/超类 继承与现实生活中的继承一个意思 (例如 小明继承小明他爹 ...
- 使用navicat premium将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL
有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle. 很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面. ...
- Redis五大数据类型以及操作
目录: 一.redis的两种链接方式 二.redis的字符串操作(string) 三.redis的列表操作(list) 四.redis的散列表操作(类似于字典里面嵌套字典) 五.redis的集合操作( ...
- VIM 报错
syntax error: unexpected end of file if 没配对 在最后加 fi 试试 环境变量用不了 export PATH=/usr/bin:/usr/sbin:/bin:/ ...
- zoj3469 区间dp好题
/* 按坐标排序 以餐厅为起点向两边扩展区间 dp[i][j][0]表示送完区间[i,j]的饭后停留在左边的代价 dp[i][j][1]表示送完区间[i,j]的饭后停留在右边的代价 */ #inclu ...