以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 代码优化 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=142981) |
-- 作者:sjf1234 -- 发布时间:2019/11/11 9:54:00 -- 代码优化 我要统计员工出勤和工作内容,下表所提的周运维和月运维等是员工直接提交的表格,在表格统计行,如果提交工作内容为周运维,则周运维列自动等于;感觉这代码可以实现功能,但是太繁琐;有改进的可能吗?小白一枚,请谅解! Select Case e.DataCol.Name Case "站点任务" Dim dr As DataRow = e.DataRow If e.DataRow ("站点任务") = "周运维" Then dr ("周运维") = 1 Else dr ("周运维") = Nothing End If If e.DataRow("站点任务") = "月运维" Then dr ("月运维") = 1 Else dr ("月运维") = Nothing End If If e.DataRow ("站点任务") = "季度运维" Then dr ("季度运维") = 1 Else dr ("季度运维") = Nothing End If If e.DataRow ("站点任务") = "设备故障维修" Then dr ("设备故障维修") = 1 Else dr ("设备故障维修") = Nothing End If If e.DataRow ("站点任务") = "质控考核" Then dr ("质控考核") = 1 Else dr ("质控考核") = Nothing End If If e.DataRow ("站点任务") = "站点安装" Then dr ("站点安装") = 1 Else dr ("站点安装") = Nothing End If If e.DataRow ("站点任务") = "站点调试" Then dr ("站点调试") = 1 Else dr ("站点调试") = Nothing End If If e.DataRow ("站点任务") = "年度巡检" Then dr ("年度巡检") = 1 Else dr ("年度巡检") = Nothing End If If e.DataRow ("站点任务") = "配合环保例行检查" Then dr ("配合环保例行检查") = 1 Else dr ("配合环保例行检查") = Nothing End If If e.DataRow ("站点任务") = "其他" Then dr ("其他") = 1 Else dr ("其他") = Nothing End If End Select |
-- 作者:有点蓝 -- 发布时间:2019/11/11 10:10:00 -- dim str as string = {"周运维","月运维","季度运维"} Dim dr As DataRow = e.DataRow
for each s as string in str dr (s) = IIF(e.DataRow ("站点任务") = s,1,Nothing) next |
-- 作者:sjf1234 -- 发布时间:2019/11/26 10:16:00 -- 老师,提示错误! 错误信息:编译错误,变量“dr”在封闭块中隐藏变量。
|
-- 作者:有点蓝 -- 发布时间:2019/11/26 10:17:00 -- 说明“dr”这个变量重复定义了,换个名称,比如:dr2,dr3...... |
-- 作者:sjf1234 -- 发布时间:2019/11/26 10:22:00 -- 又有新的报错,错误信息:类型”string的1维数组“的值无法转换为”string” |
-- 作者:sjf1234 -- 发布时间:2019/11/26 10:29:00 -- Dim str() As String = {"周运维","月运维","季度运维"} Dim dr1 As DataRow = e.DataRow For Each s As String In str dr1 (s) = IIF(e.DataRow ("站点任务") = s,1,Nothing) Next 老师谢谢,重新修改了,现在可以用了,实在太感谢!
|
-- 作者:sjf1234 -- 发布时间:2019/11/26 12:43:00 -- 老师,还有一个小问题,如同同一天完成两个工作任务, 例如:站点任务列内容为“周运维;月运维,怎么写代码分别让”周运维列”自动=1,”月运维列"=1,这个是在同一表面的! ,
|
-- 作者:有点蓝 -- 发布时间:2019/11/26 13:40:00 -- Dim str() As String = {"周运维","月运维","季度运维"} Dim dr1 As DataRow = e.DataRow For Each s As String In str dr1 (s) = IIF(e.DataRow ("站点任务") like "*" & s & "*",1,Nothing) Next
|