以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]FORMAt位数  (http://www.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
msgbox(str)