PDA

Vollständige Version anzeigen : Anfangszeit + Dauer = Endzeit


Joachim Hofmann
24.08.2001, 09:17
Hallo,

Vorliegend habe ich eine Texttabelle mit einer Aufzeichnung von (SQL Server)-Jobs, wo u.a. deren:
*Start-Uhrzeit* (run_time, in hhmmss (24h))
und deren *Laufdauer* (run_duration, in s)
drinsteht:

run_time |run_duration
-----------|------------
93000| 17
93016| 344
93015| 2341
93014| 41
93013| lll
93012| lll
93010| 345
93009| 1
93004| 5
93003| 1
.................


Frage a) was wäre der evtl. geschickteste Weg, um diese Spalten in einem für gewöhnliche Menschen *lesbaren Format* zu importieren bzw. hinterher Format umzustellen?
Frage b) (wichtiger als a)) Wie kann ich aus run_time + run_duration die *Endzeit* des Jobs errechnen?


Danke

<p align="left"><font size="1" face="Century Gothic"><font color="#000000">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag ein Link entfernt.</font>

jinx
25.08.2001, 18:32
<font size="2" face="Century Gothic">Moin, Achim,

folgender Vorschlag:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> SQL_Laufzeit()
_
Application.ScreenUpdating = <span class="TOKEN">False</span>
<span class="REM">'&quot;Auseinandernehmen&quot; der Anfangszeit</span>
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> ActiveCell.Value &lt;&gt; &quot;&quot;
i = Len(ActiveCell.Value)
altsek = Right(ActiveCell.Value, 2)
ActiveCell.Offset(0, 5).Value = altsek
<span class="REM">'Pr&uuml;fen, ob L&auml;nge des Strings 5 oder 6 Zeichen</span>
<span class="TOKEN">If</span> i &lt;= 5 <span class="TOKEN">Then</span>
altmin = Mid(ActiveCell.Value, 2, 2)
<span class="TOKEN">Else</span>
altmin = Mid(ActiveCell.Value, 3, 2)
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
ActiveCell.Offset(0, 4).Value = altmin
<span class="TOKEN">If</span> i &lt;= 5 <span class="TOKEN">Then</span>
alth = Left(ActiveCell.Value, 1)
<span class="TOKEN">Else</span>
alth = Left(ActiveCell.Value, 2)
<span class="TOKEN">End</span> <span class="TOKEN">If</span>
ActiveCell.Offset(0, 3).Value = alth
ActiveCell.Offset(0, 6).Value = (alth * 3600 + altmin * 60 + altsek)
<span class="REM">'Auseinandernehmen der Laufzeit</span>
ActiveCell.Offset(0, 1).Select
LZ = ActiveCell.Value
ActiveCell.Offset(0, 6).Value = ActiveCell.Offset(0, 5).Value + LZ
EndWert = ActiveCell.Offset(0, 6).Value
Wert1 = Int(EndWert / 3600)
Wert2 = Int((EndWert - Wert1 * 3600) / 60)
Wert3 = EndWert - ((Wert1 * 3600) + Wert2 * 60)
ActiveCell.Offset(0, 7).Value = Wert1
ActiveCell.Offset(0, 8).Value = Wert2
ActiveCell.Offset(0, 9).Value = Wert3
ActiveCell.Offset(0, 10).Value = Wert1 &amp; &quot;:&quot; &amp; Wert2 &amp; &quot;:&quot; &amp; Wert3
ActiveCell.Offset(1, -1).Select
<span class="TOKEN">Loop</span>
Application.ScreenUpdating = <span class="TOKEN">True</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)

Hintergrund: Auf diese Art ist nur bei Überschreitung von Mitternacht eine Kontrolle auf Datumserhöhung nötig.

Es geht auch, indem man die Laufzeit umrechnet, aber dann muss bei Minuten (sprich Sekunden > 60) und Minuten (dito) und abschließend bei Stunden geprüft werden....

Was für Werte sind dies?
93013| lll
93012| lll

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

Joachim Hofmann
27.08.2001, 13:47
Hallo jinx,

Vielen Dank erstmal.
Irgendwo zwischendurch läuft das Makro auf, habe noch nicht herausgefunden, wieso, vermutlich ist was mit den Ursprungswerten falsch formatiert. Das muß ich mir noch genauer ansehen.

diese komischen Werte "lll" sind nur ein Versehen.


Achim

jinx
27.08.2001, 19:31
<font size="2" face="Century Gothic">Moin, Achim,

nach Deinem Beitrag habe ich überprüft, ob die Formatierung der Zellen evtl. Einfluß auf die Arbeit hat - aber negativ: sowohl Standard als auch Text und Zahl liefern bei dem Probelauf das Ergebnis ab. Allerdings sind bei mir die Werte direkt in die Zellen eingetragen worden - vielleicht gibt´s da bei Dir noch irgendwelche Leerzeichen?

Zum Makro: Aktive Zelle muss bei Aufrufen die erste Zelle mit Zahl (im Beispiel also 93000) sein.
Die Lösung mit 2 Abfragen nach der Länge des Strings könnte zusammengefaßt werden - kommt davon, wenn man Teile zusammenstöpselt...

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag die Signatur angepasst...</font>