Foxtable(狐表)用户栏目专家坐堂 → 如何将数字转换为字符组合


  共有304人关注过本帖树形打印复制链接

主题:如何将数字转换为字符组合

帅哥哟,离线,有人找我吗?
jhxb8821
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:6158 威望:0 精华:0 注册:2016/4/15 22:24:00
如何将数字转换为字符组合  发帖心情 Post By: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
请老师看看例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目250120.rar

这样可以吗

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112023 积分:570293 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/20 9:50:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目250120.zip


 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4815 积分:34927 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:6158 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2025/1/20 10:43:00 [只看该作者]

非常感谢两位老师的代码,假若“户型汇总”列不用字母表示(A,A,B,C),就直接用户型表示(120型, 120型, 90型, 60型),则这个代码又如何变化?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112023 积分:570293 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/20 10:46:00 [只看该作者]

msgbox("应选户型_120型A".split("_")(1))


 回到顶部
帅哥哟,离线,有人找我吗?
jhxb8821
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:6158 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By:2025/1/20 11:15:00 [只看该作者]

谢谢老师,代码非常非常的完美

 回到顶部
帅哥哟,离线,有人找我吗?
jhxb8821
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:6158 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By: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
请教老师上述功能如何才能实现?
     

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112023 积分:570293 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:893 积分:6158 威望:0 精华:0 注册:2016/4/15 22:24:00
  发帖心情 Post By: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"转换无效
输入字符串的格式不正确

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112023 积分:570293 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/1/21 16:21:00 [只看该作者]

If dr IsNot Nothing Then
改为
If dr IsNot Nothing andalso dr.isnull("顺序号")=false Then

 回到顶部
总数 19 1 2 下一页