Juli 02, 2022, 18:46:28

Neuigkeiten:

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


Kombinationsfelder MIT MEHRAUSWAHL voneinander abhängig

Begonnen von Andi123x4, April 07, 2022, 13:14:57

⏪ vorheriges - nächstes ⏩

Andi123x4

Vielen Dank, es war mein Denkfehler mit den Listenfeldern, ich habe es jetzt so gemacht wie bei Subtasks und Tasks und jetzt hat es geklappt!

Tut mir leid du hast recht, hat jetzt aber alles geklappt danke dir für all die Hilfe wirklich, weiß ich zu schätzen!

Andi123x4

@DF6GL

Ich will nun in einem Bericht erfassen, wie viele Projekte in jedem Monat waren gruppiert nach Type of Service

Quasi:
        Jan   Feb   Mär   Apr  [...] Gesamt
TOS1     2     3     2     1    ....    8
TOS2     2     5     6    ...          13
TOS3

Über Bericht gruppieren und dann Summe komme ich aber nur auf die Gesamtwerte, wie kann ich die Anzahl für die einzelnen Monate ermitteln ?


Andi123x4

Perfekt hat direkt funktioniert, danke! Wenn man sowas nicht weiß schlägt man sich tagelang mit Abfragen rum :-\

Andi123x4

Beim Datum habe ich jetzt nur ein Problem.
Wenn ich die Tage zählen will, wie viele Tage ein Equipment in den jeweiligen Monaten verplant ist, dann werden die Monatsübergänge natürlich nicht berechnet, weil ich das Startdatum als Startzeitpunkt wähle.

Also wenn ich z.B ein Equipment am 28.Mai - 04.Juni im Einsatz hatte, dann werden diese 7 Tage im Mai angezeigt, ich würde es aber gerne richtig anzeigen, 4Tage im Mai und 4 Tage im Juni.

Wie mache ich das am besten ?
Ich hoffe man braucht nicht 30 verschiedene IF-Abfragen (IF Startdatum < 31.05.2022 And EndDatum > 31.05.2022 THEN ...) ?

DF6GL

Hallo,

ZitatWie mache ich das am besten ?


Indem für das Datumsfeld  ein korrekter Datentyp (in der Tabelle) eingestellt, wird:  Datum/Uhrzeit .

