加多一个判断便可。
If e.DataCol.Name = "日期" Then
If e.DataRow.IsNull("日期") Then
e.DataRow("年") = Nothing
e.DataRow("月") = Nothing
e.DataRow("季") = Nothing
Else
Dim d As Date = e.NewValue
If d.Month = 12 And d.day >= 23 Then
e.DataRow("年") = d.Year +1
Else
e.DataRow("年") = d.Year
End If
If d.Day < 23 Then
e.DataRow("月") = d.Month
Else If d.Month = 11 Then
e.DataRow("月") = 12
Else
e.DataRow("月") = (d.Month + 1) Mod 12
End If
If d.day > 22 Then
e.DataRow("季") = DatePart("q",d.AddDays(10))
Else
e.DataRow("季") = DatePart("q",d)
End If
End If
End If