【问题标题】:Delete record from datasheet with vba DatasheetDoCmd.RunCommand acCmdDeleteRecord (error 2046)使用 vba DatasheetDoCmd.RunCommand acCmdDeleteRecord 从数据表中删除记录(错误 2046)
【发布时间】:2020-07-13 22:14:29
【问题描述】:

请帮帮我!

我有什么:

首先,我使用的是 Access 2007。我有一个包含子表单的表单。在该子表单中,有一个来自 SQL 查询的数据表,该数据表获得 3 个字段。第一个字段(Supprimer)是一个虚拟字段,用于显示将要使用的超链接,有一个按钮:

SELECT "Supprimer", permis.abbreviation, permis.description
FROM permis 
INNER JOIN (clients INNER JOIN clients_permis 
  ON clients.ID=clients_permis.id_clients) 
  ON permis.ID=clients_permis.id_permis;

我想要什么 我希望我的“删除”超链接删除数据表所选记录会按“del”键会

我的 onClick 事件代码

Private Sub del_Click()

    DoCmd.RunCommand acCmdSelectRecord
    'SendKeys ("{DELETE}")       
    DoCmd.RunCommand acCmdDeleteRecord

End Sub

如果我取消注释,Sendkeys ("{DELETE}") 记录将被删除,但是,在我的系统上,这也会触发数字锁定键。谁知道它可以在其他系统上做什么。

DoCmd.RunCommand acCmdDeleteRecord 命令引发运行时错误:2046

在前面的一点上,上面的代码运行良好。

【问题讨论】:

  • 子问题:使用 SendKeys() 方法有多糟糕?
  • 我不可能推荐使用 SendKeys。如果您还没有,您可以查看此链接。 @ 987654321@ 在尝试以您的方式删除记录时,似乎没有关于导致此错误的原因的结论。您可以尝试运行 compact 和 repair 以查看是否可以解决问题。
  • 您确定您的记录集是可更新的吗?为什么要使用虚拟字段而不是命令按钮来删除?我同意在任何情况下您都不应使用 sendkeys,也没有必要。
  • 使用命令按钮会将焦点从数据表上移开,我将无法使用“DoCmd.RunCommand acCmdDeleteRecord”。
  • 连续表单(与数据表表单相反)允许您包含按钮,尽管您不能让用户轻松移动列并使用连续表单应用排序。

标签: ms-access vba runtime-error ms-access-2007


【解决方案1】:

正如 HK1 在 cmets 中提到的,这是可以做的(尽管它是解决方法):

使用连续表格而不是数据表。

【讨论】:

  • 连续形式是一种形式(显然),因此它允许您像在任何其他形式中一样添加按钮。使用数据表按钮也不起作用,因为单击数据表之外的任何内容(例如想要的按钮)将使数据表失去焦点。使数据表失焦将“取消选择”所选记录。就我而言,加上连续形式,给了我更多选择。甚至可以选择将其设计为看起来像数据表。
  • 在数据表表单外部单击会取消选择数据表中的当前记录,这是不正确的。这个断言是完全错误的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
  • 2012-05-16
  • 2011-07-12
  • 2016-12-10
相关资源
最近更新 更多