WinCC Flex Daten in CSV ändern

AKA

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

zuerst mal die Version und das Panel:
TIA V17 Upd4 WinCC Advanced
TP1200 Comfort

Meine Aufgabenstellung für die Programmierung:
An einer Verpackungsstation wird die Artikelnummer einer Baugruppe gescannt, danach sollen die Verpackung und optionale Inlays in die die Baugruppe verpackt wird erfasst werden. Diese sollen dann gespeichert werden. Dies geschieht bei allen Baugruppen die verpackt werden sollen. Hier kommt der erste Haken, es können ca. 20.000 verschiedene sein.
Wird beim nächsten scannen eine Artikelnummer erkannt die schon erfasst wurde sollen die vorher gespeicherten Verpackungsdaten angezeigt werden.
Soweit so gut, ich habe Aufgrund der Größe eine CSV-Datei die als Rezeptur dient.

Das klappt auch alles ABER...
Sollte die Verpackung falsch angelegt worden sein oder es ändert sich eine Option kann ich die Daten in der CSV nicht nachträglich ändern.

Aktuell ist mein Ansatz:
Die CSV öffnen, den Datensatz suchen und die nötigen Durchläufe für "file.LineInputString" zählen. Dann diesen um 1 verringern und vor diese Daten neue Daten schreiben. Die neueren Daten sollten dann bei der Suche zuerst gefunden werden und angezeigt werden. Leider überschreibt der eine neue Eintrag den kompletten Dateiinhalt. Ich habe bei der "file.open"-Methode schon die verschiedensten Kombinationen ausprobiert aber ohne Erfolg.

Hat jemand von euch eine Idee wie ich dieses Problem noch angehen kann?

Eine Anbindung an eine Datenbank (OPC UA) ist aktuell nicht möglich.
Ich habe auch gelesen, dass man eine neue Datei erzeug mit den alten Daten bis zum "Eintrag" und dann denen danach. Allerdings will ich nicht unbedingt potentiell bei einer Änderung 20.000 Einträge kopieren.

Viele Dank im Voraus für eure Unterstützung.

Anbei noch etwas Code aus meinen beiden Scripten:

Code:
'Script zum Suchen der Artikelnummer
Do Until f.EOF
    RezeptString = f.LineInputString
    StringArray = Split(RezeptString,";",-1)
    If StringArray(0) = SmartTags("Lesen_Rezept_Daten_1") Then
        For i = 0 To 6 Step 1
            SmartTags("Lesen_Rezept_Daten_"&i+1) = StringArray(i)
            SmartTags("Lesen_Rezept_ArtikelBekannt") = True
            bekannt = True
            SmartTags("ZeilenEnde") = f.loc
        Next
            ShowSystemAlarm "Zeilenende: "& SmartTags("ZeilenEnde")
            ShowSystemAlarm "Artikel bekannt: "&StringArray(0)
        Exit Do
    Else
        j=j+1
    ShowSystemAlarm "Zähler j: "& j
    ShowSystemAlarm "durchsuchte Artikel: "& StringArray(0)
    End If
    
Loop

ShowSystemAlarm "Zähler j: "& j
SmartTags("Zeile_Zähler") = j ' Anzahl Durchläufe für zu bearbeitende Artikelnummer


_________________________
Anderes Script ab hier:

'Script zum schreiben/ändern von Artikeln
If fs.dir(file) = "" Then ' Falls keine Rezepturdatei vorhanden ist, neue anlegen
    f.open file,2
    f.LinePrint "Artikelnummer;Karton;Option 1;Option 2;Option 3;Option 4;Option 5;"
    f.Close
    ShowSystemAlarm "Rezeptur wurde erstellt"
Else

If     SmartTags("Lesen_Rezept_ArtikelBekannt") = True Then 'Daten des Artiekls ändern
    f.open file,2
    f.LinePrint SmartTags("Lesen_Rezept_Daten_1")&";"&SmartTags("Lesen_Rezept_Daten_2")&";"&SmartTags("Lesen_Rezept_Daten_3")&";"&SmartTags("Lesen_Rezept_Daten_4")&";"&SmartTags("Lesen_Rezept_Daten_5")&";"&SmartTags("Lesen_Rezept_Daten_6")&";"&SmartTags("Lesen_Rezept_Daten_7")&";"
    f.Close
    ShowSystemAlarm "Verpackung geändert"
Else
    f.open file,8 'neue Daten am Ende anfügen
    f.LinePrint SmartTags("Lesen_Rezept_Daten_1")&";"&SmartTags("Lesen_Rezept_Daten_2")&";"&SmartTags("Lesen_Rezept_Daten_3")&";"&SmartTags("Lesen_Rezept_Daten_4")&";"&SmartTags("Lesen_Rezept_Daten_5")&";"&SmartTags("Lesen_Rezept_Daten_6")&";"&SmartTags("Lesen_Rezept_Daten_7")&";"
    f.Close
    ShowSystemAlarm "neue Verpackung angelegt"
End If
 
Eine CSV-Datei ist im Grunde eine Textdatei und keine Datenbank.
Was du hier machen kannst ist :
- du liest die Datei zeilenweise ein und schreibst die Zeilen in eine neue Datei
- hast du die Zeile gefunden, die du ändern willst dann schreibst du hier die neue Version statt dem alten Inhalt in die neue Datei
- am Ende löscht du die "alte" Quelldatei und benennst die "neue" Datei um auf den Namen der alten Datei.
 
Zurück
Oben