Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Tabelle aus Abfrage soll nicht erzeugt werden wenn diese leer ist

Begonnen von Inspektor, März 25, 2020, 12:18:34

⏪ vorheriges - nächstes ⏩

Inspektor

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?

ebs17

ZitatBesteht eine Möglichkeit ...
Natürlich. Mehr als eine.
Mit freundlichem Glück Auf!

Eberhard

Inspektor

Ok, ich formuliere die Frage um .... :'(
.... welche Möglichkeit besteht......

ebs17

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.

Mit freundlichem Glück Auf!

Eberhard

Inspektor

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.]

ebs17

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.
Mit freundlichem Glück Auf!

Eberhard

Inspektor

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!!!!