以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  按条件提取数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157396)

--  作者:天宇科技
--  发布时间:2020/10/14 18:11:00
--  按条件提取数据

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
“绩效明细”表里“工作量”列,在“工作量”表中按如下条件提取。
如果“工作量”表中的“人员类别”列是“统考多科”,那么就在“工作量”表中查找姓名相同“工作量得分”并求和。否则就直接查找到相同姓名的人填充过来。应该怎样写代码呢?

--  作者:天宇科技
--  发布时间:2020/10/14 19:01:00
--  
模仿写了一个,代码有点乱,功能实现了。请蓝版修改下。
Dim dr14 As DataRow
If e.DataCol.name = "教师ID" OrElse e.DataCol.name = "人员类别" OrElse e.DataCol.name = "姓名"
    Dim sum As Double = DataTables("工作量").Compute("Sum(工作量得分)", "教师ID = \'" & e.DataRow("教师ID") & "\' and 人员类别 = \'" & e.DataRow("人员类别") & "\' and 姓名 = \'" & e.DataRow("姓名") & "\'")
    dr14 = DataTables("工作量").find("教师ID = \'" & e.DataRow("教师ID") & "\'")
    
    If e.DataRow.isnull(e.DataCol.name) = False
        If e.DataRow("人员类别") = "统考多科"
            e.DataRow("工作量") = round2(sum,2)
        Else
            Dim dr15 As DataRow
            \',否则在产品表查找同名的产品行,将找到的行赋值给变量dr
            dr15= DataTables("工作量").Find("[姓名] = \'" & e.NewValue & "\'")
            If dr15 IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
                e.DataRow("工作量") = dr14("工作量得分")
            End If
        End If
        
    Else
        e.DataRow("工作量") = Nothing
    End If
End If

[此贴子已经被作者于2020/10/14 19:01:22编辑过]

--  作者:有点蓝
--  发布时间:2020/10/15 8:40:00
--  
If e.DataCol.name = "教师ID" OrElse e.DataCol.name = "人员类别" OrElse e.DataCol.name = "姓名"
    If e.DataRow.isnull("教师ID")  OrElse e.DataRow.isnull("人员类别") OrElse e.DataRow.isnull("姓名")
        e.DataRow("工作量") = Nothing
    Else
        If e.DataRow("人员类别") = "统考多科"
            Dim sum As Double = DataTables("工作量").Compute("Sum(工作量得分)", "教师ID = \'" & e.DataRow("教师ID") & "\' and 人员类别 = \'" & e.DataRow("人员类别") & "\' and 姓名 = \'" & e.DataRow("姓名") & "\'")
            e.DataRow("工作量") = round2(sum,2)
        Else
            Dim dr15 As DataRow = DataTables("工作量").Find("教师ID = \'" & e.DataRow("教师ID") & "\' and [姓名] = \'" & e.NewValue & "\'")
            If dr15 IsNot Nothing Then \'如果找到了同名的产品行,也就是dr不是Nothing
                e.DataRow("工作量") = dr14("工作量得分")
            Else
                e.DataRow("工作量") = Nothing
            End If
        End If
    End If
End If