-> Hier kostenlos registrieren
Guten Morgen,
ich bin gerade dabei, Taktzeiten einer Anlage nach jedem fertigen Bauteil in eine csv. Datei auf der Storage Card zu schreiben.
Da ich in Sachen Skripten auch recht neu unterwegs bin, habe ich natürlich die ein oder andere Stolperfalle, bei der ich aktuell nicht weiter komme.
Funktion soll folgendermaßen sein.
- Nach auslösen des Skriptes wird überprüft, ob die Karte gesteckt ist (Funktioniert)
- Wenn die Datei dann auf der Karte noch nicht existiert, wird sie angelegt (Taktzeitarchiv\Archiv.csv) und die Kopfzeile wird mit den entsprechenden Beschriftungen gefüllt (Funktioniert)
- Wenn ich 10000 Taktzeiten abgespeichert habe, will ich die Datei in einen Ordner "Taktzeitarchiv_Sicherung" verschieben, die Datei mit dem aktuellen Tagesstempel versehen und die "alte Datei im Ordner (Taktzeiten\Archiv.csv.) löschen. (Funktioniert)
Jetzt das Problem.
Ich bekomme es nicht hin, die CSV. Datei wieder mit den Kopfdaten zu erstellen, da der Ordner (Taktzeitarchiv) ja noch da ist und nur die CSV darin gelöscht ist.
Ich habe zwei Skripte draus gemacht.
Skript Archiv erstellen und befüllen
und Skript Datei verschieben und löschen
Das er die CSV nicht anlegt, liegt meines erachtens daran, das im ersten Skript, wo kontrolliert wird das die Datei nicht vorhanden wird, ein Fehler ist. Ich denke weil es den Ordner "Taktzeitarchiv" ja noch gibt.
Wie kann ich es schaffen nur abzufragen, ob die Datei in dem Ordner fehlt?
Danke für eure Hilfe
Gruß Willi
ich bin gerade dabei, Taktzeiten einer Anlage nach jedem fertigen Bauteil in eine csv. Datei auf der Storage Card zu schreiben.
Da ich in Sachen Skripten auch recht neu unterwegs bin, habe ich natürlich die ein oder andere Stolperfalle, bei der ich aktuell nicht weiter komme.
Funktion soll folgendermaßen sein.
- Nach auslösen des Skriptes wird überprüft, ob die Karte gesteckt ist (Funktioniert)
- Wenn die Datei dann auf der Karte noch nicht existiert, wird sie angelegt (Taktzeitarchiv\Archiv.csv) und die Kopfzeile wird mit den entsprechenden Beschriftungen gefüllt (Funktioniert)
- Wenn ich 10000 Taktzeiten abgespeichert habe, will ich die Datei in einen Ordner "Taktzeitarchiv_Sicherung" verschieben, die Datei mit dem aktuellen Tagesstempel versehen und die "alte Datei im Ordner (Taktzeiten\Archiv.csv.) löschen. (Funktioniert)
Jetzt das Problem.
Ich bekomme es nicht hin, die CSV. Datei wieder mit den Kopfdaten zu erstellen, da der Ordner (Taktzeitarchiv) ja noch da ist und nur die CSV darin gelöscht ist.
Ich habe zwei Skripte draus gemacht.
Skript Archiv erstellen und befüllen
Code:
Sub Archiv()
'Skript dient dazu, Taktzeiten in eine .CSV Datei zu speichern
'Variablen definieren
Dim f, fs, fso, Datei, Pfad, Artikel, Solltaktzeit, Isttaktzeit
Dim DD, MM, JJJJ, HH, Min, Sek
Dim DD_HV, MM_HV, JJJJ_HV, HH_HV, Min_HV, Sek_HV 'Hilfsvariablen für Datum / Uhrzeit
Dim strDatum, strUhrzeit 'Hilfsvariablen für Stringzusammensetzung Datum / Uhrzeit
Dim strName 'Hilfsvariable für Dateiname
'Variablen vorbelegen
Artikel = SmartTags("Test_Artikel") 'SmartTags("DB_Akt_Daten_Daten_Wkz-Name")
DD = Day(Now)
MM = Month(Now)
JJJJ = Year(Now)
HH = Hour(Now)
Min = Minute(Now)
Sek = Second(Now)
Solltaktzeit = SmartTags("Test_Soll") 'SmartTags("Taktzeiten_Taktzeit_Soll")
Isttaktzeit = SmartTags("Test_Ist") 'SmartTags("Taktzeiten_Taktzeit_1_Real")
strName = DD & "." & MM & "." & JJJJ & "/" & HH & ":" & Min & ":" & Sek 'Datum und Uhrzeit als Text in Dateinamen anfügen
'Pfad und Datei festlegen
Pfad = "Storage Card SD\Taktzeitarchiv\"
Datei = "Archiv.csv"
'Objekt für das Filehandling erstellen
Set fs = CreateObject("filectl.filesystem")
Set f= CreateObject("filectl.file")
Set fso = CreateObject("filectl.filesystem")
'Kontrolle ob MMC Karte gesteckt ist
If fso.Dir("\Storage Card SD\") = "" Then
ShowSystemAlarm "SD Karte ist nicht gesteckt, daher Abbruch der Datenübertragung"
Else
'Kontrolle ob Verzeichnis vorhanden. Wenn nicht, dann Verzeichnis erstellen
If fs.dir(Pfad) = "" Then
fs.mkdir(Pfad)
f.open Pfad + Datei, 8
f.LinePrint "Datum" & ";" & "Uhrzeit" & ";" & "Artikel" & ";" & "Solltaktzeit" & ";" & "Isttaktzeit" & ";"
f.close
End If
f.open Pfad
If f.dir(Datei) = "" Then
f.mkdir(Datei)
f.open Pfad + Datei, 8
f.LinePrint "Datum" & ";" & "Uhrzeit" & ";" & "Artikel" & ";" & "Solltaktzeit" & ";" & "Isttaktzeit" & ";"
f.close
Else
f.close
End If
'Kontrolle ob Tag < 10 ist. Wenn ja, dann eine 0 vor die Zahl hängen
If DD < 10 Then
DD_HV = CStr("0" & DD)
Else
DD_HV = CStr(DD)
End If
'Kontrolle ob Monat < 10 ist. Wenn ja, dann eine 0 vor die Zahl hängen
If MM < 10 Then
MM_HV = CStr("0" & MM)
Else
MM_HV = CStr(MM)
End If
'Kontrolle ob Stunde < 10 ist. Wenn ja, dann eine 0 vor die Zahl hängen
If HH < 10 Then
HH_HV = CStr("0" & HH)
Else
HH_HV = CStr(HH)
End If
'Kontrolle ob Minute < 10 ist. Wenn ja, dann eine 0 vor die Zahl hängen
If Min < 10 Then
Min_HV = CStr("0" & Min)
Else
Min_HV = CStr(Min)
End If
'Kontrolle ob Sekunde < 10 ist. Wenn ja, dann eine 0 vor die Zahl hängen
If Sek < 10 Then
Sek_HV = CStr("0" & Sek)
Else
Sek_HV = CStr(Sek)
End If
'String für Datum zusammensetzen
strDatum = DD_HV & "." & MM_HV & "." & JJJJ
strUhrzeit = HH_HV & ":" & Min_HV & ":" & Sek_HV
'Zeile nur beschreiben, wenn Skriptbit auf True ist
If SmartTags("DB_Skript_Skript_Archiv") = True Then
'Pfad und datei öffnen und beschreiben, danach wieder schließen
f.open Pfad + Datei, 8 '8 = Daten anhängen
f.LinePrint strDatum & ";" & strUhrzeit & ";" & Artikel & ";" & Solltaktzeit & ";" & Isttaktzeit & ";"
f.close
Else SmartTags("DB_Skript_Skript_Archiv") = False
End If
End If
'Filehandling zurücksetzen
Set fs = Nothing
Set f = Nothing
Set fso = Nothing
'Skriptvariable zurücksetzen
SmartTags("DB_Skript_Skript_Archiv") = False
End Sub
und Skript Datei verschieben und löschen
Code:
Sub Archiv_Kopieren_Loeschen()
'Tip:
'Skript dient dazu eine .CSV Datei in einen anderen Ordner zu kopieren und die aktuelle Datei zu löschen
'Variablen definieren
Dim fs, fso, Quelle, Quelle_Ordner, Ziel
Dim DD, MM, JJJJ, HH, Min, Sek
'Quell- und Zielpfad festlegen
'Pfad und Datei festlegen
Quelle = "\Storage Card SD\Taktzeitarchiv\Archiv.csv"
'Quelle_Ordner = "\Storage Card SD\Taktzeitarchiv"
Ziel = "\Storage Card SD\Sicherung_Taktzeitarchiv\"
'On Error Resume Next
Set fs = CreateObject("filectl.filesystem")
Set fso = CreateObject("filectl.filesystem")
DD = Day(Now)
MM = Month(Now)
JJJJ = Year(Now)
HH = Hour(Now)
Min = Minute(Now)
Sek = Second(Now)
'Kontrolle ob MMC Karte gesteckt ist
If fso.Dir("\Storage Card SD\") = "" Then
ShowSystemAlarm "SD Karte ist nicht gesteckt, daher Abbruch der Datenübertragung"
Else
'Kontrolle ob Verzeichnis vorhanden. Wenn nicht, dann Verzeichnis erstellen
If fs.dir(Ziel) = "" Then
fs.mkdir(Ziel)
End If
fs.filecopy Quelle , Ziel & DD & "_" & MM & "_" & JJJJ & "_" & HH & "_" & Min & "_" & Sek & ".csv"
fs.kill Quelle
'fs.kill Quelle_Ordner
End If
Set fs = Nothing
Set fso = Nothing
End Sub
Das er die CSV nicht anlegt, liegt meines erachtens daran, das im ersten Skript, wo kontrolliert wird das die Datei nicht vorhanden wird, ein Fehler ist. Ich denke weil es den Ordner "Taktzeitarchiv" ja noch gibt.
Wie kann ich es schaffen nur abzufragen, ob die Datei in dem Ordner fehlt?
Danke für eure Hilfe
Gruß Willi