从SQL数据集中填写缺少的周数

时间:2014-08-13 20:46:34

标签: arraylist vbscript asp-classic

我有一个会返回如下数据的查询:

Year    WeekSub
2013    52
2013    53
2014    1
2014    2
2014    4
2014    7

2014年第3周的通知,缺少5-6。

我需要做的是将这些项添加到数组,其中数组将具有Year + WeekSub,我需要填写缺失的值,并确保在执行此操作时不创建第54周。当我到达某一年的第53周时,我需要将下一周(新年的第1周)添加到阵列中。

我正在开发一些代码来尝试这样做,但它开始变得非常复杂,我想知道是否有更简单,更有效的方法。

If IsArray(arrRawData) Then
    For RawData = 0 to UBound(arrRawData,2)
        If strYearNum & ":" & strYearNum <> arrRawData(0, RawData) & ":" & arrRawData(0, RawData) Then

                If CInt(arrRawData(1, RawData)) - CInt(strWeekNum) = 1 Then
                    If Not dicHeader.Exists(arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData)) Then
                        dicHeader.Add arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData), arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData)
                    End If
                Else
                        If strWeekNum + 1 < 54 Then
                            If Not dicHeader.Exists(arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData) + 1) Then
                                dicHeader.Add arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData) + 1, arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData) + 1
                            End If
                        Else
                            If Not dicHeader.Exists(arrRawData(0, RawData) + 1 & ", Wk " & arrRawData(1, RawData) - 53) Then
                                dicHeader.Add arrRawData(0, RawData) + 1 & ", Wk " & arrRawData(1, RawData) - 53, arrRawData(0, RawData) + 1 & ", Wk " & arrRawData(1, RawData) - 53
                            End If
                        End If
                End If

                    If Not dicHeader.Exists(arrRawData(0, RawData) & ", Wk " & CInt(arrRawData(1, RawData)) + 1) Then
                        dicHeader.Add arrRawData(0, RawData) & ", Wk " & CInt(arrRawData(1, RawData)), arrRawData(0, RawData) & ", Wk " & CInt(arrRawData(1, RawData))
                    End If
                    If strWeekNum + 1 < 54 Then
                        If Not dicHeader.Exists(arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData) + 1) Then
                            dicHeader.Add arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData) + 1, arrRawData(0, RawData) & ", Wk " & arrRawData(1, RawData) + 1
                        End If                              
                    Else
                        If dicHeader.Exists(arrRawData(0, RawData) + 1 & ", Wk " & arrRawData(1, RawData) - 53) Then
                            dicHeader.Add arrRawData(0, RawData) + 1 & ", Wk " & arrRawData(1, RawData) - 53, arrRawData(0, RawData) + 1 & ", Wk " & arrRawData(1, RawData) - 53
                        End If
                    End If

            strWeekNum = arrRawData(1, RawData)
            strYearNum = arrRawData(0, RawData)
        End If
    Next

0 个答案:

没有答案