Ms access 访问权赢得';“不要停止”;计算&引用;直到你在某个控件上晃动鼠标

Ms access 访问权赢得';“不要停止”;计算&引用;直到你在某个控件上晃动鼠标,ms-access,mouseevent,Ms Access,Mouseevent,我们在客户的站点上遇到此故障 在一个工作站(Access2K3,恰巧有一个触摸屏)上,在其中一个关键表单上,用户报告它正在挂起或冻结,左下角显示“计算…” 我们看了一眼,发现这是真的,只是我们注意到你可以通过稍微晃动鼠标来再次“释放”屏幕。然后将抖动缩小到一个特定的文本框。只要将鼠标移到这个文本框上,就可以释放屏幕,一切正常 文本框显示一些只读财务数据。当然,文本框在被释放之前是空白的,之后它会显示正确的数据 此控件和任何其他控件都没有MouseMove、MouseDown或MouseUp事件。

我们在客户的站点上遇到此故障

在一个工作站(Access2K3,恰巧有一个触摸屏)上,在其中一个关键表单上,用户报告它正在挂起或冻结,左下角显示“计算…”

我们看了一眼,发现这是真的,只是我们注意到你可以通过稍微晃动鼠标来再次“释放”屏幕。然后将抖动缩小到一个特定的文本框。只要将鼠标移到这个文本框上,就可以释放屏幕,一切正常

文本框显示一些只读财务数据。当然,文本框在被释放之前是空白的,之后它会显示正确的数据

此控件和任何其他控件都没有MouseMove、MouseDown或MouseUp事件。文本框的控制源不可否认是微不足道的,它由IF组成,还使用VBA函数。然而,类似类型的复杂控制源在应用程序中的其他地方重复出现,不会导致问题,即使这种特殊的控制在其他机器上也不会导致问题

还有其他人经历过吗


同样出于调试目的-当Access连续几分钟报告它正在“计算…”时,是否有办法一步一步地查明到底发生了什么?

您可以将状态栏文本设置为任何您喜欢的内容。尝试在处理任务结束时使用此行

Application.Echo True “Your Text Goes Here”

不知道为什么会在那只老鼠身上放晴

