Soll in den Arrays einfach nur der Inhalt von der Spalte 2 stehen (Und das in allen 3?) oder das was dahinter steht?
Also entweder:
3* : [27],[27],[28],[29],[29]
oder:
27: [1, 0, 4, 2]
28: [1, 3]
29: [1, 0, 4, 1]
Soll in den Arrays einfach nur der Inhalt von der Spalte 2 stehen (Und das in allen 3?) oder das was dahinter steht?
Also entweder:
3* : [27],[27],[28],[29],[29]
oder:
27: [1, 0, 4, 2]
28: [1, 3]
29: [1, 0, 4, 1]
Leider entzieht sich das bzgl. der Version meiner Kenntniss. Wenns dir angeboten wurde, gehe ich auch von der richtigen Version aus. Dennoch merkwürdig und mir gehen dann auch die Ideen aus.
Aber wegen dem Errorcode, schau mal hier: https://www.borncity.com/blog/2018/09/0…ler-0xc000007b/
Naja es kann ja schon ein Unterschied zwischen den Versionen sein. 2016 habe ich nie genutzt, bin priv. von 2010 auf 2019 gewechselt und auf der Arbeit haben wir halt O365.
Edit: Laut dem hier: https://www.dummies.com/article/techno…rd-2016-140434/ sieht es aber (vom Verhalten) ähnl. aus
Also bei mir (Office 365 und priv. Office 2019 meine ich auch) hat er immer den zuletzt zum Speichern genutzten Ordner aktiv.
Zudem von den Schritten finde ich es nicht so mega umständlich:
Es kann sein das deine kopierte Datei eine Datei ist, die zum falschen Bit-System (32/64) gehört.
Das solltest du nochmal prüfen. Auch haben diese dann unterschiedliche Speicherorte.
Aber in der Regel ist eine fehlende dll nur ein Symptom von anderen Problem(en). Daher halte ich nicht viel davon plump die dll Dateien zu kopieren.
Hast du das richtige Visual C++ runter geladen und installiert?
Ehm, ich glaube ich habe da was zusammengewürfelt XD du hast recht, ArrayInsert() zu nutzen^^
Ich glaube ich brauche wieder Urlaub
hipfzwirgel : Nicht das ich wüsste. Das wäre dann in etwa so:
Global $time = _24Hour('02:19:04 PM')
Consolewrite($time & @CRLF)
Func _24Hour($time)
$Time = StringSplit($time, ":")
Local $Hour = $Time[1]
Local Const $Minute = $Time[2]
Local Const $Second = StringSplit($Time[3], " ")[1]
Local Const $AM_PM = StringSplit($Time[3], " ")[2]
If $AM_PM = "PM" AND $Hour <> "12" then
$Hour = $Hour + 12
EndIf
If $Hour = "12" then $Hour = "00"
Return $Hour & ":" & $Minute & ":" & $Second
EndFunc
Alles anzeigen
Alina :Wir reden aneinander vorbei^^ Ich habe mich darauf bezogen, das ich eher das vollständige Herunterfahren asl "Default" setzen würde (müsste damit erreicht werden das man den Fastboot abschaltet) anstatt vom Nutzer zu erwarten, das dieser beim Herunter fahren immer die Shift-Taste drückt. Das war ganz unabhängig von der Diskussion über die Genauigkeit.
Ich würde sagen nur per Stringmanagement, da es überall eben in dem von dir bereits gefundenen Vorgaben erwartet wird.
Beispiel fürs Datum:
Das habe ich schon verstanden aber sind die Spaltenüberschriften, nicht im Array wie im Screenshot von Post #7 gmmg ?
Das wäre ja blöd, diese immer unten zu haben, daher mein Vorschlag in Zeile 37 die 0 durch eine 1 zu ersetzen, dann müssten die Spaltenüberschriften oben stehen.
Naja, ich kenne niemanden der den PC mit gedrückter Shift-Taste herunter fährt .
Ggf. wird halt per Default der Fastboot deaktiviert, wenn das immer gewünscht ist den PC "richtig" herunterzufahren anstatt jedesmal irgendeine Taste drücken zu müssen wenn man Herunterfahren anklickt.
Hmm, aber eigentlich gehören die Spaltenüberschriften ja nach oben.
Das Wollte ich eigentlich mit der Angabe der 0 in ArrayInsert erreichen, sehe aber Gerade das ich lt. Doku einen Fehler gemacht habe ("$vRange can be a string containing the rows above which a row is to to be inserted. ").
Ersetze die 0 mal mit einer 1 und teste erneut.
Hab das ja oben als 2. Part hinzugefügt als weitere Möglichkeit.
Hier mal zusammengefasst (ohne Gewähr):
#include <Array.au3>
Global $oConnection, $aRecordSet, $sQuery, $aRecordSetArr, $Spalten
Global $sTableName = "tblTable1"
Global $sDatabaseName = "D:\Test-mdb\Test.mdb"
If Not FileExists($sDatabaseName) Then Exit
$oConnection = ObjCreate("ADODB.Connection")
$oConnection.Open("Driver=Microsoft Access Driver (*.mdb); DBQ=" & $sDatabaseName)
$oRecordSet = ObjCreate("ADODB.RecordSet")
$sQuery = "Select * From " & $sTableName
$oRecordSet.Open($sQuery, $oConnection)
For $i = 0 to $oRecordSet.Fields.Count - 1
$Spalten &= $oRecordSet.Fields.Item($i).Name & '|'
Next
$Spalten = StringTrimRight($Spalten, 1)
$aRecordSetArr = $oRecordSet.GetRows
_ArrayAdd($aRecordSetArr, $Spalten, 0)
$oRecordSet.Close()
$oConnection.Close()
_ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName)
Alles anzeigen
Bzw. $Spalten kannst du in Zeile 11-13 halt wie gezeigt zusammen bauen und dann entsprehend einfügen (entweder für das Arraydisplay oder als extra Zeile im Array).
Wenn es nur im ArrayDisplay angezeigt werden soll, ersetze Spalte 17 & 18 (ungetestet):
$Spalten = ''
For $Row = 0 to Ubound($aColumnArr)
$Spalten &= $aColumnArr[$Row] & '|'
Next
$Spalten = StringTrimRight($Spalten, 1)
_ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName, Default, Default, Default, $Spalten)
Edit:
Willst du Die Überschriften direkt auch im Array haben:
$Spalten = ''
For $Row = 0 to Ubound($aColumnArr)
$Spalten &= $aColumnArr[$Row] & '|'
Next
$Spalten = StringTrimRight($Spalten, 1)
_ArrayAdd($aRecordSetArr, $Spalten, 0)
_ArrayDisplay($aRecordSetArr, 'Tabelle = ' & $sTableName)
Aber alles ungeprüft.
hipfzwirgel : Siehe Hilfe:
[ 2] - Date at which this entry was submitted
[ 3] - Time at which this entry was submitted
[ 4] - Date at which this entry was received to be written to the log
[ 5] - Time at which this entry was received to be written to the log
Naja selbst wenn nciht zur Erfassung, brauchst du dennoch ja die richtigen und logisch richtig nachvollziehbaren Werte
Und dafür sind die genannten Eckpunkte wichtig und richtig zu erfassen und wären auch für Arbeitszeiterfassung möglich (ob zulässig weiß ich jedoch nicht^^).
Warum sollte man beim herunterfahren die Shift-Taste gedrückt halten? -.-
Ich möchte noch eine Sache zu bedenken geben aber wneiger wegen des Auslesens an sich, sondern der Anwendung dessen.
Das Skript würde dies auch auslesen und anwenden, wenn dein PC wegen anderen Gründen heruntergefahren und später wieder gestartet wird. Obwohl die Zeit dazwischen ggf. Arbeitszeit war.
Das erfordert dann eine manuelle Anpassung der Zeiten. Ich bin daher kritisch dem gegenüber genau dieses las Grundlage für die Arbeitszeiten zu nehmen.
Wäre es nicht Sinnvoller den Sleepmode zu nehmen und diesen zu Plotten?
- Laptop hochfahren: Arbeitszeit Start (egal ob Homeoffice oder Office)
- Sleepmode Start = Ende Homeoffice = Unterbrechung der Arbeitszeit start
- Sleepmode Ende = Unterbrechung der Arbeitszeit Ende
- Laptop herunter fahren = Arbeitszeit Ende (egal ob Homeoffice oder Office)
- Spätestes Ende = Laptop hochfahren + 10h + Dauer Unterbrechung (korrigiere mich, wenn ich da nun rechtlich falsch bin oder was vergessen habe)
Empfehlung: Prüfung, ob die maximal Erlaubte Wochenarbeitszeit (50h bei 5-Tage-Woche/60h bei 6-Tage-Woche) damit nicht überschritten wird, sonst muss vorher Feierabend gemacht werden.
Empfehlung 2: Prüfung ob die Ruhepause (Arbeits Ende bis Arbeits Start) von 11h eingehalten wurde.
Alina Wir reden hier von 7 Minuten Versatz, das wird wohl kein Zeitzonenproblem sein
hipfzwirgel : Wenn du den jeweiligen Eintrag kennst: _EventLog__Read()
Menno AspirinJunkie war schneller
Woher diese Differenz kommt weiß ich nicht, aber alternativ drüber nachgedacht beim Shutdown einen Eintrag (Registry/Datei o.ä.) zu machen mit der entsprechenden Zeit und diesen dann auszulesen