以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 二维码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=88411) |
-- 作者:huhu -- 发布时间:2016/8/2 11:53:00 -- 二维码 datacolchanging代码: If e.DataCol.Name = "SN" Then Dim str As String = e.NewValue Dim idx1 As Integer = str.IndexOf("MAC:") Dim idx2 As Integer = str.IndexOf("H/W:") Dim length As Integer If str.Contains("SN:") Then length = IIF(idx1 <> -1,idx1-3,IIF(idx2 <> -1,idx2-4,str.Length - 3)) e.NewValue = str.SubString(3, length) Else e.NewValue =str End If If str.Contains("MAC:") Then If idx2 = -1 Then e.DataRow("MAC") = str.SubString(idx1+4) Else e.DataRow("MAC") = str.SubString(idx1+4, idx2-idx1-4) End If End If If str.Contains("H/W:") Then e.DataRow("HW") = str.substring(idx2+4) End If End If 正常情况扫描到一个二维码为:SN:123 MAC:111 HW: 444 那么根据datacolchanging代码,自动就是SN列为123,MAC列为111,HW列为444。 可是有一部分二维码格式不是作为一行的,是分行的。如: SN:123 MAC:111 HW:444. 那么这样一扫二维码,就变为了第一行SN列为123. 第一行MAC列和HW都为空了。第二行的SN列为111,第三行的SN列为444. 需求是,如果遇到这样的分行的二维码格式。希望能做到把第二行的SN值111和444写入到第一行对应的MAC列和HW列。并把第二行和第三行删除掉
[此贴子已经被作者于2016/8/2 11:53:35编辑过]
|
-- 作者:cbt -- 发布时间:2016/8/2 12:04:00 -- http://www.foxtable.com/webhelp/index.htm?page=2629.htm 回车 换行 [此贴子已经被作者于2016/8/2 12:04:36编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2016/8/2 12:38:00 -- 替换掉回车换行就行了。 Dim s As string = 原来的值 s= s.Replace(vblf,"").Replace(vbcr,"") |
-- 作者:Hyphen -- 发布时间:2016/8/2 13:57:00 -- 进入编辑状态再扫描,然后事件中用个空格替换掉换行符 dim sn = e.NewValue.Replace(chr(10), "").Replace(chr(13), " ") |
-- 作者:huhu -- 发布时间:2016/8/2 16:08:00 -- StartEditing这个事件在哪呢?我好像没找到。 |
-- 作者:Hyphen -- 发布时间:2016/8/2 16:21:00 -- 帮助里搜索“StartEditing” |
-- 作者:huhu -- 发布时间:2016/8/2 16:33:00 -- 表属性---事件里面仅仅找到 StartEdit
开始编辑的时候执行。 不是这个吧 |
-- 作者:Hyphen -- 发布时间:2016/8/2 16:55:00 -- StartEdit才是事件,StartEditing是table的函数 |
-- 作者:huhu -- 发布时间:2016/8/2 16:57:00 -- 进入编辑状态再扫描,然后事件中用个空格替换掉换行符 dim sn = e.NewValue.Replace(chr(10), "").Replace(chr(13), " ") 这个代码需要写到哪了去?
|
-- 作者:Hyphen -- 发布时间:2016/8/2 17:24:00 -- 比如1楼的代码 datacolchanging代码: If e.DataCol.Name = "SN" Then Dim str As String = e.NewValue.Replace(chr(10), "").Replace(chr(13), " ") Dim idx1 As Integer = str.IndexOf("MAC:") Dim idx2 As Integer = str.IndexOf("H/W:") Dim length As Integer If str.Contains("SN:") Then length = IIF(idx1 <> -1,idx1-3,IIF(idx2 <> -1,idx2-4,str.Length - 3)) e.NewValue = str.SubString(3, length) Else .......
|