Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Berechnetes Feld in Abfrage

Begonnen von Xoar, Dezember 15, 2016, 17:22:26

⏪ vorheriges - nächstes ⏩

Xoar

Hallo Profis,

man soll ja keine Berechnungen in einer Tabelle direkt speichern, sondern immer als berechnetes Feld zur Laufzeit berechnen. Klar ist Fehlerunanfälliger.

So jetzt meine Frage, ich habe in meiner Datenbank mehrere unterschiedliche Abfragen,  die aber als Gemeinsamkeit dieses berechnetes Feld haben (also jedes mal der Berechnungsausdruck). Das finde ich problematisch, da ich bei einer Änderung immer alle Abfragen ändern muss.

Gibt es da eine elegantere und trotzdem performante Lösung? Man müsste diese als Funktion oder so auslagern, aber dann müsste ich das ja über VBA berechnen, was bestimmt langsamer ist?

Man müsste sowas wie ne kleine Abfrage erstellen, die nur diese Berechnung anstellt und diese dann in die andere Abfrage einbauen, geht sowas?

Wie stellt ihr das an?

Danke im Vorraus.

ebs17

Du kannst auf die Tabelle eine Abfrage aufbauen mit dem berechneten Feld (und ggf. weiteren Merkmalen) und diese Abfrage als Basis für weitere Abfragen hernehmen.

ZitatDas finde ich problematisch, da ich bei einer Änderung immer alle Abfragen ändern muss.
Ich auch. Welcher Art ist die Berechnung?
Wenn sich die Berechnung wegen Daten ändert, ist die Berechnung an sich problematisch und mit einem systematischen Fehler behaftet.
Mit freundlichem Glück Auf!

Eberhard

Xoar

Hi,
mit "als Basis" meinst Du die Berechnung einmal erstellen und dann sozusagen kopieren?
Wäre bei Änderungen ja der gleiche Effekt wie bisher, jede Abfrage ändern.

Die Berechnung ansich ist etwas komplexer, mit verschachtelten Wenn () Funktionen. Hab sie gerade nicht zur Hand.

Die Berechnung würde sich eigentlich nicht ändern, höchstens mal im Laufe der Zeit erweitert werden und wenn ich dann nicht mehr alle Abfragen, wo diese Berechnung stattfindet im Kopf habe, wäre das dramatisch. ;p

PhilS

Zitat von: Xoar am Dezember 15, 2016, 17:22:26Man müsste sowas wie ne kleine Abfrage erstellen, die nur diese Berechnung anstellt und diese dann in die andere Abfrage einbauen, geht sowas?
Ja, genau das ist der richtige Weg.
Du kannst anstelle einer Tabelle auch die "kleine" Abfrage in allen weiteren Abfragen verwenden.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

Hallo,
verschachtelte Wenn Funktionen und Berechnungen die erweitert werden müssen, sind immer ein Hinweis auf ein falsches Datenmodell. Das meint auch Ebs mit seiner Anmerkung zum systematischen Fehler.
Gruß Klaus

Xoar

@PhilS
Ah cool, werd ich mal probieren.

@Klaus
Finde ich in meinem Fall nicht. Falls mal ein zusätzlicher Parameter eingeführt wird, der mit in die Berechnung fließen wird, muss diese ja erweitert werden.

Die verschachtelten Wenn () Funktionen kommen durch meine DateDiff () Funktionen zustande, Zeitsummen 07:30-07:30, evt erinnerst dich noch.

Ich danke euch, Problem sollte damit gelöst sein.


MzKlMu

Hallo,
ZitatFalls mal ein zusätzlicher Parameter eingeführt wird, der mit in die Berechnung fließen wird, muss diese ja erweitert werden.
Da beginnt es schon. Zusätzlicher Parameter sollte ein zusätzlicher Datensatz in einer Tabelle sein und nicht zu Änderungen von Formeln führen.

Aber da müsste man wieder ganz von Vorne anfangen. Und wenn ich mich jetzt  recht erinnere wurde das Datenmodell schon mal angezweifelt.
Aber lassen wir es dabei.
Gruß Klaus

crystal

Hallo,

nur zur groben Erklärung:

du kannst Abfragen auf Tabellen beziehen, aber auch auf Abfragen, weil diese im Prinzip ja auch Tabellen sind.

Beispiel:
du erstellt eine Abfrage, die aus einer Adress-Tabelle (tblAdr) Datensätze selektiert, deren PLZ mit 4 beginnt. Diese Abfrage speicherst du unter dem Namen qryPLZ4.
Jetzt kannst du eine neue Abfrage erstellen, die sich auf qryPLZ4 bezieht.

In deinem Fall:
erstelle eine Abfrage, die die verschachtelten Bedingungen enthält. Dies wird dann deine Basis-Abfrage.
Nun kannst du neue Abfragen erstellen, die als Quelle deine Basis-Abfrage (und nicht die Original-Tabelle) enthalten und weitere Kriterien hinzufügen.

Ich hoffe, ich habe mich verständlich ausgedrückt.

lg
crystal
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

Xoar