【问题标题】:MS Access overflow when I change queries更改查询时 MS Access 溢出
【发布时间】:2011-09-12 14:39:22
【问题描述】:

好的,我已经在 MS Access 2007 中构建了报告,每个报告都包含几个(40 多个)查询。查询正在打开表、子查询等,我不认为 Access 正在关闭它们。我可能是错的,但出于某种原因,我认为这是导致溢出的原因。

但无论如何,我想弄清楚它为什么会突然发生,以及我能做些什么来解决它。当我只有一个模式和一些虚拟数据时,我的报告工作得很好,但是当数据库被实际填充时,给我们数据的人创建了更多的查找表,所以现在使用 3 个表的典型查询现在是使用 5.

您认为查找表的增加(因此 Access 打开了更多对象)是我收到溢出错误的原因,还是其他原因?另外,我不知道 VBA,所以有什么简单的解决方案(例如分解报告,这需要一段时间)值得追求?

谢谢

【问题讨论】:

    标签: ms-access ms-access-2007


    【解决方案1】:

    确保您真正了解您的“溢出”情况。此代码在即时窗口中显示“错误 6(溢出)”,不带引号。

        Dim i As Integer
        Dim strMsg As String
    
    On Error GoTo ErrorHandler
    
        i = 32767
        i = i + 1
    
    ExitHere:
        On Error GoTo 0
        Exit Sub
    
    ErrorHandler:
        strMsg = "Error " & Err.Number & " (" & Err.description _
            & ")"
        Debug.Print strMsg
        GoTo ExitHere
    

    对该错误的解释是 32,767 是 VBA 整数可以接受的最大值。因此,尝试加一个会得到 32,768,这比 Integer 可以容纳的要大......所以溢出了。

    其他数值数据类型也有限制。例如,2147483647 是可以存储为 VBA Long 的最大值。

    我可能完全不在此列,但我会检查您的复杂报告是否包含排序和分组选项,您可能会在这些选项中生成总计。如果是这样,您添加的数据是否会将任何这些总计的值推到超出其各自数据类型的容量的范围内。

    如果您收到包含“溢出”一词的不同错误消息,告诉我们错误消息的确切文本可能会有所帮助。

    【讨论】:

    • 嘿汉斯,这是一个很好的答案,但不幸的是它似乎不适合我的问题。此外,错误消息只是说“溢出”,没有别的。它只是一个弹出窗口,没有任何有关错误的详细信息。
    • 不也包含错误号吗?如果是这样,并且数字是 6,那么您可能正在处理类似于我描述的溢出。
    • 不,它没有数字。真奇怪。另外,我确实有大于 32,767 的字段(我的最高值是 610 万),但它们已经设置为长整数。
    • 在这种情况下,我认为您的组织应该聘请有经验的 Access 开发人员来解决这个问题。我怀疑我们可以在 Stack Overflow 上为您解决这个问题。
    • 好的,谢谢。我接受您的回答,因为它是正确的,并且有人可能会从中受益。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多