以文本方式查看主题 - 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事件,记得给扫描枪加一个结束的回车符 |