以文本方式查看主题

-  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
.......