我在使用条件格式时也遇到过类似的问题。当我遇到这个问题时,我用两种不同的方法解决了它:

  • 放弃条件格式,并通过代码手动应用格式(即,通过相关控件的Form_Current event、After_Update event等)。显然,如果您试图区分连续绑定窗体上的控件,这将不起作用。在这种情况下,我会选择另一种选择

  • 手动添加和删除条件格式本身。我不完全确定这为什么有效,但它确实有效。我将为您提供一个简单的示例函数,展示该技术:

  • Private Const DefaultHLColor长=10092543'RGB(255、255、153);淡黄色
    '---------------------------------------------------------------------------------------
    '程序:HighlightRow
    '日期时间:2/22/2008 3:27
    作者:迈克
    '目的:突出显示连续表单的细节部分。
    '用法:1)添加绑定到唯一字段的文本框(首选主键)
    '设置为连续视图的窗体。
    '2)设置启用=否,锁定=是,背景色={Detail Section BackColor},
    '背景色=正常,特殊效果=平坦,前景色=背景色
    '3)展开文本框以填充整个详细信息部分,然后发送到后面。
    '4)将其向下移动一个像素([Ctrl]+[{向下箭头键}])
    “5)将以下内容添加到窗体的OnCurrent事件中:
    '=HighlightRow([{TextBoxName}])
    '注意:我们可以在OnCurrent事件中简单地刷新表单,但是
    "(至少在2002年)没有一个坚如磐石的条件性计划实施
    '格式化。当我们选择
    '一个记录(突出显示),然后我们滚动表单,以便
    '突出显示的记录不再可见,然后选择一个新记录,然后
    “滚动到上一条记录,可悲的是,它仍然是
    突出显示。
    '---------------------------------------------------------------------------------------
    '
    函数HighlightRow(Ctl作为文本框,可选HLColor作为Long=DefaultHLColor)'vv
    On Error GoTo Err_HighlightRow
    应用程序。回显错误
    带Ctl
    .FormatConditions.Delete
    如果Ctl.Parent.CurrentRecord为0,则
    如果Not IsNull(.Value)和Not IsEmpty(.Value),则
    如果是数值(.Value),则
    .FormatConditions.Add acFieldValue、acEqual、.Value
    其他的
    .FormatConditions.Add acFieldValue、acEqual、“&.Value&”
    如果结束
    .FormatConditions(0)。背景色=HLColor
    .FormatConditions(0)。前景色=HLColor
    .FormatConditions(0).Enabled=False
    如果结束
    如果结束
    以
    退出HighlightRow:
    应用程序。Echo True
    退出功能
    Err_HighlightRow:
    日志错误错误编号,错误描述,“HighlightRow”
    继续退出\u HighlightRow
    端函数
    
    我知道这个问题已经得到了回答,但我发现了一个奇怪的工作,可能会帮助人们

    在Access 2007中我的大型报告中,条件格式导致它在打开状态栏中的“计算…”时卡住,类似于上面的问题。但是,我发现只有在侧边栏中选择报表并试图打开报表时才会发生这种情况

    我创建了一个窗体,作为一个人造工具栏,带有一个按钮+嵌入式宏,触发OpenReport命令。以这种方式打开时,报告会立即打开!这确实是一件奇怪的事情,但它允许我保留条件格式

    希望这可以帮助其他人,但不要忘记,当您处于设计模式时,如果您尝试切换到报告模式,它将挂起。关闭它并使用人造工具栏按钮


    编辑:更进一步,我意识到这是有效的,因为按钮在打印预览模式下打开它。它挂起在报告模式下。

    这似乎是Access 2013中的新功能。我重新应用了所有条件格式,问题得到了解决。

    我正好遇到了这个问题(Access 2010)。我有一个表单和一个子表单。子窗体具有条件格式以突出显示所选记录,但是
    Private Const DefaultHLColor As Long = 10092543 'RGB(255, 255, 153); Light Yellow
    
    '---------------------------------------------------------------------------------------
    ' Procedure : HighlightRow
    ' DateTime  : 2/22/2008 3:27
    ' Author    : Mike
    ' Purpose   : Highlight the detail section of a continuous form.
    ' Usage     : 1) Add a textbox bound to a unique field (preferrably the primary key)
    '                to a form set to continuous view.
    '             2) Set Enabled = No, Locked = Yes, BackColor = {Detail Section BackColor},
    '                    BackStyle = Normal, SpecialEffect = Flat, ForeColor = BackColor
    '             3) Expand the textbox to fill the entire detail section, Send to Back.
    '             4) Move it down one pixel ([Ctrl] + [{down arrow key}])
    '             5) Add the following to the form's OnCurrent event:
    '                =HighlightRow([{TextBoxName}])
    ' Notes     : We could simply Refresh the form in the OnCurrent event, but Access
    '             (2002, at least) does not have a rock solid implementation of conditional
    '             formatting.  The problem with Refreshing the form occurs when we select
    '             a record (which gets highlighted), then we scroll the form so the
    '             highlighted record is no longer visible, then select a new record, and
    '             scroll back to the previous record to see that, sadly, it is still
    '             highlighted.
    '---------------------------------------------------------------------------------------
    '
    Function HighlightRow(Ctl As TextBox, Optional HLColor As Long = DefaultHLColor) 'vv
        On Error GoTo Err_HighlightRow
    
        Application.Echo False
        With Ctl
            .FormatConditions.Delete
            If Ctl.Parent.CurrentRecord <> 0 Then
                If Not IsNull(.Value) And Not IsEmpty(.Value) Then
                    If IsNumeric(.Value) Then
                        .FormatConditions.Add acFieldValue, acEqual, .Value
                    Else
                        .FormatConditions.Add acFieldValue, acEqual, """" & .Value & """"
                    End If
                    .FormatConditions(0).BackColor = HLColor
                    .FormatConditions(0).ForeColor = HLColor
                    .FormatConditions(0).Enabled = False
                End If
            End If
        End With
    
    Exit_HighlightRow:
        Application.Echo True
        Exit Function
    Err_HighlightRow:
        LogError Err.Number, Err.Description, "HighlightRow"
        Resume Exit_HighlightRow
    End Function