以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如果,跨表引用出现报错就不会赋值了,怎么修改?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=116080)

--  作者:jjjeyes
--  发布时间:2018/3/19 17:12:00
--  [求助]如果,跨表引用出现报错就不会赋值了,怎么修改?
If e.DataCol.Name = "学号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("姓名") = Nothing
        e.DataRow("班级") = Nothing
        e.DataRow("大一成绩") = Nothing
        e.DataRow("大二成绩") = Nothing
        e.DataRow("大三成绩") = Nothing
        e.DataRow("大四成绩") = Nothing
    Else
        Dim dr As DataRow
        Dim d1 As DataRow
        Dim d2 As DataRow
        Dim d3 As DataRow
        Dim d4 As DataRow
        dr = DataTables("测试成绩详细").Find("[学号] = \'" & e.NewValue & "\'")
        d1 = DataTables("测试成绩详细").Find("[学号] = \'" & e.NewValue & "\' And [年级编号] = \'41\'")
        d2 = DataTables("测试成绩详细").Find("[学号] = \'" & e.NewValue & "\' And [年级编号] = \'42\'")
        d3 = DataTables("测试成绩详细").Find("[学号] = \'" & e.NewValue & "\' And [年级编号] = \'43\'")
        d4 = DataTables("测试成绩详细").Find("[学号] = \'" & e.NewValue & "\' And [年级编号] = \'44\'")
        If dr IsNot Nothing Then
            e.DataRow("姓名") = dr("姓名")
            e.DataRow("班级") = dr("班级")
            e.DataRow("大一成绩") = d1("总分")
            e.DataRow("大二成绩") = d2("总分")
            e.DataRow("大三成绩") = d3("总分")
            e.DataRow("大四成绩") = d4("总分")
        End If
    End If
End If

以上为代码。
但是,会出现一个问题,如果遇到在“测试成绩详细”表中找不到对应的d1,或者d2,或者d3,或者d4。就会报错,并且不给后面的“大一成绩”,“大二成绩”,“大三成绩”,“大四成绩”赋值。
请问,我在哪里加这个判断语句?怎么修改?

--  作者:有点甜
--  发布时间:2018/3/19 17:15:00
--  

改成,参考红色代码修改

 

If dr IsNot Nothing Then
    e.DataRow("姓名") = dr("姓名")
    e.DataRow("班级") = dr("班级")
    If d1 Is Nothing Then
        e.DataRow("大一成绩") = Nothing
    Else
        e.DataRow("大一成绩") = d1("总分")
    End If
    If d2 Is Nothing Then
        e.DataRow("大二成绩") = Nothing
    Else
        e.DataRow("大二成绩") = d2("总分")
    End If

    e.DataRow("大三成绩") = d3("总分")
    e.DataRow("大四成绩") = d4("总分")
End If