Announcement

Collapse
No announcement yet.

Kaufmännische Datumsdifferenz

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kaufmännische Datumsdifferenz

    Hallo

    suche nach einer Funktion, nach der ich kaufmännisch richtig, zwei Daten subtrahieren kann, damit ich die Diff. Tage erhalte.

    Will heißen

    01.01.2003 - 01.01.2002 = 360 Tage

    Sozusagen das Equivalent zu OOo oder Staroffice
    Tage360 im Calc

    Brauche dies um Prämien taggenau abrechnen zu können.

    Unter http://www.esbconsult.com/esbdates.zip hab ich explicit nichts gefunden. Wer weiß Rat?

    Michael Th. Müller

    PS: Sorry, bin vorhin in den falsche Thread geraten :-)

  • #2
    Frage: Rechnst Du das Jahr mit 360 Tagen, also jeden Monat mit 30 Tagen?

    Habe Dir vorhin im anderen Thread eine Antwort zugemailt. Wenn das nicht reicht, hätte ich dazu vielleicht noch eine Idee. Musste soeben so ein 'blödes' Datumproblem lösen (alle Tage zwischen zwei Daten ohne Samstage und ohne Sonntage, und es läuft).

    Könnte Dir ein Source fragment schicken, so als kleine Idee.

    Gruss
    Hanspete

    Comment


    • #3
      Hi,

      unter BCB gibt es TDateTíme, ich denke das gibt es unter Delphi auch.

      Falls die tatsächliche Anzahl Tage gesucht ist (nicht auf 360 Tage / Jahr-Basis), dann wäre die Lösung:
      <PRE>
      TDateTime Datum1 = TDateTime(2002,1,1);
      TDateTime Datum2 = TDateTime(2003,1,1);
      int Tage = (int) Datum2.Val - (int) Datum1.Val;
      </PRE>

      Sollte in Delphi ähnlich funktionieren. Nur bei der letzten Quelltextzeile bin ich mir nicht sicher, deshalb hier die Erklärung zu der Zeile
      <PRE>
      int Tage = (int)...
      </PRE>
      Das in Klammern stehende int 'castet' den double-Wert von .Val nach Integer, dadurch werden die Nachkommastellen, die die Uhrzeit darstellen, entfernt.

      cu Joche

      Comment


      • #4
        Hallo Hanspeter

        Danke für die schnelle Antwort -Hab D 6 !!!
        Aber mein Problem hast Du richtig erfasst.
        Falls der Sourcecode mit meiner Version auch läuft bin ich für jede Hilfe dankbar.

        see you

        Michael Th. Mülle

        Comment


        • #5
          Hallo Michael
          Du müstest einmal prüfen, ob die Unit DataUtils in D6 schon drin ist. In D5 war das noch nicht der Fall Für alle Fälle einmal die ganze Unit. Ich hoffe Sie ist selbserklärend, sonst mailst Du mich halt an. ([email protected]). Du kannst diese Methode zumindest für die Berechnung der Tage im Monat Anfang und Ende verwenden und die dazwischenliegenden Monat mit 30 multiplizieren. Hoffe es klappt.

          Gruss Hanspeter
          <PRE>
          {************************************************* **************************************************
          Projekt VFAMintegral
          Unit U_TGAE Unit zur Berechnung von Eintritts- resp virtuellen Tagen
          Minustage bei Eintritt nach dem 1. des Eintrittmonats
          Plustage bei Austritt vor Vertragsende
          Author Hanspeter Gasser
          Release 1.0 Upgrades siehe History
          released 30.05.2003 Prerelease
          Projektstart 01.04.2003
          ----------------------------------------------------------------------------------------------------
          Fremdkomponenten keine
          Reportgenerator Crystal Report 9.0 Professional
          Datenbank ADS 6.2
          Entwiklungsversion DELPHI 7 Prof.
          Servicepack 1
          ----------------------------------------------------------------------------------------------------
          History Testversion 01.04.2003
          - Datenbank angepasst (neue Tabelle T_HYST)
          - Prozeduren der neuen Datenbank angepasst.
          alhpa 30.05.2003
          beta
          Release 1.00.000 01.08.2003
          1.00.007 18.08.2003 UNIT U_TAGE eingeführt
          ************************************************** *************************************************}
          unit U_TAGE;

          interface
          uses
          SysUtils, Dialogs, DB, adsdata, DateUtils,

          U_GLOBVAR,
          U_HF,
          U_DM_PERS;

          procedure EINTRITT_TAGE(Sender: TObject);
          procedure AUSTRITT_TAGE(Sender: TObject);

          const
          JAHR = 'yyyy';
          MONTH = 'mm';
          MONTHL = 'mmmm';
          DAY = 'dd';
          DAYL = 'dddd';

          var
          // Variable Datum ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++
          DATUM_VT, // Datum für virtuelle Tage
          DATUM_E, // Eintritt
          DATUM_A, // Austritt eff.
          DATUM_1M, // 1. des Eintritssmonats
          DATUM_LM, // letzter des Austrittsmonats
          DATUM_RF, // Datum Rahmenfrist
          DATUM_ZVE, // Datum ZV Ende
          DATUM_ENM : TDateTime; // Ende Nachmonat (Virtuelle Tage)
          DATUM_VT_S, // Stringdatum für virtuelle Tage
          DATUM_1M_S, // Stringdatum 1. des Eintrittsmonats
          DATUM_ENM_S, // Stringdatum Ende Nachmonat
          DATUM_LM_S, // Stringdatum letzter des Austritssmonats
          MONAT_E, // Monat Eintritt
          MONAT_A, // Monat Austritt eff.
          MONAT_VM : string; // Monat Folgemonat (dem Austritt folgend)
          JAHR_E, // Jahr Eintritt
          JAHR_A, // Jahr Austritt eff.
          JAHR_VT : string; // Jahr des dem Austritt folgenden Monats
          TAGE_E, // Tage vom 1. ds bis Eintritt
          TAGE_A, // Tage vom Austritt bis Ende Monat
          TAGE_VT : integer; // Tage von Austritt bis Ende virtuelle Tage
          // Variable Wochentag ++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++
          WT_E, // Wochentag Eintritt
          WT_A, // Wochentag Austritt
          WT_1M, // Wochentag 1. des Eintrittmonats
          WT_LM, // Wochentag des letzten des Austrittmonats
          WT_VT : string;

          Comment

          Working...
          X