If e.DataCol.name = "日期" Then '如果更改的日期列
If e.DataRow.IsNull("日期") Then '日期是否为空
e.DataRow("年周次计算_中国标准") = Nothing
Else
Dim d0 As Date = e.DataRow("日期")
Dim d1 As Date
Dim d2 As Date
Dim d3 As Date
Dim d4 As Date
Dim ZY As Integer = d0.Year
d1 = New Date(ZY, 1, 1) '取得该年的第一天
d2 = New Date(ZY, 12, 31) '取得该年的最后一天
d3 = New Date(ZY, 1, 4) '1月4日总是在一年第一个日历星期
d4 = New Date(ZY, 12, 28) '12月28日总是在一年最后一个日历星期
Dim xq As Integer = Weekday(d1, 2) 'weekday是从周一开始计算;weekday返回值从0开始,星期一是第一天。
If d0 >= d1 And d0 < d3 And xq > 4 Then '也就是1月1日是星期四后面的(包括星期5、6、7)
e.DataRow("年周次计算_中国标准") = ZY - 1 & "年第" & Datepart("ww", d0, vbMonday, vbFirstFourDays) & "周"
ElseIf d0 > d4 And d0 <= d2 And xq < 4 Then '也就是12月31日是星期四前面的(包括星期1、2、3)
e.DataRow("年周次计算_中国标准") = ZY + 1 & "年第1周"
Else
e.DataRow("年周次计算_中国标准") = ZY & "年第" & Datepart("ww", d0, vbMonday, vbFirstFourDays) & "周"
End If
End If
End If
明白了,己解决
[此贴子已经被作者于2024/9/26 11:00:20编辑过]