尝试在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。
如果您需要更多信息,请联系我们。
答案 0 :(得分:0)
第一个查询不可更新,因为您在选择列列表中使用了函数(cvdate)。删除此列或功能,它应该工作。
第二个查询(似乎完全不同)在[Process Info]
和[Complete Data]
之间缺少连接条件。这意味着Access尝试生产carthesian产品,而且内存不够......
首先我会在第二个查询中说你应该从FROM子句中删除[Complete Data]
(如果你还没有加入这些表)。