以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  按月自动编号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145023)

--  作者:andyd
--  发布时间:2020/1/6 12:08:00
--  按月自动编号
报下面代码在 BeforeSaveDataRow 表事件,需要的是:保存时先保存日期,再按日期所在月自动编号,报如下错误:

If e.DataRow.IsNull("日期") Then
    e.DataRow("日期")  = Date.Today()
End If

Dim max As String
Dim idx As Integer
Dim y As Integer = Date.Today.Year
Dim m As Integer = Date.Today.Month
Dim dt1 As New Date(y, m, 1)
Dim dt2 As New Date(y, m, Date.DaysInMonth(y, m)) \'获取本月的最后一天
Dim Filter As String
Filter = "日期 >= #" & dt1 & "# And 日期 <= #" & dt2 & "#"
max = e.DataTable.Compute("Max(订单编号)","日期 = # " & Filter & " # And [_Identify] <> " &  e.DataRow("_Identify")) \'取得该天的最大编号
If max > "" Then
    idx = CInt(max.Substring(8,3)) + 1 \'获得最大编号的 后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
e.DataRow("订单编号") = "YFDD" & Format(e.DataRow("日期"),"yyMM") & Format(idx,"000")




.NET Framework 版本:4.0.30319.36392
Foxtable 版本:2019.12.17.18
错误所在事件:表,订单评审,BeforeSaveDataRow
详细错误信息:
调用的目标发生了异常。
该字符串未被识别为有效的 DateTime。有一个未知单词(从索引 1 处开始)。


--  作者:有点蓝
--  发布时间:2020/1/6 13:47:00
--  
max = e.DataTable.Compute("Max(订单编号)","日期 = # " & Filter & " # And [

去掉#号粉色位置多余的空格


--  作者:andyd
--  发布时间:2020/1/6 14:16:00
--  
去掉空格后提示变为(从索引 0 处开始)


错误所在事件:表,订单评审,BeforeSaveDataRow
详细错误信息:
调用的目标发生了异常。
该字符串未被识别为有效的 DateTime。有一个未知单词(从索引 0 处开始)。

[此贴子已经被作者于2020/1/6 14:18:29编辑过]

--  作者:有点蓝
--  发布时间:2020/1/6 14:30:00
--  
max = e.DataTable.Compute("Max(订单编号)",Filter & " And [_Identify] <> " &  e.DataRow("_Identify")) \'取得该天的最大编号

--  作者:zqxzhs
--  发布时间:2021/9/14 10:06:00
--  
老师:用 max = e.DataTable.SQLCompute("Max(订单编号)",Filter & " And [_Identify] <> " &  e.DataRow("_Identify")) \'取得该天的最大编号,能避免重复吗
--  作者:有点蓝
--  发布时间:2021/9/14 10:13:00
--  
如果是单机使用可以。多人并发的无法保证。可以看看:http://www.foxtable.com/webhelp/topics/3008.htm