Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共19 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

1楼
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
请老师看看例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目250120.rar

这样可以吗
2楼
有点蓝 发表于:2025/1/20 9:50:00
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目250120.zip

3楼
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
4楼
jhxb8821 发表于:2025/1/20 10:43:00
非常感谢两位老师的代码,假若“户型汇总”列不用字母表示(A,A,B,C),就直接用户型表示(120型, 120型, 90型, 60型),则这个代码又如何变化?
5楼
有点蓝 发表于:2025/1/20 10:46:00
msgbox("应选户型_120型A".split("_")(1))

http://www.foxtable.com/webhelp/topics/1338.htm
6楼
jhxb8821 发表于:2025/1/20 11:15:00
谢谢老师,代码非常非常的完美
7楼
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
请教老师上述功能如何才能实现?
     
8楼
有点蓝 发表于: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
9楼
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"转换无效
输入字符串的格式不正确
10楼
有点蓝 发表于:2025/1/21 16:21:00
If dr IsNot Nothing Then
改为
If dr IsNot Nothing andalso dr.isnull("顺序号")=false Then
共19 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02930 s, 4 queries.