以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]FORMAt位数 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=116024) |
-- 作者:blsu33 -- 发布时间:2018/3/18 23:07:00 -- [求助]FORMAt位数 老师, Output.Show(Format(1,"000")) 如果我知道一行数据可能是位数不固定怎么写,如最后一个会计科目 可能是 1001 也可能是下级 100101例如、 Dim dr As DataRow=DataTables("Main").Find("公司=\'111\'","科目 desc") If dr IsNot Nothing Dim dr1 As DataRow=DataTables("Main").AddNew dr1("科目")=Format(val(dr("科目"))+1,"0000")‘ 这块是1001的 如果变成100101 就得写成 Format(val(dr("科目"))+1,"000000")‘ 怎么能不变应付万变 End If |
-- 作者:有点甜 -- 发布时间:2018/3/19 8:50:00 -- 1、位数的信息你如何获取,能否获取到位数?
2、有位数以后,就动态生成,如 http://www.foxtable.com/webhelp/scr/0243.htm
|
-- 作者:blsu33 -- 发布时间:2018/3/20 21:22:00 -- 老师, 想要得到结果 "lr0102" 下列代码得到 lr10121 应该怎么写 Dim s1 As String ="lr0101" Dim s3 As String=s1.SubString(0,2) & Format(val(s1.SubString(3))+1,s1.SubString(3).PadLEFT(s1.Length-2,"0")) Output.Show(s3) |
-- 作者:有点蓝 -- 发布时间:2018/3/20 21:47:00 -- 规则是什么?按顺序加一? Dim s As String = "lr0101" Dim p As String = s.SubString(0,2) s = s.Replace(p,"") Dim s3 As String = p & cstr((val(s) + 1)).PadLEFT(s.Length,"0") Output.Show(s3) |
-- 作者:blsu33 -- 发布时间:2018/3/20 22:18:00 -- 老师, 正常这样写没问题dr1("id").SubString(0,2) & cstr((val(dr1("id").SubString(3)) + 1)).PadLEFT(dr1("id").Length-2,"0") 但是放到自定义函数中怎么写也不对 应该怎么写 str &= "dr1(""id"")=dr1(""id"").SubString(0,2) & cstr((val(dr1(""id"").SubString(3)) + 1)).PadLEFT(dr1(""id"").Length-2,""0"") & vbcrlf Functions.remove("test") Functions.Add("test",str) Functions.Complie() Functions.Execute("test",e) |
-- 作者:有点蓝 -- 发布时间:2018/3/20 22:24:00 -- 完整代码贴出来 |
-- 作者:blsu33 -- 发布时间:2018/3/20 22:27:00 -- [此贴子已经被作者于2018/3/21 8:40:55编辑过]
|
-- 作者:有点蓝 -- 发布时间:2018/3/20 22:57:00 -- str &= "dr1(""pnlposition")=""zj""" & vbcrlf str &= "dr1(""ckname"")=""" & vars("childcknamectl") & """" & vbcrlf str &= "dr1("idtype")=""" & dr("controlid") & """" & vbcrlf str &= "dr1.save" & vbcrlf 最后Output.Show(str) 运行时先打开命令窗口,看生成的真正代码是什么,复制到命令窗口执行在排查错误 |
-- 作者:blsu33 -- 发布时间:2018/3/20 23:57:00 -- 老师 不是报错是想知道5楼合成字符串怎么写 正常这样写没问题 dr1("id").SubString(0,2) & cstr((val(dr1("id").SubString(3)) + 1)).PadLEFT(dr1("id").Length-2,"0") 例如是 "LR" & "0102" 但是放到自定义函数中 & 还有 % 什么的,& 本来就是连接符,怎么能变成字符,怎么写也不对 应该怎么写 str &= "dr1(""id"")=dr1(""id"").SubString(0,2) & cstr((val(dr1(""id"").SubString(3)) + 1)).PadLEFT(dr1(""id"").Length-2,""0"") & vbcrlf Functions.remove("test") Functions.Add("test",str) Functions.Complie() Functions.Execute("test",e) 例如 这样写 也不对 str &= "dr2("id")=dr1("id").SubString(0,2) & "&" & cstr((val(dr1("id").SubString(3)) + 1)).PadLEFT(dr1("id").Length-2,"0") & vbcrlf [此贴子已经被作者于2018/3/21 8:56:02编辑过]
|
-- 作者:有点甜 -- 发布时间:2018/3/21 9:26:00 -- 不是很简单?直接写即可,如
Dim str = "dr1(""id"")=dr1(""id"").SubString(0,2) & cstr((val(dr1(""id"").SubString(3)) + 1)).PadLEFT(dr1(""id"").Length-2,""0"") " & vbcrlf |