以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=58561)

--  作者:aygp
--  发布时间:2014/10/19 21:04:00
--  [求助]

以下代码有一个问题,如果得分列中没有成绩分数(比赛开始前得分列是没有分数的),执行任何一个操作都会出现错误提示,请问代码如何修改?

 

Dim da As DataTable = DataTables("学生团体总分")

Dim da_source As DataTable = DataTables("比赛得分")

da.DataRows.Clear

Dim dwa As List(Of String) = da_source.GetUniqueValues ("队别 <> \'教工组\'", "单位" )

For Each dw As String In dwa

    Dim ndr As DataRow = da.AddNew

    ndr("单位") = dw

    ndr("总分") = da_source.Compute("sum(得分)", "单位 = \'" & dw & "\'")

Next

 

 

Dim dra As List(Of DataRow) = da.Select("", "总分 desc")

dra(0)("名次") = 1

For i As Integer = 1 To dra.Count - 1

    If dra(i)("总分") = dra(i-1)("总分") Then

        dra(i)("名次") = dra(i-1)("名次")

    Else

        dra(i)("名次") = i+1

    End If

Next

 

Tables("学生团体总分").Sort = "名次"

 

 

Dim db As DataTable = DataTables("教工团体总分")

Dim db_source As DataTable = DataTables("比赛得分")

db.DataRows.Clear

Dim dwb As List(Of String) = db_source.GetUniqueValues ("队别 = \'教工组\'", "单位" )

For Each dw As String In dwb

    Dim ndb As DataRow = db.AddNew

    ndb("单位") = dw

    ndb("总分") = db_source.Compute("sum(得分)", "单位 = \'" & dw & "\'")

Next

 

 

Dim drb As List(Of DataRow) = db.Select("", "总分 desc")

drb(0)("名次") = 1

For i As Integer = 1 To drb.Count - 1

    If drb(i)("总分") = drb(i-1)("总分") Then

        drb(i)("名次") = drb(i-1)("名次")

    Else

        drb(i)("名次") = i+1

    End If

Next

 

Tables("教工团体总分").Sort = "名次"





此主题相关图片如下:截图02.jpg
按此在新窗口浏览图片



--  作者:有点甜
--  发布时间:2014/10/19 21:17:00
--  

 判断一下 dra drb 是否有数据。

 

 If dra.Count > 0 Then

      dra(0)

 End If


--  作者:aygp
--  发布时间:2014/10/19 21:50:00
--  
请问代码放在什么位置合适?
If dra.Count > 0 Then

      dra(0)

 End If


--  作者:有点甜
--  发布时间:2014/10/19 21:51:00
--  

 取 dra(0) drb(0) 之前,就要判断。

[此贴子已经被作者于2014-10-19 21:51:16编辑过]

--  作者:aygp
--  发布时间:2014/10/19 22:04:00
--  
提示错误:

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


--  作者:有点甜
--  发布时间:2014/10/19 22:06:00
--  

 无语了,学了这么久你什么都还不会。

 

Dim dra As List(Of DataRow) = da.Select("", "总分 desc")
If dra.Count > 0 Then
    dra(0)("名次") = 1
   
    For i As Integer = 1 To dra.Count - 1
       
        If dra(i)("总分") = dra(i-1)("总分") Then
           
            dra(i)("名次") = dra(i-1)("名次")
           
        Else
           
            dra(i)("名次") = i+1
           
        End If
       
    Next
End If


--  作者:aygp
--  发布时间:2014/10/19 22:49:00
--  
谢谢甜老师!我会努力学习的,今后还需要多多指教。