Foxtable(狐表)用户栏目专家坐堂 → 【移动开发】怎么将销售日编号表事件代码,转为JS呢?【已自行解决,附上解决方法备查】


  共有1722人关注过本帖树形打印复制链接

主题:【移动开发】怎么将销售日编号表事件代码,转为JS呢?【已自行解决,附上解决方法备查】

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
【移动开发】怎么将销售日编号表事件代码,转为JS呢?【已自行解决,附上解决方法备查】  发帖心情 Post By:2017/6/28 22:37:00 [只看该作者]

这个是表列变动事件代码,在移动开发中,怎么转为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编辑过]

 回到顶部