以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码修改  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50884)

--  作者:aygp
--  发布时间:2014/5/15 8:39:00
--  代码修改
以下是lsy老师的一段代码,能正常运行。可以把“学籍管理”表中的相关列数据和“课程设置”表中的‘课程’列数据复制到“成绩管理”表中的对应列中。现在还需要把“课程设置”表中的‘课程性质’列的数据也复制到“成绩管理”表的 ‘课程性质’列中。请问以下代码应该如何修改?


DataTables("成绩管理").DataRows.Clear
For Each r As Row In Tables("学籍管理").Rows
    Dim fdr As DataRow = DataTables("课程设置").Find("主考院校 = \'" & r("主考院校") & "\' And 专业 = \'" & r("专业") & "\'")
    If fdr IsNot Nothing Then
        Dim vals As List(Of String) = DataTables("课程设置").GetValues("课程","课程 Is Not Null And 主考院校 = \'" & r("主考院校") & "\' And 专业 = \'" & r("专业") & "\'")
        For Each val As String In vals
            Dim nr As Row = Tables("成绩管理").AddNew
            For Each c As Col In Tables("学籍管理").Cols
                If Tables("成绩管理").Cols.Contains(c.Name) Then
                    nr(c.Name) = r(c.Name)
                End If
            Next
            nr("课程") = val
        Next
    End If
Next

--  作者:Bin
--  发布时间:2014/5/15 8:48:00
--  
同理的,改下表名和列名即可, 楼主能只是盲目的复制代码,要去看以及理解. 否则需求稍加变动又不会了.  教会了1+2  2+1 又不懂了,这样怎么行.

For Each r As Row In Tables("课程设置").Rows
    Dim fdr As DataRow = DataTables("成绩管理").Find("课程 = \'" & r("课程") & "\' and 主考院校 = \'" & r("主考院校") & "\' And 专业 = \'" & r("专业") & "\'")
    If fdr IsNot Nothing Then
         fdr("课程性质")=r("课程性质")
    End If
Next

--  作者:aygp
--  发布时间:2014/5/15 10:30:00
--  
谢谢Bin老师,我正在努力学习代码。以上代码执行完一个学生姓名的‘课程性质’列后,第二个学生姓名及以后 学生姓名的‘课程性质’列都不能复制数据,请老师修改一下。
--  作者:aygp
--  发布时间:2014/5/15 10:32:00
--  
见截图:

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


--  作者:有点甜
--  发布时间:2014/5/15 10:57:00
--  
DataTables("成绩管理").DataRows.Clear
For Each r As Row In Tables("学籍管理").Rows
    Dim fdr As DataRow = DataTables("课程设置").Find("主考院校 = \'" & r("主考院校") & "\' And 专业 = \'" & r("专业") & "\'")
    If fdr IsNot Nothing Then
        Dim vals As List(Of String()) = DataTables("课程设置").GetValues("课程|课程性质","课程 Is Not Null And 主考院校 = \'" & r("主考院校") & "\' And 专业 = \'" & r("专业") & "\'")
        For Each val As String() In vals
            Dim nr As Row = Tables("成绩管理").AddNew
            For Each c As Col In Tables("学籍管理").Cols
                If Tables("成绩管理").Cols.Contains(c.Name) Then
                    nr(c.Name) = r(c.Name)
                End If
            Next
            nr("课程") = val(0)
            nr("课程性质") = val(1)
        Next
    End If
Next
[此贴子已经被作者于2014-5-15 10:57:27编辑过]

--  作者:aygp
--  发布时间:2014/5/15 11:19:00
--  
测试通过。谢谢甜老师!