berechnete Spalten können nicht in Systembeziehungen verwendet werden

mareinki

Neuer Benutzer
Beiträge
2
Hallo

Ich habe in Access schon einige Abfragen und Berichten erstellt, bin aber sicher kein Profi.
Hiermit meine Frage zu meiner Sport-Datenbank:

Ich habe folgenden Tabellen:

Tabelle Sportart mit Feldern
  • ID
  • Kategorie (ZB Schifahren, Badminton, ...)
  • Streckenbezeichnung
  • Höhenmeter
  • Entfernung
  • etc.

Tabelle Tagebuch mit Feldern
  • ID
  • Datum
  • Zeit
  • Puls
  • JahrMonat (zB 202502 berechnet aus Datum)
  • etc.
Bei Eingabe einer neuen Aktivität werden über den Nachschlagesassistent die passende Sportart aus Tabelle Sportart ausgewählt

Bisher habe ich für diverse Abfragen die Tabellen Tagebuch und Sportart wie folgt per SQL angesprochen (tlw mit Einschränkungen auf ein Jahr, oder Sporarten

SELECT Tagebuch.Datum, Tagebuch.Zeit, Tagebuch.Puls, Sportart.Kategorie, Sportart.Streckenbezeichnung, Sportart.Höhenmeter, Sportart.Entfernung, Format$(Tagebuch.Datum,'yyyymm') AS JahrMonat
FROM Sportart INNER JOIN Tagebuch ON Sportart.[ID] = Tagebuch.[Sportart_ID];
WHERE (((Tagebuch.Datum)>#12/31/2022# And (Tagebuch.Datum)<#1/1/2024#))

Manche Sportarten wie Schifahren, Skitouren sollen nun aber pro Wintersaison ausgewertet werden und nicht pro Kalenderjahr. Deshalb habe ich eine weitere Tabelle Saison erstellt

Tabelle Saison mit Feldern
  • ID
  • Monat
  • Jahr
  • JahrMonat (zB 202502)
  • Wintersaison (zB 2024_2025_Wintersaison)
Das Feld Wintersaison hat folgende Logik: Die Monate 07 bis 12 2024 und 01 bis 06 2025 werden der "2024_2025_Wintersaison"zugeordnet.


Nun wollte ich die Tabelle Saison per SQL mit den Tabellen Sportart und Tagebuch verknüpfen um die Sportarten auch je Saison auswerten zu können

Wenn ich versuche die Tabellen Tagebuch und Saisonen über die Felder Tagebuch.JahrMonat und Saison.JahrMonat zu verknüpfen bekomme ich die Fehlermeldung:

"berechnete Spalten können nicht in Systembeziehungen verwendet werden".

Ich habe bewusst die Tabelle Saison angelegt und nicht die Felder bereits in der Tabelle Tagebuch berechnet, da das ja einem guten DB-Design widersprechen würde.

Kann mir jemand einen Tipp geben, wie ich das Problem lösten kann.

Grüße
Markus
 
Werbung:
Kann mir jemand einen Tipp geben, wie ich das Problem lösten kann.
Alles recht ausführlich beschrieben, aber leider fehlt die Abfrage, die den Fehler auslöst und die Datentypen der Spalten.
Verwendest Du berechnete Spalten? Ich hab irgendwo gesehen, dass das erst ab '2010 geht, find ich aber grad nicht.

Wenn Du keine berechneten Spalten verwendest, ist es vielleicht einfach ein Tippfehler oder Syntaxfehler, der zu einer nicht plausiblen Fehlermeldung führt.
Wenn doch, müsste es ja mit der Verwendung einer normalen Abfrage statt einer berechneten Spalte getan sein oder? Du bildest Deine "berechnete Spalte" erst in der Abfrage und die verwendest Du dann weiter, statt der Tabelle.
 
Hallo Markus,

berechnete Spalten und Nachschlagefelder in Tabellen verursachen regelmäßig Schwierigkeiten. Salopp gesagt: Kannste vergessen. Sie sind wohl nur eingebaut worden, weil Nutzer keine Abfragen und darauf basierende Formulare erstellen wollten. Wie @dabadepdu bereits sagt, mal anders formuliert:
Tabellen und die Felder darin sollten atomar, ohne Redundanzen angelegt sein. Tabellen dann über Schlüssel/Fremdschlüssel in Beziehung gesetzt. Berechnungen gehören in Abfragen und ggf. Formulare/Berichte. Zeige mal das Beziehungsfenster deiner DB. Oder besser, Lade eine abgespeckte, anonymisierte Version der DB hier hoch.
 
Danke für die raschen Rückmeldungen.
Anbei übermittle ich euch eine gleich meine Datenbank mit ein paar Test-Einträgen in den Tabellen Sportart und Tagebuch.

Wundert euch nicht, dass in der Tabelle Saisonen auch Jahreszeiten etc vorkommen (das benötige ich nämlich auch für meinen 2. Datenbank die Energieverbräuche auswertet).

Grüße
Markus
 

Anhänge

Werbung:
Hallo,
ich habe mal kurz einen Blick auf die DB geworfen. Wie bereits gesagt, ist das ja keine DB im klassischen Sinn. Es sind über Nachschlagefelder verknüpfte Tabellen. Genau das macht es schwierig die Tabellen in weiteren Abfragen vernünftig zu nutzen, weil Access schon intern, wegen der Nachschlagefelder eigene Abfragen generiert.
Besser ist es keine Nachschlagefelder zu verwenden, sondern die Tabellen erstmal vernünftig über Beziehungen zu verknüpfen. Diese werden dann ja automatisch in Abfragen genutzt, bzw. vorgeschlagen.
Alle Eingaben, bzw. die Datenpflege sollten dann über Formulare und nicht direkt in die Tabellen erfolgen. Das eröffnet Dir alle Möglichkeiten die Eingabedaten zu prüfen und berechnete Felder und Summen zu generieren. Deshalb sollten die Formulare, wo Du ja offensichtlich noch garnicht tätig warst, möglichst auch nicht direkt auf die Tabellen, sondern auf entsprechende Abfragen basieren.
Ich empfehle dein theoretisches Datenbankwissen noch weiter aufzufüllen. Ohne das geht es nicht. Access ist nicht Excel, wo man einfach mal loslegt und alles andere ergibt sich dan schon.
Schau mal unter:
Access-Tutorial: Lernen Sie Microsoft Access Datenbanken zu erstellen!
 
Zurück
Oben