以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  Date.Now自动生成的时间格式是DateTime,根据Date短日期自动生成编号,请问如何让新生编号不会冲突?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=104576)

--  作者:bbgg945
--  发布时间:2017/8/1 11:40:00
--  Date.Now自动生成的时间格式是DateTime,根据Date短日期自动生成编号,请问如何让新生编号不会冲突?
表中Date.Now自动生成的时间格式是DateTime,忽略时间,只根据Date短日期自动生成编号
请问如何让新生编号不会冲突呢?

此主题相关图片如下:2017-08-01_112433.png
按此在新窗口浏览图片

出库单_DataColChanged

 

If e.DataCol.Name = "部门" Then \'如果更改的是身份证号码列

    If e.DataRow.IsNull("部门") Then \'身份证号码是否为空

        e.DataRow("出库日期") = Nothing \'如果为空,则清除出生日期

    ElseIf e.DataRow("出库单号") = Nothing AndAlso  e.DataRow("出库日期") = Nothing

        \'否则从身份证号码列中提取出生日期

        e.DataRow("出库日期") = Date.Now

    End If

End If

If e.DataCol.Name = "出库日期" Then

    If e.DataRow.IsNull("出库日期") Then

        e.DataRow("出库单号") = Nothing

    ElseIf e.DataRow("出库单号") = Nothing Then

        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.Compute("Max(出库单号)","出库日期 = #" & e.DataRow("出库日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大编号

            If max > "" AndAlso max.Length >= bh.Length +3 Then \'如果存在最大编号

                idx = CInt(max.Substring(bh.Length+1,3)) + 1 \'获得最大编号的后三位顺序号,并加1

            Else

                idx = 1 \'否则顺序号等于1

            End If

            e.DataRow("出库单号") = bh & "-" & Format(idx,"000")

        End If

    End If

End If

[此贴子已经被作者于2017/8/1 11:50:07编辑过]

--  作者:有点甜
--  发布时间:2017/8/1 12:45:00
--  

 

[此贴子已经被作者于2017/8/1 12:46:16编辑过]

--  作者:有点甜
--  发布时间:2017/8/1 12:48:00
--  

max = e.DataTable.Compute("Max(出库单号)","出库日期 = #" & e.DataRow("出库日期") & "# And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大编号

改成

 

max = e.DataTable.Compute("Max(出库单号)","出库单号 like \'" & bh & "%\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该天的最大编号


--  作者:bbgg945
--  发布时间:2017/8/1 17:40:00
--  
谢谢老师,一般情况下是没问题了。

如果删除过订单,就有可能出现以下提示:

.NET Framework 版本:2.0.50727.8669
Foxtable 版本:2017.6.12.1
错误所在事件:
详细错误信息:
未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
请问这种问题应该怎么处理呢?

--  作者:有点甜
--  发布时间:2017/8/1 17:47:00
--  

一般表数据是不需要删除的。更不能是频繁删除。

 

如果提示4楼的错误,建议你删除关联设置,重新设置一遍。


--  作者:bbgg945
--  发布时间:2017/8/1 18:37:00
--  
重新设置一遍?您是指?
--  作者:有点蓝
--  发布时间:2017/8/1 20:03:00
--  
删除和这个表有关的表关联,然后重新创建
--  作者:bbgg945
--  发布时间:2017/8/1 20:36:00
--  
老师,请问这样做的原因是什么呢?
--  作者:有点蓝
--  发布时间:2017/8/1 21:14:00
--  
频繁删除,新增数据,父子表没有进行关联同步的处理,可能会导致关联出错