Und beschäftige Dich mit dem erforderlichen Datumsformaten in VBA  (#05/28/2022#)  und Jet-SQL (USA-Format: #05/28/2022# , ISO-Format: #2022-05-28#)  als auch mit den VBA-Datumsfunktionen (z. B. DateDiff(),DateAdd(), etc.)

ZitatIch hoffe man braucht nicht 30 verschiedene IF-Abfragen

Nein, das braucht man nicht....

Andi123x4

ZitatIndem für das Datumsfeld  ein korrekter Datentyp (in der Tabelle) eingestellt, wird:  Datum/Uhrzeit .

Das ist bereits eingestellt

ZitatUnd beschäftige Dich mit dem erforderlichen Datumsformaten in VBA  (#05/28/2022#)  und Jet-SQL (USA-Format: #05/28/2022# , ISO-Format: #2022-05-28#)  als auch mit den VBA-Datumsfunktionen (z. B. DateDiff(),DateAdd(), etc.)

Könntest du das etwas genauer ausführen, Ich habe anstatt DateDiff() einfach ([EndDate]-[StartDate]+1) gemacht um so die duration zu ermitteln und mit DateAdd() kann ich ja nur ein Datum in der Zukunft ermitteln, ich komme nicht drauf was du meinst wie ich es umsetzen kann

MzKlMu

Hallo,
ZitatDateAdd() kann ich ja nur ein Datum in der Zukunft ermitteln,
Nein, damit lassen sich auch Datumswerte der Vergangenheit ermitteln. Die Anzahl der Intervalle kann auch negativ sein und liefert somit ein Datum in der Vergangeneheit.
Aus dem Direktbereich:
?DateAdd("m", -10, Date)
17.07.2021
Gruß
Klaus

Andi123x4

Ja das ist mir auch bewusst, das habe ich an einer anderen Stelle auch genauso schon verwendet, ich meine eher wie mir das hilft, in meinem Fall, ich verstehe den Zusammenhang gerade leider noch nicht

Andi123x4

Sagen wir mal ich habe bei einem Equipment StartDate 01.01 und EndDate 05.01, dann mache ich aktuell
Duration = EndDate-StartDate+1  und habe ich eine Kreuztabellenabfrage die Aussieht wie unten im Bild.

Aber wie hilft mir hier DateAdd() ich will ja kein Datum ermitteln sondern die Duration irgendwie aufteilen falls es einen Monatsübergang gibt



DF6GL

Hallo,

die zugrundeliegende Abfrage muss nach Monat gruppiert werden, um die Anzahl pro Monat berechnen zu können.

Hierbei hilft die DatePart()-Funktion.

Andi123x4

@DF6GL Hallo,

Ich habe mir jetzt mal alle Videos zu DatePart() angesehen und die microsoft.docs gelesen, aber diese funktion ist doch nur dafür da einen [part] aus einem Datum zu extrahieren z.B Datum1 = 01.05.2022

DatePart("y",[Datum1]) = 2022 ?

Ich verstehe nicht ganz wie diese funktion helfen soll. Vielleicht stehe ich einfach auf dem Schlauch sorry

Andi123x4

PS.
Irgendwas mache ich bei der Syntax bei DateDiff falsch, obwohl ich es vermeintlich genauso mache wie in der Dokumentation

Ich benutze in der Abfrage einfach das "Aufbauen" dann bekomme ich das:
DatDiff(«Intervall»; «Datum1»; «Datum2»; «ErsterWochentag»; «ErsteWocheDesJahres») Wo ich dann meine Werte einfüge:
DatDiff("d";[Startdatum];[EndDatum])
Dann bekomme ich aber den Fehler #Funktion!
Wenn ich das "d" aber durch [d] ersetze, also quasi ein Feld referenziere, dann kommt die Parameterabfrage logischerweise, dort gebe ich dann ebenso "d" ein und es funktioniert.

Wieso funktioniert es dann nicht wenn ich direkt "d" eingebe so wie oben gezeigt ???

DF6GL

Hallo,


DatDiff("t";[Startdatum];[EndDatum])


Du solltest aber zunächst definieren, wie bei den monats-übergreifenden Datumsbereichen gezählt werden soll:

Startdatum:  10.01.2022   Enddatum: 20.01.2020   Anzahl:  1  Monat: 1
Startdatum:  10.01.2022   Enddatum: 10.02.2020   Anzahl:  1  Monat: 1 ; Anzahl:  1  Monat: 2
Startdatum:  10.01.2022   Enddatum: 10.03.2020   Anzahl:  1  Monat: 1 ; Anzahl:  1  Monat: 2 ; Anzahl:  1  Monat: 3

usw.   ??


In solchen Fällen muss die Where-Codition den Bereich vom Startdatum zum Letzten des Monats und vom Ersten des Montas zum EndDatum abcheckt,wie auch den, bzw. die  Monat(e) der/die zwischen Startdatum+1 und  Enddatum-1 liegt/liegen.

Andi123x4

DatDiff("t";[Startdatum];[EndDatum])
Ouman ich habe echt ne halbe Stunde nicht verstanden woran es liegt, und habe alle verschiedenenen Apostrophe probiert aber klar, es ist die Language, Danke!


Tut mir wirklich Leid aber ich komm nicht drauf wie du das meinst,

ZitatStartdatum:  10.01.2022   Enddatum: 20.01.2020   Anzahl:  1  Monat: 1
Startdatum:  10.01.2022   Enddatum: 10.02.2020   Anzahl:  1  Monat: 1 ; Anzahl:  1  Monat: 2
Startdatum:  10.01.2022   Enddatum: 10.03.2020   Anzahl:  1  Monat: 1 ; Anzahl:  1  Monat: 2 ; Anzahl:  1  Monat: 3

Also so in etwa stell ich mir das auch vor dass es aussehen soll aber die Umsetzung mit irgendeiner WHERE Klausel ist mir nicht geläufig.

Ich habe mal eine kleine Datenbank mit Kreuztabelle und Dummy werten erstellt, vielleicht könntest du es mir an dieser Datenbank zeigen ?