Foxtable(狐表)用户栏目专家坐堂 → 关于自动编号的问题


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

主题:关于自动编号的问题

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


加好友 发短信
等级:婴狐 帖子:7 积分:105 威望:0 精华:0 注册:2017/9/19 11:54:00
关于自动编号的问题  发帖心情 Post By:2017/9/19 12:03:00 [只看该作者]

'需求说明:
'给在客户交易表(YW_XSYW_KHJY)中对客户交易编号字段:KHJY_CODE字段自动进行编号,编号形式类似:JY2016-000001234
'编号方法是:JY+项目编号(LXTZ_CODE)中的年份(e.DataROW("LXTZ_CODE").SubString(5,4)),加上-号,加上9位定长顺序号,000000001

If e.DataRow.IsBull("KHJY_NAME") OrElse e.DataRow.IsNull("LXTZ_CODE") Then
    e.DataRow("KHJY_CODE") = Nothing
Else
    Dim lb As String = "JY"
    Dim max As String
    Dim idx As Integer
    Dim year As String = e.DataRow("LXTZ_CODE").SubString(4,4)
    lb = lb & year & "-"
    max = e.DataTable.Computer("Max(KHJY_CODE)",lb And [_Identify] <> &e.DatatRow("_Identify")) '取得该年编号的最大值
    If max > "" Then '如果有最大编号
        idx = CInt(max.SubString(7,9) + 1
    Else
        idx = 1
    End If
    e.DataRow("KHJY_CODE") = lb & Format(idx,"000000000")
End If

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/19 12:07:00 [只看该作者]

参考

 

http://www.foxtable.com/webhelp/scr/2403.htm

 

如果还有问题,尽量做个例子发上来测试。


 回到顶部
帅哥哟,离线,有人找我吗?
xh2207
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:190 积分:1593 威望:0 精华:0 注册:2013/1/6 19:46:00
  发帖心情 Post By:2017/9/19 12:10:00 [只看该作者]

参考下

 

 

流水号,以DH-年统计单据
If e.DataCol.Name = "订货日期" Then
    If e.DataRow.IsNull("订货日期") Then
        e.DataRow("流水号") = Nothing
    Else
        Dim d As Date = e.DataRow("订货日期")
        Dim y As Integer = d.Year
        Dim fd As Date = New Date(y,1,1) '获得该年的第一天
        Dim ld As Date =  new Date(y,12,31) '获得该年的最后一天
        Dim bh As String = "DH-" & Format(d,"yyyy") '生成编号的前4位,4位年.
        If e.DataRow("流水号").StartsWith(bh) = False '如果编号的前6位不符
            Dim max As String
            Dim idx As Integer
            max = e.DataTable.Compute("Max(流水号)","订货日期 >= #" & fd & "# And 订货日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")) '取得该年的最大编号
            If max > "" Then '如果存在最大编号
                idx = CInt(max.Substring(8,4)) + 1 '获得最大编号的后三位顺序号,并加1,DH-201701-XXX
            Else
                idx = 1 '否则顺序号等于1
            End If
            e.DataRow("流水号") =  bh & "-" & Format(idx,"0000")
        End If
    End If
End If


 回到顶部
帅哥哟,离线,有人找我吗?
侯爱华
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:7 积分:105 威望:0 精华:0 注册:2017/9/19 11:54:00
  发帖心情 Post By:2017/9/19 12:12:00 [只看该作者]

删掉了这个图片
[此贴子已经被作者于2017/9/19 12:38:56编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
侯爱华
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:7 积分:105 威望:0 精华:0 注册:2017/9/19 11:54:00
  发帖心情 Post By:2017/9/19 12:37:00 [只看该作者]

这是上传的附件,请查收
这是做测试的例子
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test01.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/19 12:52:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test01.foxdb


 回到顶部
帅哥哟,离线,有人找我吗?
侯爱华
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:7 积分:105 威望:0 精华:0 注册:2017/9/19 11:54:00
  发帖心情 Post By:2017/9/19 13:01:00 [只看该作者]

请教版主,为什么要在外面加上 Select case语句呢?这么做的用处是什么呢?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/19 13:03:00 [只看该作者]

以下是引用侯爱华在2017/9/19 13:01:00的发言:
请教版主,为什么要在外面加上 Select case语句呢?这么做的用处是什么呢?

 

判断列名,修改其他列,就不会触发代码

 

http://www.foxtable.com/webhelp/scr/1522.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
侯爱华
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:7 积分:105 威望:0 精华:0 注册:2017/9/19 11:54:00
  发帖心情 Post By:2017/9/19 13:19:00 [只看该作者]

学习了。那请教一下,对于跨表引用也要先判断字段吗?


 回到顶部
帅哥哟,离线,有人找我吗?
侯爱华
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:7 积分:105 威望:0 精华:0 注册:2017/9/19 11:54:00
  发帖心情 Post By:2017/9/19 13:21:00 [只看该作者]

'根据客户简称KHTZ_NAME,自动填写客户编码KHTZ_CODE,客户IDYW_KHYY_KHTZ_ID,和客户全称KHTZ_KHQZ
If e.DataCol.Name = "KHTZ_NAME" Then
    Dim nms() As String = {"KHTZ_CODE","YW_KHYY_KHTZ_ID","KHTZ_KHQC"}
    If e.NewValue Is Nothing Then
        For Each nm As String In nms
            e.DataRow(nm) = Nothing
        Next
    Else
        Dim dr As DataRow
        dr = DataTables("YW_KHYY_KHTZ").Find("[KHTZ_NAME] = '" & e.NewValue & "'")
        If dr IsNot Nothing
            For Each nm As String In nms
                e.DataRow(nm) = dr(nm)
            Next
        End If
    End If
End If

比如这样的语句,也是加上select case语句好吗?

 回到顶部
总数 11 1 2 下一页