Office: (Office 2010) Zeiträume in zwei Tabellen vergleichen

Helfe beim Thema Zeiträume in zwei Tabellen vergleichen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Ich habe die Gedanken aus Beitrag #43 in ein Beispiel umgesetzt. - Eine passende Kalendertabelle wird live erstellt. - SQL lasse ich das tun, was es... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von SebbiB, 14. Juni 2015.

  1. Zeiträume in zwei Tabellen vergleichen


    Ich habe die Gedanken aus Beitrag #43 in ein Beispiel umgesetzt.

    - Eine passende Kalendertabelle wird live erstellt.
    - SQL lasse ich das tun, was es sehr gut kann. Die Schwächen von SQL werden über in Temp-Tabellen gespeicherte Zwischenergebnisse sowie einen über VBA gesteuerten Ablauf entschärft.

    Auf die Auslagerung der Temp-Tabellen in ein zusätzliches temporäres Backend habe ich hier im Beispiel der Einfachheit halber verzichtet.

    (Falls die Temp-Tabellen nach Ausführen der Startenprozedur noch nicht sichtbar sind, in den Navigationsbereich klicken und F5 zur Aktualisierung klicken.)

    Falls der TE sich ein Testen zutraut, wäre ich über eine Aussage zur Performance recht dankbar.
     
  2. Ich schliesse mich an, was meine geänderte Prozedur aus #44 angeht.
     
    hcscherzer, 23. Juni 2015
    #47
  3. Anbei die DB im 2000-er Format.
     
  4. Zeiträume in zwei Tabellen vergleichen

    Hallo an Alle,

    ich habe jetzt im ersten Schritt die Version von Eberhardt getestet.

    Ist natürlich fern ab von dem was ich am Ende wirklich technisch nachvollziehen kann im VBA-Code selbst.

    Und am Ende hat es funktioniert *top

    Leider musste ich meine Daten nochmal konsolidieren da mir nach 45 Minuten der PC sagte das nicht genügend Ressourcen zur Verfügung stehen und abgebrochen hat.

    Ich habe dann nochmal den roten Stift die Hand genommen und Daten reduziert und dann hat es tatsächlich nach 30 Minuten geklappt.

    Es waren 13000 Kunden mit 51000 Zeiträumen. der erste Tag an dem gerechnet werden musste, war dann der der 01.01.2010 welchen ich sozusagen dann auch als frühsten Tag eines Zeitraums eingegrenzt habe in TAB2.

    Jetzt werde ich noch in der Stichprobe schauen, ob richtig gerechnet wurde.

    Die Tabelle von Hans-Christian wird natürlich auch noch getestet *Smilie

    Vielen Dank für die Hilfe
     
    SebbiB, 24. Juni 2015
    #49
  5. So habe jetzt ein paar Stichproben genommen und leider scheint die Berechnung teilweise nicht zu stimmen (sprich mal ist das Ergebnis korrekt und mal nicht).

    Ich lade im Anhang mal die Datei mit meinen angepassten Werten/Ergebnissen hoch (leider nur abgespeckt da die maximale Dateigröße sonst überschritten wird).

    Beispiele für Fehlberechnung:

    Berechnung offene Zeiträume:
    ID4 müsste als Zeitraum 18.08.2014 bis 31.08.2014 rauskommen

    Berechnung erledigte ID:
    ID33 , diese wird als erledigt angezeigt obwohl in TAB2 kein anderer Zeitraum existiert.

    lg Sebastian
     
    SebbiB, 24. Juni 2015
    #50
  6. Moin Sebastian.
    Ich hab Deine Tab1 und Tab2 in meine DB importiert (und umbenannt).
    Bei mir ist es offensichtlich korrekt. (Ergebnisse in AV und TF).
    Und dauert unter 5 Sekunden - fill_kal() braucht etwas länger als fehl_zeit().
     
    hcscherzer, 24. Juni 2015
    #51
  7. Hallo Hans-Christian,

    habe es probiert, leider bricht er nach einer Stunde ab wegen zu knapper Ressourcen.

    Bis dahin hat er aber zumindest 2,5 Mio Datensätze in die Tabelle TAF geschrieben und 4 offene Zeiträume richtig angeben in TF.

    Von der Performance scheint die Datei von Eberhardt besser zu laufen. Das Problem ist, ich weiß nicht ob das jetzt ggf. an der Berechnung liegt.
     
    SebbiB, 24. Juni 2015
    #52
  8. Zeiträume in zwei Tabellen vergleichen

    Das beste aus beiden Versionen wäre natürlich klasse *biggrin.gif*

    Ich weiß , ich hab gut reden...aber ich kann das schlicht und ergreifend nicht *depressed
     
    SebbiB, 24. Juni 2015
    #53
  9. Das kann ich nicht nachvollziehen. ID4 beginnt am 01.01.2012 und hat kein Ende. Die Zeiträume aus Tab2 decken nur einen Teil des Zeitraumes ab und nicht den Zeitraum vollständig.

    Oder sollen nur Restzeiträume ermittelt werden? Dann hatte ich die Aufgabe nicht verstanden und daher mit etwas anderer Zielsetzung gelöst.
    Ich kann das umschreiben.

    Das ist klar. Hier ist also ein zusätzlicher Abgleich mit Tab2 notwendig.
    (Eine sofort gelieferte vollständige Tabelle hätte das offenbahrt.)

    Code:
    Was genau ist nicht verständlich?
     
  10. Hallo Eberhardt,

    ja die Aufgabe bestand im Auswerten der Teilzeiträume, wenn du das umschreiben könntest wäre das klasse *top

    Bezüglich des VBA - Code meinte ich, dass zwar einzelne Sachen daraus für mich ableiten kann, aber niemals auch nur Ansatzweise so auf den Weg hätte bringen können, das am Ende so ein Ergebnis zur Folge hat.

    lg Sebastian
     
    SebbiB, 25. Juni 2015
    #55
  11. Nun, wenn es nur um die Resttage und daraus gebildete Zeiträume geht, wird es einfacher und direkter und sollte auch ein Stück schneller sein.

    Hinweise zur Demo:

    - Zwischenergebnisse aus Abfragen werden nicht unmittelbar in aufbauenden Abfragen weiterverwendet, sondern in Temp-Tabellen gespeichert. In den Temp-Tabellen werden per DDL Felder nachindiziert und teilweise nachträglich mit einem Autowertfeld versehen.
    Temp-Tabellen werden zu Beginn des Ablaufes komplett gelöscht und erst im Ablauf der Berechnung neu erstellt. Somit beziehen sich Berechnungsergebnisse auf die aktuellen Inhalte der Ursprungstabellen, Datenanomalien werden praktisch ausgeschlossen.

    - In der verwendeten Kalendertabelle gibt es neben dem laufenden Datum als zusätzliche Felder den Vortag sowie den Folgetag zum Datum. Das bietet folgende Effekte:
    Die Berechnung auf Vor- bzw. Folgetag findet nur genau einmal statt und kann dann nachgeschlagen werden. In Abfragen würde das ja mehrfach z.B. pro ID erfolgen.
    Man kann unmittelbar im Datensatz verknüpfen, und über Tabellenfelder kann auch ein Index genutzt werden.

    - Ein offengelassener bis-Wert (NULL) wird nicht per Nz abgefangen, sondern mit der Bedingung Datumswert Is Null . Damit laufen die Tage bis ans Ende der bereitgehaltenen Kalendertabelle. Die Kalendertabelle selber wird aber in der Abfrage auf MaxDate() + 1 begrenzt, wobei MaxDate() das höchste bis-Datum aus beiden Tabellen ist. Der Folgetag dazu ist also ein typischer Wert für eine Fortsetzung und somit geeignet, am Ende der Auswertung wieder in NULL rückverwandelt zu werden.

    - Man kann nachvollziehen, dass eigene Möglichkeiten steigen, wenn man Tabellenstrukturen nicht nur per Assistenten zusammenklicken, sondern auch per Data Definition Language (DDL) erstellen und ändern kann.
     
  12. Das ist ein guter Trick.
    Darauf muss man erst mal kommen.
    Hochachtung.
    Werd ich mir merken.
     
    hcscherzer, 25. Juni 2015
    #57
  13. Zeiträume in zwei Tabellen vergleichen

    Hallo Eberhardt,

    das hat jetzt funktionier! *dance *top

    Ich hatte allerdings ein paar komische Effekte beim erstmaligen Ausführen (habe das jetzt zweimal getestet und immer das gleiche Ergebnis).

    Wenn ich erstmalig das Script auf meine frisch importierten Daten laufen lasse, rechnet er die offenen Zeiträume nicht richtig. Die abgedeckten Zeiträume stimmten bis jetzt jedoch. Ich habe dann einfach noch einmal das Script drüber laufen lassen und dann wurden auch die richtigen Ergebnisse angezeigt.

    Eine schlüssige Erklärung hierzu habe nicht *confused.gif*

    lg Sebastian
     
    SebbiB, 28. Juni 2015
    #58
  14. Beginne und Enden von offenen Zeiträumen werden getrennt ermittelt und in Temp-Tabellen abgelegt. Stimmen diese?

    Nachfolgend werden immer erster Beginn und erstes Ende usf. zusammengeführt. Vielleicht gibt es da Probleme.
     
