Announcement

Collapse
No announcement yet.

Berechnung von Time-Felder mit Interbase 6

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

  • Berechnung von Time-Felder mit Interbase 6

    <html xmlns="urn:schemas-microsoft-comfficeffice"
    xmlns:w="urn:schemas-microsoft-comffice:word"
    xmlns="http://www.w3.org/TR/REC-html40">

    <head>
    <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
    <meta name=ProgId content=Word.Document>
    <meta name=Generator content="Microsoft Word 9">
    <meta name=Originator content="Microsoft Word 9">
    <link rel=File-List
    href="./Ich%20habe%20eine%20Tabelle%20in%20dieser%20Form%2 0erstellt-Dateien/filelist.xml">
    <title>Ich habe eine Tabelle in dieser Form erstellt: </title>
    <!--[if gte mso 9]><xml>
    <oocumentProperties>
    <o:Author>Administrator</o:Author>
    <o:LastAuthor>Administrator</o:LastAuthor>
    <o:Revision>1</o:Revision>
    <o:Created>2002-11-26T11:48:00Z</o:Created>
    <o:LastSaved>2002-11-26T12:04:00Z</o:LastSaved>
    <o:Pages>1</o:Pages>
    <o:Company>Dr. Böckmann &amp; Partner</o:Company>
    <o:Lines>1</o:Lines>
    <o:Paragraphs>1</o:Paragraphs>
    <o:Version>9.2812</o:Version>
    </oocumentProperties>
    </xml><![endif]--><!--[if gte mso 9]><xml>
    <w:WordDocument>
    <w:HyphenationZone>21</w:HyphenationZone>
    </w:WordDocument>
    </xml><![endif]-->
    <style>
    <!--
    /* Font Definitions */
    @font-face
    {font-family:"Arial Unicode MS";
    panose-1:2 11 6 4 2 2 2 2 2 4;
    mso-font-charset:128;
    mso-generic-font-family:modern;
    mso-font-pitch:variable;
    mso-font-signature:-1 -369098753 63 0 4129023 0;}
    @font-face
    {font-family:Verdana;
    panose-1:2 11 6 4 3 5 4 4 2 4;
    mso-font-charset:0;
    mso-generic-font-family:swiss;
    mso-font-pitch:variable;
    mso-font-signature:536871559 0 0 0 415 0;}
    @font-face
    {font-family:"\@Arial Unicode MS";
    mso-font-charset:128;
    mso-generic-font-family:modern;
    mso-font-pitch:variable;
    mso-font-signature:-1 -369098753 63 0 4129023 0;}
    /* Style Definitions */
    p.MsoNormal, li.MsoNormal, div.MsoNormal
    {mso-style-parent:"";
    margin:0cm;
    margin-bottom:.0001pt;
    mso-pagination:widow-orphan;
    font-size:12.0pt;
    font-family:"Times New Roman";
    mso-fareast-font-family:"Times New Roman";
    mso-bidi-font-family:"Times New Roman";}
    p
    {margin-right:0cm;
    mso-margin-top-alt:auto;
    mso-margin-bottom-alt:auto;
    margin-left:0cm;
    mso-pagination:widow-orphan;
    font-size:7.0pt;
    font-family:Verdana;
    mso-fareast-font-family:"Arial Unicode MS";
    mso-bidi-font-family:"Arial Unicode MS";}
    @page Section1
    {size:595.3pt 841.9pt;
    margin:70.85pt 70.85pt 2.0cm 70.85pt;
    mso-header-margin:35.4pt;
    mso-footer-margin:35.4pt;
    mso-paper-source:0;}
    div.Section1
    {page:Section1;}
    -->
    </style>
    </head>

    <body lang=DE style='tab-interval:35.4pt'>

    <div class=Section1>

    <p>Ich habe eine Tabelle in dieser Form erstellt: </p>

    <p><span lang=EN-GB style='mso-ansi-language:EN-GB'><PRE>CREATE TABLE Mediainf (
    MediaInf_ID Integer, <BR> Nummer VARCHAR(10) COLLATE DE_DE, <BR> Gesamtzeit TIME,
    <BR> Restzeit TIME, <BR> Spielzeit TIME; <BR>COMMIT WORK;</PRE> </span></p>

    <p>in diese Tabelle spiele ich via ibPump Daten fehlerlos ein. </p>

    <p>Anschliessend soll ein Script Werte dieser Tabelle aktualisieren: </p>

    <p><PRE>UPDATE MediaInf <BR> SET Spielzeit = Gesamtzeit - Restzeit;<BR>COMMIT WORK;</PRE> </p>

    <p>wobei die Operation mit </p>

    <p><B>Conversion error from string &quot;10800.0000&quot; on line xxx Update
    MedianInf SET Spielzeit = Gesamtzeit - Restzeit </B></p>

    <p>abgebrochen wird. </p>

    <p>Versuche Gesamtzeit und Restzeit mit CAST(Gesamtzeit as Time) zu behandeln
    schlugen ebenfalls fehl. </p>

    <p>Die Berechnung mit Delphi-Feldern klappt anstandslos. </p>

    <p>Wer kann helfen? </p>

    <p>Gruss Bert <br clear=left style='mso-special-character:line-break'>
    </p>

    <p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]</p>

    </div>

    </body>

    </html>

  • #2
    ich glaube da etwas gelesen zu haben, daß das mit Dialect 1 und 3 zusammenhängt. Ich benutze Dialect 3 und Timestamp. Das geht. In Delphi muß man das ganze dann als DateTime behandeln.

    Aber dies ist nur ein Hinweis ohne Gewähr

    Comment


    • #3
      Vielen Dank für den Tip, werde ich mal ausprobieren

      Tschüss Ber

      Comment


      • #4
        Hat leider nicht geklappt. Die Ursache liegt darin, dass das Resultat dieser Operation im Interbase Decimal(9,4) ist. Damit hat man die berechnete Zeit in "Sekunden" vorliegen. Jetzt muesste man diese Zeit nur noch komfortabel in das Time bzw. Timestamp-Format auf dem Interbase-Server umrechnen können, wie geht das!?

        Tschüss Ber

        Comment


        • #5
          Hallo Bert,

          mit "cast((Gesamtzeit - Restzeit) * 24 * 60 * 60 as integer)" erhält man die Differenz in Sekunden.

          Ein Time-Feld enthält die Angabe einer Uhrzeit und keine Zeitdifferenz. Eine Rechnung "Uhrzeit - Uhrzeit = Uhrzeit" macht deshalb in meinen Augen nicht viel Sinn.

          Das Feld Spielzeit darf deshalb nicht vom Typ Time sein.

          Tschau

          Torste

          Comment


          • #6
            Hallo Torsten
            vielen Dank für den Tip, der so auch funktioniert. Aber als Ergänzung hier den Hintergrund für die auf den ersten Blick sicher unsinnige Berechnung.
            Ich möchte die Spielzeit eines Videotapes berechnen um nach dieser Spalte sortieren lassen, d.h. der Wert muß schon in der Tabelle stehen. Ich kann natürlich jedesmal mit einer Stored Procedures o.ä. die Spielzeit ermitteln. Auch wollte ich die Nutzung des Oncalcfield-Ereignisses damit umgehen.

            Tschüss

            Ber

            Comment


            • #7
              Hallo Bert,

              in Deinem Fall würde Spielzeit als Integer definieren und mit dem bereits gezeigten "Cast" die Anzahl der Sekunden speichern. Dann kannst Du doch wunderbar nach nach der jeweiligen Spielzeit sortieren.

              Zusätzlich würde ich dann noch einen "Before-Insert- sowie Before-Update-Trigger" erstellen in dem automatisch die Spielzeit errechnet wird.

              Falls Dir die Anzeige in Sekunden nicht gefallen sollte, dann kann man entweder auf eine UDF zurückgreifen die die entsprechende Formatierung übernimmt oder Du formatierst Dir das mit Cast selber.

              Tschau

              Torste

              Comment

              Working...
              X