2017-03-22 2 views
0

Was ich versuche zu erreichen ist, dass VBA die Löschabfrage bei der Sicherung ausführt. Das Problem ist, mit meiner Anfrage (hoffe ich) Ich habe eine Auswahlabfrage, die Datensätze Isolaten, die ich jedoch gelöscht werden soll, wenn ich versuche, eine Lösch-Abfrage zu machen bekomme ich diesen Fehler:Wie kann ich Datensätze basierend auf einer Abfrage löschen?

Specify the table containing the records you want to delete.

ODER diesen Fehler :

Reserved error (-3211); there is no message for this error.

Meine select-Anweisung lautet:

SELECT Manhours.*, Tickets.Status, Year([Open Date]) 
FROM Manhours INNER JOIN Tickts ON Manhours.TicketID = Tickets.ID 
WHERE (Tickets.Status) = "Closed" AND ((Year([Open Date]))< Year(DATE())-1 
     OR ((Year([Open Date]))= Year(DATE()-1)) 

Die select-Anweisung die Datensätze rufen ich brauche, aber wenn ich versuche es eine Löschabfrage es um Fehler zu erkennen.

+1

Sie nur Zeilen aus einer Tablette zu einer Zeit löschen. Sie geben in Ihrer SELECT-Klausel zwei Tabellen an. Was sollte gelöscht werden? – Kevin

+0

Beide Tabellen Daten werden schließlich gelöscht. Ich nehme an, dass ich nur Daten von einer Tabelle gleichzeitig löschen kann. In diesem Beispiel werden in der Tabelle "manhours" Datensätze gelöscht, die sich auf die Tabelle "Tickets" beziehen. Anhand der Kriterien aus der Tabelle "Tickets" wird festgelegt, welcher manhours-Datensatz gelöscht werden soll (Manhours.TicketID = Ticket.ID). Ich habe nach einer Methode gesucht, um dies zu tun. Wenn es einen besseren Weg gibt, lass es mich wissen. –

Antwort

0

Gute Nachrichten!

fand ich, was ich suchte:

DELETE FROM Manhours WHEN EXISTS (SELECT ID FROM Tickets WHERE (Tickets.Status) = "Closed" AND ((Year([Open Date]))< Year(DATE())-1 OR ((Year([Open Date]))= Year(DATE()-1))

Verwandte Themen