以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  复杂的二维码提取信息  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=138122)

--  作者:石四
--  发布时间:2019/7/23 12:02:00
--  复杂的二维码提取信息
从二维码扫出如下字符串:
{"D":"DL0859019072212","S":"S-00008590","W":"1400XCXC","I":[{"I":"24561556","N":"100.0","P":"20190722"},{"I":"24561559","N":"50.0","P":"20190722"}]}
需要提取蓝色字体的字符串,第一关就卡壳了:
Dim s As String = "{"D":"DL0859019072212","S":"S-00008590","W":"1400XCXC","I":[{"I":"24561556","N":"100.0","P":"20190722"},{"I":"24561559","N":"50.0","P":"20190722"}]}"

报“应为语句结束”
这个要怎么处理?


--  作者:有点蓝
--  发布时间:2019/7/23 12:07:00
--  
看看:http://www.foxtable.com/webhelp/topics/0211.htm
--  作者:石四
--  发布时间:2019/7/23 14:03:00
--  

如果字符串中本身包括双引号,那么用每两个双引号表示一个双引号。
将下面的代码复制到命令窗口执行:

Dim s1 As String = "利马是有名的""无雨之都"""
Output.Show(s1)


--  作者:石四
--  发布时间:2019/7/23 14:05:00
--  
但是二维码扫出来的字符串就自带好多双引号,这么说没办法引用了
--  作者:有点蓝
--  发布时间:2019/7/23 14:15:00
--  
扫描出来的内容直接使用即可,比如:Dim s As String = e.form.controls("扫描结果文本框").text
--  作者:石四
--  发布时间:2019/7/23 14:21:00
--  
Dim s As String = e.Form.Controls("TextBox1").text
这样引用可以。

--  作者:石四
--  发布时间:2019/7/24 12:23:00
--  
用扫码枪扫二维码进窗口中textbox控件,信息不全导致代码不能执行。

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190724121710.png
图片点击可在新窗口打开查看


--  作者:石四
--  发布时间:2019/7/24 12:24:00
--  
扫进记事本完整的字符串:
{"D":"DL0859019072304","S":"S-00008590","W":"1400KBKB","I":[{"I":"24511187","N":"60.0","P":"20190723"},{"I":"24531126","N":"60.0","P":"20190723"},{"I":"24531223","N":"120.0","P":"20190723"},{"I":"24566065","N":"60.0","P":"20190723"}]}
[此贴子已经被作者于2019/7/24 12:54:51编辑过]

--  作者:石四
--  发布时间:2019/7/24 12:56:00
--  
代码:
Dim s As String = e.Form.Controls("TextBox3").text
e.Form.Controls("Label18").text = s.SubString(6,15)

Dim i As Integer
For i = 60 To 240  Step 40
    If s.IndexOf("{",i) = -1 Then
        Exit For
    End If
    Dim jh As String = s.SubString(s.IndexOf("{",i)+6,s.IndexOf("N",i+12) - 3 - s.IndexOf("{",i)-6)
    Dim sl As Integer = s.SubString(s.IndexOf("N",i+12)+4,s.IndexOf("P",i+22) - 3 - s.IndexOf("N",i+12)-4)
    Tables("销售出库_Table1").AddNew()
    Dim r As Row = Tables("销售出库_Table1").Current
    r("零件图号") = jh
    r("数量") = sl
Next


--  作者:石四
--  发布时间:2019/7/24 12:59:00
--  
把记事本完整的字符串copy到textbox3,执行代码通过。
直接扫二维码进textbox3,由于字符串不全,执行代码报错。