【问题标题】:VBA code stopped working as intendedVBA 代码停止按预期工作
【发布时间】:2015-08-28 06:50:08
【问题描述】:

我有一个奇怪的问题,正在运行的代码突然开始产生问题(我不知道如何绕过它)

我在 Form1 上有列表框 (List2),它由以下人员填充:

SELECT [queryFormyTradycyjne].[Nr Maszyny], [queryFormyTradycyjne].[UID], [queryFormyTradycyjne].[Nazwa], [queryFormyTradycyjne].[UAP], [queryFormyTradycyjne].[Linia], [queryFormyTradycyjne].[GAP], [queryFormyTradycyjne].[Status] FROM queryFormyTradycyjne ORDER BY [Nr Maszyny]; 

queryFormyTradycyjne 代码:

SELECT Lista.[Nr Maszyny], Lista.[Nazwa], Lista.[UAP], Lista.[Linia], Lista.[GAP], Lista.[Status], Lista.[UID]
FROM Lista
WHERE Lista.isValid=False And Lista.UID Like 'FF*';

如果我双击 List2 中的一个项目,它将向另一个表单 (AwariaZgloszenieNew) 传递值,传递给名为 txtNrMaszyny 的文本字段。

从 2 小时前开始,它工作得很好。我实际上没有触及代码中的任何东西,也没有触及任何这些形式。我在几台安装了不同 Access 版本的 PC 上检查了这一点。 结果相同:错误对象'Forms'的方法'Item'失败 (-2146500594 (800f000e))

我的双击事件的 VBA 代码:

Public strSelectedItem As String

Private Sub List2_DblClick(Cancel As Integer)
Dim varItem As Variant

With Me.List2
    For Each varItem In .ItemsSelected
    strSelectedItem = .ItemData(varItem)
    Next
End With

DoCmd.OpenForm "AwariaZgloszenieNew"

[Forms]![AwariaZgloszenieNew].[txtNrMaszyny] = strSelectedItem

End Sub

有人有什么想法吗?

【问题讨论】:

  • 你试过对DB进行compact和repair吗?
  • 我不太确定该怎么做。编辑:如果你在谈论那个按钮“压缩和修复” - 点击它后没有任何改变......
  • 在功能区菜单的数据库工具选项卡上有一个“压缩和修复数据库”按钮。首先备份您的数据库。
  • 突然间我的数据库前端约为 3mb,与我的备份相比 - 40~mb。刚才发生了什么? :|备份有点旧..
  • 这很正常,是“压缩修复”的“压缩”部分。

标签: ms-access vba


【解决方案1】:

如果“压缩和修复”没有帮助,您可以尝试另外两件事。

  • 反编译

How does one decompile and recompile a database application?
按照 David-W-Fenton 对这封信的答复中的步骤进行操作。

  • 创建一个新数据库并从旧数据库中导入所有对象。

编辑 -- 刚刚看到您的最新评论。
如果 VBA 代码消失了,并且没有可用的工作备份,则某些部分可能会丢失。未来:在开发过程中,“压缩和修复”和(在较小程度上)反编译应该是常规任务。

我不知道反编译如何处理受密码保护的代码。
恕我直言,在 Access 中保护代码的更好选择是分发 .mde 前端而不是 .mdb

【讨论】:

    猜你喜欢
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多