Neuigkeiten:

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

Mobiles Hauptmenü

Zeiträumliche Abfrage

Begonnen von Mykis, März 28, 2023, 13:00:13

⏪ vorheriges - nächstes ⏩

ebs17

ZitatDie Phänologie im Deutschen Wetterdienst befasst sich mit den im Jahresablauf periodisch wiederkehrenden Wachstums- und Entwicklungserscheinungen der Pflanzen. Es werden die Eintrittszeiten charakteristischer Vegetationsstadien (Phasen) beobachtet und festgehalten. Sie stehen in enger Beziehung zur Witterung und zum Klima und eignen sich daher für die verschiedensten Anwendungsgebiete und für vielseitige wissenschaftliche Untersuchungen.
Bezugnehmend auf eine solche Definition erwartete ich keine exakten Datumswerte und keine Jahre, weil sich Jahreszeiten wiederholen.

Rückfrage: Über welchen Zeitraum insgesamt erstrecken sich Deine Datumswerte, vor allem jene, die ausgewertet werden sollen?

Wenn man einen einzelnen zusammenhängenden Zeitraum  betrachtet, würde man den Zeitraum einfach, sicher und variabel über die beiden Grenzwerte filtern:
WHERE Datumswert BETWEEN parVON AND parBISBeispiel:
November - März => zwischen 01.11.2022 und 31.03.2023
Januar - Juni => zwischen 01.01.2023 und 30.06.2023

Mit DateSerial kann man aus einer Monatszahl einen Monatsersten wie auch einen Monatsletzten berechnen, um dann solche Datumswerte in die Abfrage einzusetzen.
DateSerial(2023, 6 + 1, 0) => 30.06.2023
Mit freundlichem Glück Auf!

Eberhard

MzKlMu

Hallo,
welchen Sinn macht hier ein Datumsfeld?
Ein Feld für eine Zahl (1-12) ist doch da völlig ausreichend.
Gruß Klaus

Mykis

Für die Auswertung der Phaenologie brauchen wir z. B. folgendes fiktives Ergebnis:


Frage: Welche Arten und wieviel Funde der Gattung "Agaricus" fruktifizieren von November - April ?

Datenbank-Antwort sollte sein:

Agaricus vernus (100 Funde)

Agaricus vernalis (99 Funde)

Agaricus printempus (88 Funde)

Agaricus praecox (77 Funde)

MzKlMu

Hallo,
siehe #16.

Ein Datumsfeld ist doch dazu völlig unbrauchbar/ungeeignet.
Es reicht doch einfach nur den Monat als reine Zahl von 1-12 zu erfassen. Wozu ein vollständiges Datum.
Gruß Klaus

ebs17

Zwischen FRAGE und DatenbankANTWORT liegt die Tabelle mit Daten. Wie ist die aufgebaut?
Idealerweise so, dass man direkt einfache Abfragen ausführen kann => optimiert auf Verarbeitung, nicht auf Angucken durch Menschen.

Zum Angucken der Tabelleninhalte würde man also vielleicht eine andere Auswertung fahren. In jedem Fall muss man sich bewusst machen, dass die genaue interne Speicherung und eine Darstellung nach außen recht unterschiedlich sein können.
Mit freundlichem Glück Auf!

Eberhard

Mykis

Also ich habe nochmal den ganzen Tag "gebastelt". Ein Feld einer Abfrage (egal welche Tabelle sich dahinter verbirgt), das nur die Zahlen 1-12 (meine Monate) enthält, kann man entweder so ">=1 AND <=7" (symbolisch für Januar bis Juni) filtern oder so ">=11 OR <=4" (symbolisch für November bis April) filtern. Das beides in einer Abfrage funktioniert, habe ich nicht hinbekommen.

LG
Frank

MzKlMu

Hallo,
und noch mal die Frage, warum ist das ein Datum, das macht doch hier keinen Sinn.
Wenn Du hier eine einfache ZAhl (1-12) verwendest, dürfte das Ganze wesentlich einfacher werden.

Und wenn Du schon Beispiele machst, sollten die richtig sein.
Zitatso ">=1 AND <=7" (symbolisch für Januar bis Juni)
Das geht bis Juli.
Gruß Klaus

