Hi, ich führe in einer Datenbank diverse Abfragen zu Prüfungszwecken aus. Die Ergebnisse der einzelnen Abfrage werden zur Weiterverarbeitung in eine zur jeweiligen Abfrage gehörenden Tabelle geschrieben. Unter Umständen kann das auch zu einer bzw. mehreren leeren Tabellen führen. Besteht eine Möglichkeit die Abfrage so zu verändern, dass nur eine Tabelle erzeugt wird wenn diese auch Datensätze enthält?
ZitatBesteht eine Möglichkeit ...
Natürlich. Mehr als eine.
Ok, ich formuliere die Frage um .... :'(
.... welche Möglichkeit besteht......
diverse Abfragen zu Prüfungszwecken
Da könnte man ergänzend erst zählen, um dann bedingt zu handeln.
Oder: Tabellenerstellungsabfragen sind Aktionsabfragen. Da kann man sich die bewegten Datensätze per RecordsAffected zurückgeben lassen und im Rahmen einer Transaktion bei Anzahl=0 die Aktion zurücknehmen oder auch die leere Tabelle gleich wieder löschen.
So sieht Beispielhaft der SQL Code für meine Abfrage aus:
SELECT Tabelle1.ID, Tabelle1.[Preis 1] INTO 001_Preis1_a
FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.ID = Tabelle2.ID
WHERE ((([Tabelle1]![Preis 1])<>[Tabelle2]![Preis 1]));
Die Tabelle soll nur erstellt werden, wenn die Abfrage Treffer liefert. Die Kette der Abfragen läuft automatisch über ein Makro. Von daher wäre es Ideal, wenn die Tabelle automatisch gelöscht würde, wenn Sie auf Grundlage der neuen Abfrage keinen Inhalt mehr hat.
Zitat von: ebs17 am März 25, 2020, 14:27:36
diverse Abfragen zu Prüfungszwecken
Oder: Tabellenerstellungsabfragen sind Aktionsabfragen. Da kann man sich die bewegten Datensätze per RecordsAffected zurückgeben lassen und im Rahmen einer Transaktion bei Anzahl=0 die Aktion zurücknehmen oder auch die leere Tabelle gleich wieder löschen.]
ZitatDie Kette der Abfragen läuft automatisch über ein Makro.
Mit dem Makro-Kram kann man sich nicht ernsthaft beschäftigen, wenn man Ansprüche über Armseligkeit hinaus stellt.
Per VBA:
If DCount("*", "001_Preis1_a") = 0 Then
CurrentDb.Execute "DROP TABLE 001_Preis1_a"
End If
In der Praxis würde man aber einfach die Auswahlabfrage hernehmen und diese verwenden und auf eine neue Tabelle als Objekt verzichten, damit auch auf solchen Kram rund herum.
Wenn ich ein solches Objekt für eine weitere Auswertung brauche, dann ist eine Unbestimmtheit, ob es da ist oder nicht, unhaltbar. Mit einer leeren Datenmenge kann man viel besser umgehen: SQL macht Mengenverarbeitung.
Man sollte also vielleicht über Strategien und Abläufe nachdenken, vor dem Aktionieren.
So, ich mal wieder. Habe mich heute mal ein bisschen mit VBA beschäftigt... was soll ich sagen... läuft perfekt,... So langsam entdecke ich die Möglichkeiten. Nochmal Danke!!!!