我有一个会返回如下数据的查询:
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