首页 文章

VBA Excel - 访问查询不可更新

提问于
浏览
0

我试图通过Excel中的VBA运行查询时出错 .

错误:

运行时错误'3073':操作必须使用可更新的查询 .

我有一个查询从Excel中的一个表中获取数据 .

qryAllData:

SELECT ID, Field1 AS [Date], Field9 AS [Alarm Init], Field5 AS [Alarm End], CVDate(Field2) AS [Time]
FROM [Jet Info]
WHERE (Field3 LIKE 'ALARM' OR Field8 LIKE 'ALARM:') AND Field5 NOT LIKE 'Program' AND (Field9 NOT LIKE 'Program' OR ISNULL(Field9));

我最初是在Excel中直接引用此查询但仍然遇到上述错误,所以我尝试引用查询 .

qrySelData:

SELECT DISTINCTROW TOP 1 a.*
FROM [Process Info] AS a, [Complete Data] AS b
WHERE (((a.Date) Not In (SELECT [Date] FROM [Complete Data])) AND ((a.[Start Time]) Not In (SELECT [Start Time] FROM [Complete Data])));

这是我的VBA代码:

Private Sub CommandButton1_Click()
     Refresh_Data
     Dim objAccess As Object

     Set objAccess = GetObject("C:\Users\******\Documents\Database21.accdb")

     objAccess.Visible = False

     objAccess.DoCmd.OpenQuery ("qrySelData")

     objAccess.Quit
     Set objAccess = Nothing
 End Sub

在VBA中运行sub会在 objAccess.DoCmd.OpenQuery ("qrySelData") 行上抛出错误3072 .

任何帮助将不胜感激 - 如果您需要更多信息,请告诉我 .

1 回答

  • 0

    第一个查询不可更新,因为您在选择列列表中使用函数(cvdate) . 删除此列或功能,它应该工作 .

    第二个查询(似乎完全不同)在 [Process Info][Complete Data] 之间缺少连接条件 . 这意味着Access尝试 生产环境 carthesian产品,而且内存不够......

    首先看,我会在第二个查询中说你应该从FROM子句中删除 [Complete Data] (如果你还是不加入那些表) .

相关问题