Foxtable(狐表)用户栏目专家坐堂 → 这样的代码还能优化吗


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

主题:这样的代码还能优化吗

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
这样的代码还能优化吗  发帖心情 Post By:2012/11/28 8:42:00 [只看该作者]

有个产品信息表,里面有下面这些列,写个段代码,前辈们帮我看看还能优化吗,或者是能不能组合到一起,总感觉这样的代码太繁琐了
图片点击可在新窗口打开查看此主题相关图片如下:66666666666.jpg
图片点击可在新窗口打开查看
Select Case e.DataCol.name
    Case "电雕在制明细"
        If e.DataRow.IsNull("电雕在制明细") Then
            e.DataRow("电雕在制支数")="0"
        Else
            e.DataRow("电雕在制支数") = e.newvalue.split(",").Length
        End If
End Select
Select Case e.DataCol.name
    Case "机加在制明细"
        If e.DataRow.IsNull("机加在制明细") Then
            e.DataRow("机加在制支数")="0"
        Else
            e.DataRow("机加在制支数") = e.newvalue.split(",").Length
        End If
End Select
Select Case e.DataCol.name
    Case "镀铜在制明细"
        If e.DataRow.IsNull("镀铜在制明细") Then
            e.DataRow("镀铜在制支数")="0"
        Else
            e.DataRow("镀铜在制支数") = e.newvalue.split(",").Length
        End If
End Select
Select Case e.DataCol.name
    Case "车研在制明细"
        If e.DataRow.IsNull("车研在制明细") Then
            e.DataRow("车研在制支数")="0"
        Else
            e.DataRow("车研在制支数") = e.newvalue.split(",").Length
        End If
End Select
Select Case e.DataCol.name
    Case "镀铬在制明细"
        If e.DataRow.IsNull("镀铬在制明细") Then
            e.DataRow("镀铬在制支数")="0"
        Else
            e.DataRow("镀铬在制支数") = e.newvalue.split(",").Length
        End If
End Select
[此贴子已经被作者于2012-11-28 8:43:12编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/28 8:49:00 [只看该作者]

普通的:

 

Select Case e.DataCol.name
    Case "电雕在制明细"
        If e.DataRow.IsNull("电雕在制明细") Then
            e.DataRow("电雕在制支数")="0"
        Else
            e.DataRow("电雕在制支数") = e.newvalue.split(",").Length
        End If
    Case "机加在制明细"
        If e.DataRow.IsNull("机加在制明细") Then
            e.DataRow("机加在制支数")="0"
        Else
            e.DataRow("机加在制支数") = e.newvalue.split(",").Length
        End If
    Case "镀铜在制明细"
        If e.DataRow.IsNull("镀铜在制明细") Then
            e.DataRow("镀铜在制支数")="0"
        Else
            e.DataRow("镀铜在制支数") = e.newvalue.split(",").Length
        End If
    Case "车研在制明细"
        If e.DataRow.IsNull("车研在制明细") Then
            e.DataRow("车研在制支数")="0"
        Else
            e.DataRow("车研在制支数") = e.newvalue.split(",").Length
        End If
    Case "镀铬在制明细"
        If e.DataRow.IsNull("镀铬在制明细") Then
            e.DataRow("镀铬在制支数")="0"
        Else
            e.DataRow("镀铬在制支数") = e.newvalue.split(",").Length
        End If
End Select

 

邪门的:

 

If  e.DataCol.name.EndsWith("在制明细") Then
    Dim zh As String = e.DataCol.name
    zh = zh.SubString(0, zh.Length-2) & "支数"
    If e.DataRow.IsNull(e.DataCol.name) Then
        e.DataRow(zh) = 0
    Else
        e.DataRow(zh) = e.newvalue.split(",").Length
    End If
End If


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


加好友 发短信
等级:三尾狐 帖子:732 积分:5491 威望:0 精华:14 注册:2011/8/28 12:49:00
  发帖心情 Post By:2012/11/28 9:19:00 [只看该作者]

超级精简的:

 

Dim ArrColName1() As String = {"电雕在制明细","机加在制明细","镀铜在制明细","车研在制明细","镀铬在制明细"}
Dim ArrColName2() As String = {"电雕在制支数","机加在制支数","镀铜在制支数","车研在制支数","镀铬在制支数"}
Dim Index As Integer = Array.IndexOf(ArrColName1,e.DataCol.name)
If Index < 0 Then Return
e.DataRow(ArrColName2(Index)) = IIF(e.DataRow.IsNull(e.DataCol.name),0,e.newvalue.split(",").Length)


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/28 9:22:00 [只看该作者]

图片点击可在新窗口打开查看

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2012/11/28 9:25:00 [只看该作者]

学习了,研究中

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2012/11/28 9:44:00 [只看该作者]

用了三楼的代码,好像有问题,如果在制明细值为空,就会报错,应该是在制明细为空时,在制支数是“0”
还有,这句“If Index < 0 Then Return”是什么意思?
[此贴子已经被作者于2012-11-28 9:52:41编辑过]

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


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

 看了下代码,应该不会报错才对。可能是其他的代码引起的错误。

 那句的意思是如果找不到对应的列,就不执行下面的代码。

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2012/11/28 10:35:00 [只看该作者]

哦,我再仔细找找

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


加好友 发短信
等级:童狐 帖子:209 积分:1607 威望:0 精华:0 注册:2012/9/7 20:24:00
  发帖心情 Post By:2012/11/28 10:52:00 [只看该作者]

还是不行,我新建了个项目也不行,如下图:我在镀铬在制明细里输入值,镀铬在制支数自动输值,但是我把镀铬在制明细的值删除后,就报错了
图片点击可在新窗口打开查看此主题相关图片如下:666.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/11/28 10:56:00 [只看该作者]

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


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