关于按照指定科目的顺序和日期的先后顺序排序的问题?
班级代码 科目 日期 顺序号
701 物理 2023-09-03
701 物理 2024-07-18
701 物理 2024-03-09
701 语文 2023-10-05
701 语文 2024-02-03
701 语文 2024-08-23
701 数学 2023-09-23
701 数学 2024-07-28
701 数学 2024-03-19
701 化学 2023-10-25
701 化学 2024-02-13
701 化学 2024-08-23
701 英语 2023-09-23
701 英语 2024-07-18
701 英语 2024-03-19
我希望一是按照科目“语文、数学、英语、物理、化学”的顺序排序,二是按照日期的先后顺序排序,顺序号的格式701+科目编号1位+日期编号2位,排序后效果如下:
班级代码 科目 日期 顺序号
701 语文 2023-10-05 701-11
701 语文 2024-02-03 701-12
701 语文 2024-08-23 701-13
701 数学 2023-09-23 701-21
701 数学 2024-03-19 701-22
701 数学 2024-07-28 701-23
701 英语 2023-09-23 701-31
701 英语 2024-03-19 701-32
701 英语 2024-07-18 701-33
701 物理 2023-09-03 701-41
701 物理 2024-03-09 701-42
701 物理 2024-07-18 701-43
701 化学 2023-10-25 701-51
701 化学 2024-02-13 701-52
701 化学 2024-08-23 701-53
当新增一个日期时,顺序号会自动变化,日期排在最前的顺序号则自动调整到最前面,比如:
当增加一行:701 语文 2023-08-15
则语文的顺序号自动调整为如下:
班级代码 科目 日期 顺序号
701 语文 2023-08-15 701-11
701 语文 2023-10-05 701-12
701 语文 2024-02-03 701-13
701 语文 2024-08-23 701-14
当增加一行:701 化学 2024-05-15
则化学的顺序号自动调整为如下:
班级代码 科目 日期 顺序号
701 化学 2023-10-25 701-51
701 化学 2024-02-13 701-52
701 化学 2024-05-15 701-53
701 化学 2024-08-23 701-54
Select e.DataCol.Name
Case "班级代码", "科目", "日期"
If e.DataRow.IsNull("班级代码") OrElse e.DataRow.IsNull("科目") OrElse e.DataRow.IsNull("日期") Then
e.DataRow("顺序号") = Nothing
Else
Dim names() As String = {"语文", "数学", "英语", "物理", "化学"}
Dim bh As String = e.DataRow("班级代码") & "-" '生成编号的前缀
If e.DataRow("顺序号") Then
Dim max As String
Dim idx As Integer
max =
If max > "" Then
idx = CInt(max.Substring(max.length - 2)) + 1
Else
idx = 1
End If
e.DataRow("顺序号") = lb & Format(idx, "00")
End If
End If
End Select
请教老师上述功能如何才能实现?