Foxtable(狐表)用户栏目专家坐堂 → 优化代码求指教!


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

主题:优化代码求指教!

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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
优化代码求指教!  发帖心情 Post By:2015/1/18 16:37:00 [只看该作者]

Select e.DataCol.Name
    Case "鉴定等级","原技术资格等级","原等级取得时间","身份证号码","原资格证书编号"
        e.DataRow("是否合格") = (e.DataRow("鉴定等级") = "技师" AndAlso e.DataRow("原技术资格等级") = "助理工程师(电力类)" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 4)
        e.DataRow("是否合格") = (e.DataRow("鉴定等级") = "技师" AndAlso e.DataRow("原技术资格等级") = "工程师(电力类)")
        e.DataRow("是否合格") = (e.DataRow("鉴定等级") = "技师" AndAlso e.DataRow("原技术资格等级") = "助理工程师(工业工程)" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 4)
        e.DataRow("是否合格") = (e.DataRow("鉴定等级") = "技师" AndAlso e.DataRow("原技术资格等级") = "工程师(工业工程)")
        e.DataRow("是否合格") = (e.DataRow("鉴定等级") = "技师" AndAlso e.DataRow("原技术资格等级") = "高级工程师(电力类)")
        e.DataRow("是否合格") = (e.DataRow("鉴定等级") = "技师" AndAlso e.DataRow("原技术资格等级") = "高级工程师(工业工程)")
        e.DataRow("是否合格") = (e.DataRow("鉴定等级") = "技师" AndAlso e.DataRow("原技术资格等级") = "高级工" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 3) AndAlso Dim fdr As DataRow = DataTables("证书编号表").Find("身份证号码 = '" & e.DataRow("身份证号码") & "' And 申报鉴定工种 = '" & e.DataRow("申报鉴定工种") & "' And 证书编号 = '" & e.DataRow("原资格证书编号") & "' )
       
       
End Select

请教版主这段判断代码是否可能选择这样的形式写?如行,那么每句之间该用哪个代码连接,我用了OR、ORELSE、ELSE都提示语法错误?

“报名登记表”里有"鉴定等级","原技术资格等级","原等级取得时间","身份证号码","原资格证书编号"等列,另有“证书编号表”有“证书编号”,“身份证号码”,“申报鉴定工种”等列

在报名登记表里的“鉴定等级”列都是“技师,判断条件如下:

1、原技术资格等级=高级工,且原等级取得时间≥3、原资格证书编号=“证书编号表”的证书编号(为证明是同1人所有,加入两表之间身份证号码、申报鉴定工种的判断),如都满足,则“合格”;

2、原技术资格等级="工程师(电力类)"、"工程师(工业工程)"、"高级工程师(电力类)"、"高级工程师(工业工程)",则“合格”;

3、原技术资格等级="助理工程师(电力类)" 或"助理工程师(工业工程)" ,且原等级取得时间≥4,则“合格”。

以上3条只要符合其中1条,则该员工符合报名条件。

 

请版主指教!


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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/18 16:42:00 [只看该作者]

之所以会这样想是因为发现如我更改表中的条件时,即使我让某员工全部符合条件或不符合条件,在“是否合格”列没有变化;另外也是受下面这段代码的启发,想把代码写简洁点,因为我还有“中级工”、“高级工”的代码要加进去,如用IF条件写,那代码会很复杂……

Select e.DataCol.Name
    Case "鉴定等级","申报性质","是否合格"
        e.DataRow("理论考否") = (e.DataRow("鉴定等级") = "技师" AndAlso e.DataRow("申报性质") = "正常申报" AndAlso e.DataRow("是否合格") = True)
End Select


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/18 16:45:00 [只看该作者]

If e.DataRow("鉴定等级") = "技师" Then
    If e.DataRow("原技术资格等级") = "助理工程师(电力类)" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 4 Then
       
        e.DataRow("是否合格") = True
       
    Else If e.DataRow("原技术资格等级") = "工程师(电力类)"
       
        e.DataRow("是否合格") = True
       
    Else If e.DataRow("原技术资格等级") = "助理工程师(工业工程)" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 4 Then
       
        e.DataRow("是否合格") = True
       
    Else If e.DataRow("原技术资格等级") = "工程师(工业工程)"
       
        e.DataRow("是否合格") = True
       
    Else If e.DataRow("原技术资格等级") = "高级工程师(电力类)"
       
        e.DataRow("是否合格") = True
       
    Else If e.DataRow("原技术资格等级") = "高级工程师(工业工程)"
       
        e.DataRow("是否合格") = True
       
    Else If e.DataRow("原技术资格等级") = "高级工" AndAlso Cdate(e.DataRow("原等级取得时间")).Year <= Date.Today.Year - 3
        Dim fdr As DataRow = DataTables("证书编号表").Find("身份证号码 = '" & e.DataRow("身份证号码") & "' And 申报鉴定工种 = '" & e.DataRow("申报鉴定工种") & "' And 证书编号 = '" & e.DataRow("原资格证书编号") & "'")
       
        e.DataRow("是否合格") = fdr IsNot Nothing
       
    Else
       
        e.DataRow("是否合格") = False
       
    End If
   
End If


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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/18 17:04:00 [只看该作者]

谢谢甜版指教!现在可以做到随时变动了。另外代码的行之间是不是有规定格式,要有空行?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/18 17:05:00 [只看该作者]

 不是,空行可以删掉

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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/18 17:06:00 [只看该作者]

图片点击可在新窗口打开查看谢谢甜版!

 回到顶部