Foxtable(狐表)用户栏目专家坐堂 → [求助]请教编号代码中的一个问题!!!!


  共有9993人关注过本帖树形打印复制链接

主题:[求助]请教编号代码中的一个问题!!!!

帅哥哟,离线,有人找我吗?
gaoyong30000
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
[求助]请教编号代码中的一个问题!!!!  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1695 积分:10725 威望:0 精华:0 注册:2009/10/25 16:45:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/1/4 9:11:00 [只看该作者]

 测试正常啊 这种表达不妥???

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/4 9:34:00 [只看该作者]

 msgbox("分类编号 = '" & s & Functions.Execute("数值转换2",n) & "'"), 看看条件是否正确。弹出对应的值,然后思考一下就行了的。

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/1/7 16:05:00 [只看该作者]

用msgbox测试值

图片点击可在新窗口打开查看此主题相关图片如下:未命名2.jpg
图片点击可在新窗口打开查看
显示为100402
那就应该执行上面红色段的代码  ,但是结果还是添加的1004011


另外我在命令窗口里测试的
 output.show(Tables("综合部物品分类设置_综合部物品分类设置Table1").DataTable.Find("分类编号 = '1008'") Is Nothing)

结果
为true    

很奇怪  为true了 但是没执行代码

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/7 16:11:00 [只看该作者]

 做个例子,或者联系客服QQ远程协助。

 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/1/7 17:04:00 [只看该作者]

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.rar


点击左边的目录树 1004  然后点击  下级按钮(别点同级,同级里代码是错误的)  就发现100402 编号空缺,但是还是增加了100411这个号码

麻烦您了~~~

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2013/1/7 18:24:00 [只看该作者]

 是很滑稽,我也调了半天,待会再看看。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/1/7 19:17:00 [只看该作者]

看不懂你的代码,很乱,这么简单的要求,并不应该写这么复杂的代码。

 

红色的部分帮你修正了一下,可以避免你说的问题。

 

Dim trv As WinForm.TreeView = e.form.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("表A").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)
            End If
        Next
        If dr.Isnull("分类编号") Then
            dr("分类编号") = s & Functions.Execute("数值转换2",n1+1)
        End If


    End If
End If
With Tables("表A")
    .Position = .Rows.Count - 1
End With


 回到顶部
帅哥哟,离线,有人找我吗?
gaoyong30000
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1165 积分:9032 威望:0 精华:1 注册:2011/5/25 16:33:00
  发帖心情 Post By:2013/1/8 16:09:00 [只看该作者]

 这代码可以了 

老大 您这代码 我理解了!


但是我那代码 是什么情况?  为什么会有问题?  我分析不出来~~~

 回到顶部
总数 16 1 2 下一页