以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  扫描枪录入文本框报错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=184978)

--  作者:shqpldczj
--  发布时间:2023/1/28 20:52:00
--  扫描枪录入文本框报错
我的窗口有个文本框通过扫描枪录入文本,原来都好的今天不知道怎么在录入时报错索引超出数组界限,我直接把文本粘贴进文本框又是正常的,不知道错在哪里谢谢老师请教一下
--  作者:有点蓝
--  发布时间:2023/1/29 8:36:00
--  
文本框有什么事件代码?
--  作者:shqpldczj
--  发布时间:2023/1/29 8:57:00
--  textchanged事件
Dim bx As WinForm.ComboBox = e.Form.Controls("报销人员")
\'Dim fj As WinForm.FileManager = e.Form.Controls("附件")
Dim v As WinForm.TextBox = e.Form.Controls("二维码")
If v.text = Nothing
    Return
    msgbox("二维码不能为空!")
End If
Dim Tel As String = v.Text
Dim Parts() As String = Tel.Split(",")
Dim ht As String = parts(3)
Dim dr2 As DataRow
dr2 = DataTables("发票").sqlFind("[发票号码] = \'" & ht & "\'")
If dr2 IsNot Nothing
    msgbox("发票相同号码已登记,请检查发票是否正确!")
    v.text = Nothing
    Return
Else
    Tables("发票").Current("发票号码") = Parts(3)
    Dim rq As String = Parts(5)
    Tables("发票").Current("开票日期") = rq.SubString(0,4) & "-" & rq.SubString(4,2) & "-" & rq.SubString(6,2)
    Tables("发票").Current("金额") = Parts(4)
    Tables("发票").Current("报销人员") = bx.Value
    Tables("发票").Current("录入人员") = _username
    Tables("发票").Current("录入时间") = Date.Today()
    DataTables("发票").Save
End If

这个是文本框的textchanged事件,我感觉就是扫描枪只输入了一个字符就报错了

--  作者:有点蓝
--  发布时间:2023/1/29 9:07:00
--  
应该是扫描的结果没有这么多项,判断一下再用

Dim Tel As String = v.Text
msgbox(tel)
Dim Parts() As String = Tel.Split(",")
msgbox(Parts.length)
if Parts.length >3 then
Dim ht As String = parts(3)
……
if Parts.length >5 then
Dim rq As String = Parts(5)
……
end if
endif

--  作者:shqpldczj
--  发布时间:2023/1/29 14:01:00
--  扫描输入文本框
01,32, ,23312000000001052437,1200.00,20230111, ,FC1F
这个是我扫描的字符串我加了判断后现在扫描的结果是0,,

我直接粘贴字符串就不报错,扫描就报错了

[此贴子已经被作者于2023/1/29 14:04:23编辑过]

--  作者:有点蓝
--  发布时间:2023/1/29 14:03:00
--  
扫描的结果和上面的判断没有什么关系。如果msgbox(tel)显示为0,,要么条码有问题,要么扫描枪有问题
--  作者:shqpldczj
--  发布时间:2023/1/29 14:25:00
--  扫描
我现在只能改在validating事件一样的代码可以扫描输入完整字符串,就是整个操作要多一步
--  作者:有点蓝
--  发布时间:2023/1/29 14:27:00
--  
不要使用textchanged事件,改为valuechanged事件,或者keydown事件,记得给扫描枪加一个结束的回车符