以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教内部函数编号代码 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193349) |
||||
-- 作者:13315253800 -- 发布时间:2024/9/7 12:30:00 -- 请教内部函数编号代码 请教内部函数自动编号代码,flt处有问题,敬请老师帮助修改一下 \'按日期类别自动编号 Dim e = args(0)\'定义参数,Args(0) Dim 类别 As String = args(1) \'Args(1) Dim 编号 As String = args(2) Dim 代码 As String = args(3) 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, "yyyyMM") & "-" \'生成编号的前缀 If e.DataRow(编号).StartsWith(bh) = False Then\'如果编号前缀不符 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(12, 4)) + 1 \'获得最大编号的后四位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow(编号) = bh & Format(idx, "0000") End If End If End Select |
||||
-- 作者:有点蓝 -- 发布时间:2024/9/8 11:37:00 -- 有什么问题?提示什么错误? |
||||
-- 作者:13315253800 -- 发布时间:2024/9/9 8:23:00 -- flt = 类别 & " = \'" & e.DataRow("类别") & "\' And 日期 & >= #" & fd & "# And " & 日期 & " <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") .NET Framework 版本:4.0.30319.36543 Foxtable 版本:2022.8.18.1 错误所在事件:自定义函数,按日期类别编号 详细错误信息: Exception has been thrown by the target of an invocation. Syntax error: Missing operand before \'>=\' operator. |
||||
-- 作者:有点蓝 -- 发布时间:2024/9/9 8:59:00 -- flt = 类别 & " = \'" & e.DataRow("类别") & "\' And 日期 >= #" & fd & "# And 日期 " <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") |
||||
-- 作者:13315253800 -- 发布时间:2024/9/9 9:13:00 -- |
||||
-- 作者:13315253800 -- 发布时间:2024/9/9 9:29:00 -- 改为 flt = 类别 & " = \'" & e.DataRow("类别") & "\' And 日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify")
第一行出现编号,第二行又出现错误提示 .NET Framework 版本:4.0.30319.36543 Foxtable 版本:2022.8.18.1 错误所在事件:自定义函数,按日期类别编号 详细错误信息: Exception has been thrown by the target of an invocation. Index and length must refer to a location within the string. Parameter name: length |
||||
-- 作者:cd_tdh -- 发布时间:2024/9/9 9:31:00 -- 后面日期后面多了一个“ flt = 类别 & " = \'" & e.DataRow("类别") & "\' And 日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [_Identify] <> " & e.DataRow("_Identify") 或是试试 flt = 类别 & " = \'" & e.DataRow("类别") & "\' And 日期 >= #" & fd & "# And 日期 <= #" & ld & "# And [_Identify] <> \'" & e.DataRow("_Identify") & "\'"
[此贴子已经被作者于2024/9/9 9:40:27编辑过]
|
||||
-- 作者:13315253800 -- 发布时间:2024/9/9 9:41:00 -- 日期后面去掉任何一个“,都无法保存 |
||||
-- 作者:13315253800 -- 发布时间:2024/9/9 9:56:00 -- 修改了一下,编号不增加,请蓝老师指导一下
|
||||
-- 作者:有点蓝 -- 发布时间:2024/9/9 9:58:00 -- 贴出完整代码看看 |