Foxtable(狐表)用户栏目专家坐堂 → 二维码


  共有5264人关注过本帖树形打印复制链接

主题:二维码

帅哥哟,离线,有人找我吗?
huhu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
二维码  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/2 16:08:00 [显示全部帖子]

StartEditing这个事件在哪呢?我好像没找到。

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/2 16:33:00 [显示全部帖子]

表属性---事件里面仅仅找到
StartEdit

开始编辑的时候执行。

不是这个吧


 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/2 16:57:00 [显示全部帖子]

进入编辑状态再扫描,然后事件中用个空格替换掉换行符

dim sn = e.NewValue.Replace(chr(10), "").Replace(chr(13), " ")

这个代码需要写到哪了去?

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/2 17:32:00 [显示全部帖子]

哦。这样。那问题是str结尾必须是回车才行,不然没发换到下一行了。
If e.keyCode = Keys.Enter AndAlso e.Table.Cols(e.Table.colSel).Name = "SN" Then
    e.cancel = True
    e.Table.addnew
End If

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/2 17:34:00 [显示全部帖子]

哦。最后一行回车是扫描枪加上去的吧。那应该就没关系了。
替换换行和回车都是对扫描枪扫到的内容替换,完了又有一个扫描枪的回车。对的吧。

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/8 13:58:00 [显示全部帖子]

还是不行。
输入原值为:
SN:20014036809
MAC:84:79:73:7f:2d:43
H/W:MFRP1280320240DC00
If e.DataCol.Name = "SN" Then
    Dim str As String = e.NewValue.replace(chr(10),"").replace(chr(13),"")
    msgbox(e.NewValue)-----弹出来为SN:20014036809,MAC和H/W呢?
    msgbox(str)---弹出来为SN:20014036809。不应为为SN:20014036809MAC:84:79:73:7f:2d:43H/W:MFRP1280320240DC00?
    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

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/8 14:16:00 [显示全部帖子]

输入的是这个啊。二维码扫描出来就是下面3行。作为一个e.newvalue。
SN:20014036809
MAC:84:79:73:7f:2d:43
H/W:MFRP1280320240DC00
[此贴子已经被作者于2016/8/8 14:17:16编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/8 14:29:00 [显示全部帖子]

扫描枪扫出来的就是上面3行数据。
我把这3行复制到SN列,msgbox(e.newvalue) = SN:20014036809
而非上面3行数据。

 回到顶部
帅哥哟,离线,有人找我吗?
huhu
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2016/8/8 14:34:00 [显示全部帖子]

SN为20014036809,这个是对的。
但是mac和hw列都是为空。且MAC值和hW值都作为了新增行的SN列值。

 回到顶部
总数 25 1 2 3 下一页