2017-06-07 6 views
0

Ich erhalte einen Fehler beim Versuch, eine Abfrage über VBA in Excel auszuführen.VBA Excel - Access-Abfrage nicht aktualisierbar

Fehler:

Run-time error '3073': Operation must use an updateable query.

Ich habe eine Abfrage, die Daten aus einer Tabelle in Excel abruft.

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)); 

ich Referenzierung diese Abfrage in Excel direkt worden ursprünglich hatte, wurde aber nach wie vor die oben genannten Fehler bekommen, so habe ich versucht, die Abfrage stattdessen verweist.

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]))); 

Hier ist mein VBA-Code:

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 

die Unter in VBA wirft Lauffehler 3072 auf der objAccess.DoCmd.OpenQuery ("qrySelData") Linie.

Jede Hilfe wäre willkommen - wenn Sie weitere Informationen benötigen, lassen Sie es mich wissen.

+0

Sieht aus wie das Problem in der Verknüpfung ist: https://StackOverflow.com/Questions/170578/Operation-Must-use-an-Updatable-Query-303-Microsoft-Access Einige verschiedene Empfehlungen hier - eine ist in eine temporäre Tabelle einzufügen und dann daraus auszuwählen. Das scheint so zu sein, als würde es für dich funktionieren. –

+0

@JacobH also, anstatt die Abfrage zu referenzieren, sollte ich eine Dummy-Tabelle für 'QryAllData' in die einfügen und dann verweisen, dass mit' QrySelData'? – bcbrwk

+0

@JacobH Ich habe immer noch Probleme. Also habe ich eine temporäre Tabelle, auf die verwiesen wird; Wie führe ich die Abfrage aus, die ich verwende, um Daten in die temporäre Tabelle einzufügen? Das scheint momentan mein Hauptproblem zu sein. – bcbrwk

Antwort

0

Die erste Abfrage kann nicht aktualisiert werden, weil Sie die Funktion (cvdate) in der ausgewählten Spaltenliste verwenden. Entfernen Sie diese Spalte oder Funktion und es sollte funktionieren.

Zweite Abfrage (scheint ganz anders zu sein) fehlt Verbindungsbedingung zwischen [Process Info] und [Complete Data]. Dies bedeutet, Access versucht, Carthesian Produkt zu produzieren und einfach nicht genug Speicher ...

Auf den ersten Blick würde ich sagen, in der zweiten Abfrage sollten Sie entfernen [Complete Data] FROM-Klausel (wenn Sie sowieso nicht diese Tabellen beitreten).