以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 【移动开发】怎么将销售日编号表事件代码,转为JS呢?【已自行解决,附上解决方法备查】 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=102993) |
-- 作者:李孝春 -- 发布时间:2017/6/28 22:37:00 -- 【移动开发】怎么将销售日编号表事件代码,转为JS呢?【已自行解决,附上解决方法备查】 这个是表列变动事件代码,在移动开发中,怎么转为js呢? If e.DataCol.Name = "订单日期" Then If e.DataRow.IsNull("订单日期") Then e.DataRow("销售日编号") = Nothing Else Dim bh As String = Format(e.DataRow("订单日期"),"yyyyMMdd") \'取得订单日编号的8位前缀 If e.DataRow("销售日编号").StartsWith(bh) = False \'如果订单日编号的前8位不符 Dim max As String Dim idx As Integer max = e.DataTable.sqlCompute("Max(销售日编号)","订单日期 = #" & e.DataRow("订单日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大订单日编号 If max > "" Then \'如果存在最大订单日编号 idx = CInt(max.Substring(9,3)) + 1 \'获得最大订单日编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("销售日编号") = bh & "-" & Format(idx,"000") End If End If End If 但是无头绪,怎么根据当前表单中填写的订单日期来自动生成20170626-001之类的编号呢?以此类推002 003 004 【自行解决如下:】 经过查看帮助文件,找到了一个GetOrderID函数,参照写法如下: 新增内部函数GetOrderID 代码如下: Static Lastbh As String \'通过这个Static变量可以访问上一次生成的编号,避免重复Compute Dim prefix As String = Format(Date.now,"yyyyMMdd") \'本次编号前缀 If Lastbh >"" AndAlso Lastbh.SubString(0,8) = prefix Then \'如果上一次生成编号的前缀和本次相同 Lastbh = prefix & "-" & Format(Cint(Lastbh.SubString(8,3)) + 1,"000") \'在上次编号的基础上递增1 Else \'取数据表中同前缀的最大编号 Dim max As String=DataTables("客户资料").SQLCompute("Max(销售日编号)","销售日编号 like \'" & prefix & "%\'") If max = "" Then \'如果不存在同前缀的编号 Lastbh = prefix & "-" & "001" \'同前缀的第一个编号 Else Lastbh = prefix & "-" & Format(CInt(max.SubString(8,3)) + 1,"000") \'在同前缀最大编号的基础上递增1 End If End If Return Lastbh 即生成了20170628-001格式的编号 然后对应在内部函数中进行调用即可 .AddInput("xsrbh","销售日编号","text").Value =Functions.Execute("GetOrderID") [此贴子已经被作者于2017/6/29 9:11:31编辑过]
|