以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何格式化表格数据?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=141221)

--  作者:旭日生
--  发布时间:2019/9/24 15:53:00
--  如何格式化表格数据?
列表格中的如果为数字,可以用如下代码格式化:
If e.DataCol.Name = "盒号"  Then
    If e.DataRow("盒号") IsNot Nothing  Then
        e.DataRow("盒号") = Format(val(e.DataRow("盒号")), "0000")
    End If
End If

但特殊情况下需要加字母,类似下面。如何写代码呢?
数据       格式化数据
1     →     0001
2      →    0002
3      →    0003
4A      →    004A
4B      →     004B
5      →    0005


[此贴子已经被作者于2019/9/24 15:53:07编辑过]

--  作者:有点蓝
--  发布时间:2019/9/24 16:20:00
--  
If e.DataCol.Name = "盒号"  Then
    If e.DataRow("盒号") IsNot Nothing  Then
dim i as integer = val(e.DataRow("盒号"))
if i > 0 then
        e.DataRow("盒号") = Format(i, "0000")
else
e.DataRow("盒号") = e.DataRow("盒号").PadLeft(4,"0")
end if
    End If
End If

--  作者:旭日生
--  发布时间:2019/9/24 17:03:00
--  
这段代码存在漏洞,如果全是字母没问题,如果类似“数字+字母”(如2A),是不行的。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:高亮查询.table



--  作者:有点蓝
--  发布时间:2019/9/24 17:29:00
--  
If e.DataCol.Name = "盒号"  Then
    If e.DataRow("盒号") IsNot Nothing  Then
        Dim i As Integer
        If Integer.TryParse(e.DataRow("盒号"),i)Then
            e.DataRow("盒号") = Format(i, "0000")
        Else
            e.DataRow("盒号") = e.DataRow("盒号").PadLeft(4,"0")
        End If
    End If
End If

--  作者:旭日生
--  发布时间:2019/9/24 17:40:00
--  
版主业务精熟,令人佩服;服务及时到位,让人赞叹!