Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Inspektor am März 25, 2020, 12:18:34

Titel: Tabelle aus Abfrage soll nicht erzeugt werden wenn diese leer ist
Beitrag von: Inspektor am März 25, 2020, 12:18:34
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?
Titel: Re: Tabelle aus Abfrage soll nicht erzeugt werden wenn diese leer ist
Beitrag von: ebs17 am März 25, 2020, 12:21:49
ZitatBesteht eine Möglichkeit ...
Natürlich. Mehr als eine.
Titel: Re: Tabelle aus Abfrage soll nicht erzeugt werden wenn diese leer ist
Beitrag von: Inspektor am März 25, 2020, 12:55:10
Ok, ich formuliere die Frage um .... :'(
.... welche Möglichkeit besteht......
Titel: Re: Tabelle aus Abfrage soll nicht erzeugt werden wenn diese leer ist
Beitrag von: ebs17 am März 25, 2020, 14:27:36
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.

Titel: Re: Tabelle aus Abfrage soll nicht erzeugt werden wenn diese leer ist
Beitrag von: Inspektor am März 25, 2020, 15:13:04
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.]
Titel: Re: Tabelle aus Abfrage soll nicht erzeugt werden wenn diese leer ist
Beitrag von: ebs17 am März 25, 2020, 23:04:06
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.
Titel: Re: Tabelle aus Abfrage soll nicht erzeugt werden wenn diese leer ist
Beitrag von: Inspektor am März 26, 2020, 21:45:44
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!!!!