Mykis

Sorry, natürlich Juli!
Es geht doch nur noch um die einfachen Zahlen 1-12. Das Formular bringt mir entweder die Zahlen 1-12, dann muss ich in der Abfrage mit "AND" arbeiten oder es bringt die Zahlen 12-1, dann muss ich in der Abfrage mit "OR" arbeiten. Vielleicht drücke ich mich als Laie etwas umständlich aus, was man mir bitte verzeihen möge.
Ich könnte eventuell im Formular auch mit "CurrentDb.QueryDefs("Phaenologie_1)").SQL ="....." die SQL-Anweisung ändern, aber ich dachte, es geht eleganter.

MzKlMu

Hallo,
wenn Du die Monate von und bis gewählt hast, wie wird dann die Abfrage gestartet/aufgerufen?
VBA Code ?
Gruß Klaus

Mykis

#24
Moin,

die dazugehörige Abfrage ist die Datensatzquelle hinter dem Unterformular und die Monate von ud bis sind dann das Kriterium in dieser Abfrage. Wenn im Formular die entsprechende Auswahl getroffen wird, zeigt das verknüpfte Unterformular sofort das Ergebnis.

MzKlMu

Hallo,
zeige mal die Abfrage (SQL).
Gruß Klaus

Mykis

Hier die SQL:

SELECT DISTINCTROW Count(Phaenologie_art2.art_nr) AS AnzahlVonDuplikaten, Phaenologie_art2.art_nr, Haupt.Gattung, [Gattung] & ' ' & [Art] AS artname, Monat.zahl1
FROM Monat INNER JOIN (Phaenologie_art2 INNER JOIN Haupt ON Phaenologie_art2.art_nr = Haupt.art_nr) ON Monat.Zahl = Phaenologie_art2.teil1
GROUP BY Phaenologie_art2.art_nr, Haupt.Gattung, [Gattung] & ' ' & [Art], Monat.zahl1
HAVING (((Haupt.Gattung)=[Forms]![ArtPhaenologie_1]![Auswahlfeld]) AND ((Monat.zahl1)>=[Forms]![ArtPhaenologie_1]![Kombinationsfeld24] And (Monat.zahl1)<=[Forms]![ArtPhaenologie_1]![Kombinationsfeld26]))
ORDER BY Count(Phaenologie_art2.art_nr) DESC;

Mykis

So sieht das Formular aus:

Sie dürfen in diesem Board keine Dateianhänge sehen.

ebs17

Was Du vorher verstehen solltest:
WHERE Monatsfeld >= 11 OR Monatsfeld <= 3
Das sind im Unterschied zum Zwischen-Kriterium ZWEI Kriterien, verknüpft über OR.

Du brauchst hier also zwei Auswahlen, die sich von der bisherigen Auswahl per ComboBoxes unterscheidet. Diese beiden Auswahlen wären dann zu einem Gesamtfilter zusammenzusetzen.
Monat.zahl1>=Forms!ArtPhaenologie_1!Kombinationsfeld24 And Monat.zahl1<=Forms!ArtPhaenologie_1!Kombinationsfeld26So etwas als Direkteintrag ist für die diskutierte Anforderung unbrauchbar.
Mit freundlichem Glück Auf!

Eberhard

Mykis

#29
Hallo Eberhard,

Zitat von: ebs17 am März 30, 2023, 13:44:05Du brauchst hier also zwei Auswahlen, die sich von der bisherigen Auswahl per ComboBoxes unterscheidet. Diese beiden Auswahlen wären dann zu einem Gesamtfilter zusammenzusetzen.

genau darum geht es mir.
Ich hatte als SQL oben nur die eine Abfragemöglichkeit kopiert. So wäre das zweite Kriterium definiert:

Monat.zahl1>=Forms!ArtPhaenologie_1!Kombinationsfeld24 OR Monat.zahl1<=Forms!ArtPhaenologie_1!Kombinationsfeld26
Ist denn da ein Gesamtfilter möglich? Ich habe das nicht hinbekommen und deshalb meine Anfrage im Forum.

Gruß
Frank