Foxtable(狐表)用户栏目专家坐堂 → 请问,自动编号事件出错提示,是什么原因?如何解决?


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

主题:请问,自动编号事件出错提示,是什么原因?如何解决?

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


加好友 发短信
等级:婴狐 帖子:43 积分:669 威望:0 精华:0 注册:2014/5/4 14:52:00
请问,自动编号事件出错提示,是什么原因?如何解决?  发帖心情 Post By:2019/11/27 10:53:00 [只看该作者]

表中录入了字段更改事件,后出现如下提示:
Exception has been thrown by the target of  an  invocation
是什么原因,如何解决?

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


加好友 发短信
等级:超级版主 帖子:106430 积分:541297 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/27 10:57:00 [只看该作者]

贴出相关代码看看

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


加好友 发短信
等级:婴狐 帖子:43 积分:669 威望:0 精华:0 注册:2014/5/4 14:52:00
  发帖心情 Post By:2019/11/27 11:22:00 [只看该作者]

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 = fd.addyears(1)
        Dim bh As String = Format(d,"yyyy")
        If e.DataRow("送达编号").StartWith(bh) = False
            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(4,4)) + 1
            Else
                idx = 1
            End If
            e.DataRow("送达编号") = bh & Format(idx,"0000")
        End If
    End If
End If

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


加好友 发短信
等级:超级版主 帖子:106430 积分:541297 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/27 11:32:00 [只看该作者]

这个代码没有问题,也看不出和1楼的错误有什么关系,可能是其他代码的问题。

或者是数据有问题,比如旧数据的编号不符合规范,可以把不符合规范的编号先清空

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


加好友 发短信
等级:婴狐 帖子:43 积分:669 威望:0 精华:0 注册:2014/5/4 14:52:00
  发帖心情 Post By:2019/11/27 14:16:00 [只看该作者]

对不起,占用老师的时间了。是我代码没敲对,StartsWith 敲成了StartWith。
以下代码,运行无误:
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 = fd.addyears(1)
        Dim bh As String = Format(d,"yyyy")
        If e.DataRow("送达编号").StartsWith(bh) = False
            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(4,4)) + 1
            Else
                idx = 1
            End If
            e.DataRow("送达编号") = bh & Format(idx,"0000")
        End If
    End If
End If

 回到顶部