Select Case e.DataCol.Name
Case "应选户型_120型A", "应选户型_90型B", "应选户型_60型C", "应选户型_30型D"
If e.DataRow.IsNull("应选户型_120型A") OrElse e.DataRow.IsNull("应选户型_90型B") OrElse e.DataRow.IsNull("应选户型_60型C") OrElse e.DataRow.IsNull("应选户型_30型D") Then '身份证号码是否为空
e.DataRow("户型汇总") = Nothing '如果为空,则清除出生日期
Else
'如何将数字转换成字符组合?
e.DataRow("户型汇总") =
End If
End Select
Select Case e.DataCol.Name
Case "应选户型_120型A", "应选户型_90型B", "应选户型_60型C", "应选户型_30型D"
Dim s As String = String .Join ("", Enumerable.repeat("A", e.DataRow("应选户型_120型A"))) &
String .Join ("", Enumerable.repeat("B", e.DataRow("应选户型_90型B"))) &
String .Join ("", Enumerable.repeat("C", e.DataRow("应选户型_60型C"))) &
String .Join ("", Enumerable.repeat("D", e.DataRow("应选户型_30型D")))
e.DataRow("户型汇总") = String.join(",", s.tolist)
End Select
关于按照指定科目的顺序和日期的先后顺序排序的问题?
班级代码 科目 日期 顺序号
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
请教老师上述功能如何才能实现?
Select e.DataCol.Name
Case "班级代码", "科目", "日期"
If e.DataRow.IsNull("班级代码") OrElse e.DataRow.IsNull("科目") OrElse e.DataRow.IsNull("日期") Then
e.DataRow("顺序号") = Nothing
Else
Dim dict As New Dictionary(Of String, Integer)
dict.Add("语文", 1)
dict.Add("数学", 2)
Dim dr As DataRow = e.DataTable.find("班级代码='" & e.DataRow("班级代码") & "' and 科目='" & e.DataRow("科目") & "' and 日期<=#" & e.DataRow("日期") & "#", "日期 desc")
Dim m As Integer = 1
Dim p As String = e.DataRow("班级代码") & "-" & dict(e.DataRow("科目"))
If dr IsNot Nothing Then
Dim s As String = dr("顺序号")
Dim m As Integer = CInt(Right(s, 1)) + 1
End If
e.DataRow("顺序号") = p & m
For Each dr In e.DataTable.select("班级代码='" & e.DataRow("班级代码") & "' and 科目='" & e.DataRow("科目") & "' and 顺序号>='" & e.DataRow("顺序号") & "' and _identify<>" & e.DataRow("_identify"), "日期")
m += 1
dr("顺序号") = p & m
Next
End If
End Select
非常感谢老师辛苦指教,
上述代码, 出现错误, 提示:变量m在封闭块中隐藏变量
错误代码:Dim m As Integer = CInt(Right(s, 1)) + 1
将Dim m As Integer = CInt(Right(s, 1)) + 1修改为:m = CInt(Right(s, 1)) + 1
运行错误, 提示:调用的目标发生异常
从字符串""到类型"integer"转换无效
输入字符串的格式不正确
If dr IsNot Nothing Then改为
If dr IsNot Nothing andalso dr.isnull("顺序号")=false Then