以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]请教编号代码中的一个问题!!!! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=27518) |
||||
-- 作者:gaoyong30000 -- 发布时间:2013/1/3 16:10:00 -- [求助]请教编号代码中的一个问题!!!! 下面这段代码功能是在当前节点,添加下级节点! Dim trv As WinForm.TreeView = Forms("ERP界面").Controls("综合部物品分类设置TreeView1") If trv.SelectedNode.Text <> "全部" Then Dim t As Integer = trv.SelectedNode.Text.LastIndexOf(" ") Dim s As String = trv.SelectedNode.Text.SubString(0,t) Dim i As Integer = s.Length - 2 Dim s2,s3,s4 As String Dim dr,dr1,dr2 As DataRow Dim n,n1 As Integer Dim dt As DataTable = Tables("综合部物品分类设置_综合部物品分类设置Table1").DataTable dr = dt.AddNew s2 = "SubString(分类编号, 1, " & t & ") = \'" & s & "\' And len(分类编号) = " & t+2 dr1 = dt.Find(s2) If dt.DataRows.count =1 OrElse dr1 Is Nothing Then \'dt.DataRows.count =1 是因为有dr = dt.AddNew,增加了一行 dr("分类编号") = s & "01" Else For Each dr2 In dt.Select(s2) n = right(dr2("分类编号"),2) n1= iif(n1<n,n,n1) Next For n = 1 To n1 If dt.Find("分类编号 = \'" & s & Functions.Execute("数值转换2",n) & "\'") Is Nothing Then dr("分类编号") = s & Functions.Execute("数值转换2",n) Exit For Else dr("分类编号") = s & Functions.Execute("数值转换2",n+1) End If Next End If End If With Tables("综合部物品分类设置_综合部物品分类设置Table1") .Position = .Rows.Count - 1 End With 此主题相关图片如下:未命名.jpg 按道理1004的下级节点中 100402 没有此编号 因此会执行代码中的红色部分 也就是 n=2, dr("分类编号") = s & Functions.Execute("数值转换2",n) dr("分类编号") = “100402”,结果却是执行的else下的代码 变成了 100411..... 调试了半天不知道为什么~~~~ [此贴子已经被作者于2013-1-3 16:11:00编辑过]
|
||||
-- 作者:e-png -- 发布时间:2013/1/3 18:03:00 -- Dim s As String = trv.SelectedNode.Text.SubString(0,t) 用SubString(s.Length - 6) 不是简单吗。
s2 = "SubString(分类编号, 1, " & t & ") = \'" & s & "\' And len(分类编号) = " & t+2 是不是dr(···) SubString(分类编号, 1, " & t & ") 有这种表达方式?
、、、、、、 后面没看完了。。。 呵呵。 |
||||
-- 作者:gaoyong30000 -- 发布时间:2013/1/4 9:11:00 -- 测试正常啊 这种表达不妥??? |
||||
-- 作者:lin_hailun -- 发布时间:2013/1/4 9:34:00 -- msgbox("分类编号 = \'" & s & Functions.Execute("数值转换2",n) & "\'"), 看看条件是否正确。弹出对应的值,然后思考一下就行了的。 |
||||
-- 作者:gaoyong30000 -- 发布时间:2013/1/7 16:05:00 -- 用msgbox测试值 此主题相关图片如下:未命名2.jpg 显示为100402 那就应该执行上面红色段的代码 ,但是结果还是添加的1004011 另外我在命令窗口里测试的 output.show(Tables("综合部物品分类设置_综合部物品分类设置Table1").DataTable.Find("分类编号 = \'1008\'") Is Nothing) 结果 为true 很奇怪 为true了 但是没执行代码 |
||||
-- 作者:lin_hailun -- 发布时间:2013/1/7 16:11:00 -- 做个例子,或者联系客服QQ远程协助。 |
||||
-- 作者:gaoyong30000 -- 发布时间:2013/1/7 17:04:00 --
点击左边的目录树 1004 然后点击 下级按钮(别点同级,同级里代码是错误的) 就发现100402 编号空缺,但是还是增加了100411这个号码 麻烦您了~~~ |
||||
-- 作者:lin_hailun -- 发布时间:2013/1/7 18:24:00 -- 是很滑稽,我也调了半天,待会再看看。 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/1/7 19:17:00 -- 看不懂你的代码,很乱,这么简单的要求,并不应该写这么复杂的代码。
红色的部分帮你修正了一下,可以避免你说的问题。
Dim trv As WinForm.TreeView = e.form.Controls("TreeView1")
|
||||
-- 作者:gaoyong30000 -- 发布时间:2013/1/8 16:09:00 -- 这代码可以了 老大 您这代码 我理解了! 但是我那代码 是什么情况? 为什么会有问题? 我分析不出来~~~ |