Foxtable(狐表)用户栏目专家坐堂 → 自动生成编号


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

主题:自动生成编号

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 11:18:00 [显示全部帖子]

idx = CInt(max.Substring(12,3)) + 1 '获得最大单据编号的后四位顺序号,并加1

 

改成

 

idx = CInt(max.Substring(bh.length,3)) + 1 '获得最大单据编号的后四位顺序号,并加1


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/15 15:36:00 [显示全部帖子]

以下是引用xlrboy在2019/1/15 13:40:00的发言:
版主您好!   我在做物资出门台账,分为表1 物资出门证  表2 物资出门明细 两个表通过出门证编号关联,  表1我可以通过经办人控制修改行的权限,表2可以怎么控制呢?

 

1、你表1的控制怎么写的?贴出对应事件代码。

 

2、你直接引用父表数据即可,比如,startEdit事件,

 

Dim pr As DataRow = e.row.datarow.getparentrow("物资出门证")

If pr IsNot Nothing Then

    msgbox(123)

    msgbox(pr("经办人"))

End If


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/18 10:53:00 [显示全部帖子]

方法一

 

Select e.DataCol.Name
    Case "申请日期","部门代码"
        If e.DataRow.IsNull("申请日期") OrElse e.DataRow.IsNull("部门代码") Then
            e.DataRow("编号") = Nothing
        Else
            Dim d As Date = e.DataRow("申请日期")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim fd As Date = New Date(y,m,1) '获得该月的第一天
            Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
            Dim bh As String = e.DataRow("部门代码") & "-" & Format(d,"yyyyMMdd") & "-" '生成编号的前缀
            If e.DataRow("编号").StartsWith(bh) = False '如果单据编号前缀不符
e.datarow.save
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "部门代码 = '"& e.DataRow("部门代码") & "' And 申请日期 >= #" & fd & "# And 申请日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(编号)",flt) '取得该月的相同工程代码的最大单据编号
                If max > "" Then '如果存在最大单据编号
                    idx = CInt(max.Substring(bh.length,3)) + 1 '获得最大单据编号的后四位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("编号") = bh & Format(idx,"000")
e.datarow.save
            End If
        End If
End Select

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/18 10:53:00 [显示全部帖子]


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/18 12:24:00 [显示全部帖子]

代码没问题,具体实例发上来测试。

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/18 14:21:00 [显示全部帖子]

sqlserver,那就改成

 

Select e.DataCol.Name
    Case "申请日期","部门代码"
        If e.DataRow.IsNull("申请日期") OrElse e.DataRow.IsNull("部门代码") Then
            e.DataRow("编号") = Nothing
        Else
            Dim d As Date = e.DataRow("申请日期")
            Dim y As Integer = d.Year
            Dim m As Integer = d.Month
            Dim Days As Integer = Date.DaysInMonth(y,m)
            Dim fd As Date = New Date(y,m,1) '获得该月的第一天
            Dim ld As Date = New Date(y,m,Days) '获得该月的最后一天
            Dim bh As String = e.DataRow("部门代码") & "-" & Format(d,"yyyyMMdd") & "-" '生成编号的前缀
            If e.DataRow("编号").StartsWith(bh) = False '如果单据编号前缀不符
e.datarow.save
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "部门代码 = '"& e.DataRow("部门代码") & "' And 申请日期 >= '" & fd & "' And 申请日期 <= '" & ld & "' And [_Identify] <> " & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(编号)",flt) '取得该月的相同工程代码的最大单据编号
msgbox(max)
                If max > "" Then '如果存在最大单据编号
                    idx = CInt(max.Substring(bh.length,3)) + 1 '获得最大单据编号的后四位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("编号") = bh & Format(idx,"000")
e.datarow.save
            End If
        End If
End Select

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/18 15:04:00 [显示全部帖子]

1、你是说偶尔会重复?出现的概率有多少?

 

2、试试这个,不要看openQQ那里,用openQQ比较麻烦。

 

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

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/18 18:38:00 [显示全部帖子]

1、开发者密码发出来;

 

2、数据库发上来测试。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/22 11:28:00 [显示全部帖子]

 

只需要BeforeSaveDataRow事件

 

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/22 11:40:00 [显示全部帖子]

请在你数据库那里,加入一个【编号】表。表结构,有如下两列

 

【前缀】、【顺序号】

 


 回到顶部
总数 22 1 2 3 下一页