Thema:

Zeiträume in zwei Tabellen vergleichen

Die Seite wird geladen...
  1. Zeiträume in zwei Tabellen vergleichen - Similar Threads - Zeiträume Tabellen vergleichen

  2. Zeitdifferenz in Monaten wenn Zeitraum...

    in Microsoft Excel Hilfe
    Zeitdifferenz in Monaten wenn Zeitraum...: Moin zusammen, ich habe hier eine etwas knifflige Aufgabe und komme im Moment nicht auf die richtige Formel. Vielleicht kann mir jemand helfen. Ich habe eine Tabelle mit einem Anfangsdatum, einen...
  3. Anwesenheit in einem Zeitraum grafisch darstellen

    in Microsoft Excel Hilfe
    Anwesenheit in einem Zeitraum grafisch darstellen: Hallo, ich habe folgende Daten (Anwesenheit von Menschen in diesem Zeitraum): Spalte A: Startzeitpunkt in hh:mm z.B. 15:18 Uhr Spalte B: Endzeitpunkt in hh:mm z.B. 23:35 Uhr Achtung: Es gibt...
  4. PowerQuery Zeiträume miteinander vergleichen

    in Microsoft Excel Hilfe
    PowerQuery Zeiträume miteinander vergleichen: Halli Hallo, ich habe mal eine Demo-Datei hochgeladen in welcher das Problem nochmal erklärt wird. In der tabAbwesenheiten überlappen sich teilweise die Zeiträume mit denen in der...
  5. Werte auf Zeitraum verteilen

    in Microsoft Excel Hilfe
    Werte auf Zeitraum verteilen: Hallo, aktuell bin ich dabei eine Mittelabflussplanung in Excel zu erstellen. Zu diesem Zweck will ich alle Aufträge die ein definiertes Start- und Enddatum haben auf die jeweiligen Monate...
  6. Tabelle nach Zeitraum filtern

    in Microsoft Excel Hilfe
    Tabelle nach Zeitraum filtern: Hi Leute ich brauche mal eure Hilfe: Ich habe eine Tabelle in der ca 200 Ereignisse mit Datum und Ort aufgelistet sind. Nun möchte ich diese Tabelle nach einem Zeitraum filtern. Zum Beispiel alle...
  7. Prüfen ob Datum zwischen zeitraum -> in neue Tabelle kopieren...

    in Microsoft Excel Hilfe
    Prüfen ob Datum zwischen zeitraum -> in neue Tabelle kopieren...: Hallo VBA´ler.... ich möchte folgenden Code erweitern, er soll jetzt nicht nur prüfen ob das Datum in der Spalte 10 also J nicht nur über dem definierten datum liegt sondern ob er zwischen dem...
  8. Überlappende Zeiträume in zwei Tabellen

    in Microsoft Access Hilfe
    Überlappende Zeiträume in zwei Tabellen: Hallo zusammen, ich habe zwei verschiedene Tabellen (TABELLE_A und TABELLE_B) in einer Access-Datenbank, die jeweils über ein Kennzeichen (ID) verknüpfbar wären. Beide Tabellen haben folgenden...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden