以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 如何将数字转换为字符组合 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=194839) |
||||
-- 作者:jhxb8821 -- 发布时间:2025/1/20 8:43:00 -- 如何将数字转换为字符组合 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 请老师看看例子
这样可以吗 |
||||
-- 作者:有点蓝 -- 发布时间:2025/1/20 9:50:00 --
|
||||
-- 作者:y2287958 -- 发布时间:2025/1/20 10:11:00 -- 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
|
||||
-- 作者:jhxb8821 -- 发布时间:2025/1/20 10:43:00 -- 非常感谢两位老师的代码,假若“户型汇总”列不用字母表示(A,A,B,C),就直接用户型表示(120型, 120型, 90型, 60型),则这个代码又如何变化? |
||||
-- 作者:有点蓝 -- 发布时间:2025/1/20 10:46:00 -- msgbox("应选户型_120型A".split("_")(1)) |
||||
-- 作者:jhxb8821 -- 发布时间:2025/1/20 11:15:00 -- 谢谢老师,代码非常非常的完美 |
||||
-- 作者:jhxb8821 -- 发布时间:2025/1/21 14:05:00 -- 关于按照指定科目的顺序和日期的先后顺序排序的问题? 班级代码 科目 日期 顺序号 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 请教老师上述功能如何才能实现? |
||||
-- 作者:有点蓝 -- 发布时间:2025/1/21 15:15:00 -- 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 |
||||
-- 作者:jhxb8821 -- 发布时间:2025/1/21 16:10:00 -- 非常感谢老师辛苦指教, 上述代码, 出现错误, 提示:变量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"转换无效 输入字符串的格式不正确
|
||||
-- 作者:有点蓝 -- 发布时间:2025/1/21 16:21:00 -- If dr IsNot Nothing Then 改为 If dr IsNot Nothing andalso dr.isnull("顺序号")=false Then
|