以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 一个非常奇怪的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40611) |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/24 18:31:00 -- 一个非常奇怪的问题 我在出入库明细表的datacolchanged设置了下面的代码意图从货品信息表中获取已存档的货品信息,原来一直运行得很好,后来到货的条码有些不太规范,夹杂了*-以及空格等字符,我就编写了红色部分的代码来清除它们,小规模试了还是能运行。可是今天我发现有相当一部分条码,明明已经有存档的货品信息,还是要让新增,刚开始以为是存档的货号列字符的输入法与现在不同,于是复制新读取的条码上包含的货号字符替换掉原来存档的货号字符,不解决问题。又以为是红色部分的代码造成的,于是注释掉它们,还是不行。插入蓝色字体的测试代码,显示hh为空。 太郁闷了!
If pause = True Then Dim sp As New DotNetSpeech.SpVoice() cmd.C messagebox.show(hh) |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/24 19:15:00 -- 现在甚至直接复制货品信息中的货号加上正常的后缀字符都不行了! |
||||
-- 作者:有点甜 -- 发布时间:2013/9/24 19:18:00 -- datacolchanged事件,是值已经写进去才触发的,也就是不规则的数据已经被写入了。 你可以把红色代码放到datacolchanging事件里去,输入不规范的时候,修改e.newvalue的值。 |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/24 20:02:00 -- 谢谢提醒,是应该这样,我先试试,不行再请教。 |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/24 20:14:00 -- 现在直接崩溃退出了! |
||||
-- 作者:有点甜 -- 发布时间:2013/9/24 20:18:00 -- 不可能吧,你执行什么操作崩溃退出的? 你删除datacolchanged相关的代码,把下面的代码复制到到datacolchanging里去,然后修改表的值,看看效果 If e.DataCol.Name = "产品条码" Then Dim lst As new List(Of String) \'清除条码的无效字符 For i As Integer = 0 To tm.length - 1 lst.Add(tm.SubString(i,1)) Next If lst.count > 0 Then tm = Nothing For i As Integer = 0 To lst.count - 1 If Char.IsLetterOrDigit(lst(i)) Then tm = tm & lst(i) End If Next tm = tm.Trim() e.newValue = tm End If End If |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/24 20:37:00 -- 系统重启后没有崩溃,但问题依然存在 |
||||
-- 作者:有点甜 -- 发布时间:2013/9/24 20:40:00 -- 上个例子看看,没理由的。可能不是那段代码的问题。 |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/24 20:57:00 -- 我也估计不是代码的问题,因为换一个值就一切正常。 |
||||
-- 作者:东坡一剑 -- 发布时间:2013/9/25 4:03:00 --
关于求助的说明: 1、请最好将文件放到F盘,因为外部数据源的链接设置在F盘 2、项目打开后的录入窗口中双击某个目录树节点,然后单击确定,填入到货箱号库区、库位信息(随便填),单击开始入库,产品条码进入可编辑状态。 3、窗口的表中已经有两个条码,轮流复制到产品条码控件,回车,即可发现我所描述的问题。 4、如果弹出新增货品信息窗口,在货号中删除后面的*号和多余的字符,保留8位数,回车,将会发现出问题的货号其实已经存档了完整的信息。 5、打开数据源的货品信息表,也可以发现出问题的货号其实真的存档了。 6、提示:几天前,这项功能其实没有任何问题,所有已经存档的东西都可以提取出来。 7、总之劳驾诸位帮帮忙,这里先谢了! [此贴子已经被作者于2013-9-25 8:27:34编辑过]
|