# mit VBScript in WinCC Prof v15 eine .CSV in MS Access importieren



## t_sch (22 Januar 2019)

Hallo zusammen,

ich benötige mal eure Hilfe.

Wie ja schon im Titel steht, versuche ich eine .CSV über VBScript in eine MS Access "Datenbank" zu importieren.

Aber erst mal zur Umgebung...
Die Oberfläche auf der das Script laufen soll ist WinCC Professional V15 UPD2 PC-Runtime. Das MS Access mit dem gearbeitet wird, ist ein MS Access2010.
Die Verbindung über ODBC-Treiber ist hergestellt und funktioniert auch. Ich kann die Datensätze in meiner Access-Datei bearbeiten, anhängen, löschen, ect.

Bei der .CSV-Datei handelt es sich um ein UserArchive (interne Datenbank) das im WinCC Prof. erzeugt und exportiert wurde. Hier ist mir schon aufgefallen, dass die Zeichencodierung hier nicht dem aktuellen Stand entspricht. Siemens verwendet hier den Zeichensatz ucs2. Diesen habe ich aber schon über eine zusätzliche Anweisung in UTF8 konvertiert.
Das ganze läuft schon in einer Anbindung an eine MySQL-Datenbank.


Jetzt zu meinem Anliegen:
Für den MySQL Import der .CSV nutze ich die Anweisung:

*SQL_Table = "LOAD DATA INFILE '" & CSV_Filename & "' INTO TABLE database.`table` FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '""' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;"
*
Für MS Access haben ich hierzu den Befehl gefunden.

*"INSERT INTO table SELECT * FROM*

Irgendwo in den Tiefen des Internets habe ich mal gelesen, dass der Befehl wohl nicht nur zum lesen aus einer anderen Datenbank, sondern auch für Text-files funktionieren soll. 
Leider bekomme ich das aber so nicht parametriert.

Hat vielleicht schon jemand von euch diesen Befehl verwendet?


Vielen Dank.


----------



## volker (22 Januar 2019)

konkert kann ich deine frage jetzt nicht beantworten aber schau mal hier.
da ist das schreiben in eine access-db mit einem externen script beschrieben.
Protool/WinCCflex/TIA Daten lesen / schreiben mit VB-Script

folgendes ist vba innerhalb von access
eine externe datei wird eingelesen und diverse datensätze upgedatet welche die passende mlfd haben.

```
Private Sub Befehl0_Click()
    
Dim db As DAO.Database
Dim fs, datei, inzeile, zeile, bestnr, sap, Bemerkung, link, sql, datenbank
Set fs = CreateObject("Scripting.FileSystemObject")
Set datei = fs.opentextfile("c:\auftragsverwaltung\update\ca16.txt", 1)
Do While datei.atendofstream <> True
    inzeile = datei.readline
    zeile = Split(inzeile, Chr(9))
    bestnr = zeile(0)
    sap = zeile(1)
    Bemerkung = zeile(2)
    link = zeile(3)
    
    sql = "update ca01_1610 set f_SAP='" & sap & "', f_Bemerkung='" & Bemerkung & "', Link='" & link & "' where MLFD='" & bestnr & "'"
    
    datenbank = "c:\Allgemeine_Bestellungen\Kataloge_mdb\ca01_1610.mdb"
    Set db = DBEngine.OpenDatabase(datenbank)
    db.Execute sql
Loop
MsgBox "Import fertig"
End Sub
```


----------

