Junge
Level-2
- Beiträge
- 235
- Reaktionspunkte
- 18
-> Hier kostenlos registrieren
Hallo,
ich benutze WinCC v7.5.4 und ich möchte gerne auf die WinCC Datenbank zugreifen. Ich habe bisher nur dürftige Beispiele in VBS gefunden, die mir nun aber nicht mehr weiterhelfen und vielleicht könnt ihr mir etwas auf die Sprünge helfen. Ich möchte einen Eintrag in einen vorhandenen Datensatz machen.
Mir scheint, dass mein "CommandText" nicht richtig ist, da mir APDIAG (WinCC DiagnoseTool), mir an der Zeile "DBCommand.Execute", mir folgenden Fehler ausgibt:
"Der Befehl enthielt mindestens einen Fehler.".
Vermutlich wird der Filter/Schreibbefehl falsch sein. Ich habe nun wirklich alle mögliche Fälle ausprobiert, aber ich komme nicht weiter. Die Tabelle "PRT#JOBS" hat die Datensätze aller Druckaufträge. Ziel ist es den Speicherort und Datenname zu dynamisieren, so dass ich den selben Druckauftrag immer wieder für unterschiedliche Chargen verwenden kann, da dies leider nicht direkt über den Druckauftrag mit einer Variable zu machen ist.
Die Skriptstellen habe ich mit '#####################################################
eingerahmt, wo ich denke, dass der Fehler sein könnte.
Ich hoffe, dass ich das Problem einigermaßen verständlich erklärt habe. Vielleicht ist das Skript auch komplett falsch, es ist mein erster Versuch überhaupt mit VBS eine Datenbankverbindung aufzubauen.
ich benutze WinCC v7.5.4 und ich möchte gerne auf die WinCC Datenbank zugreifen. Ich habe bisher nur dürftige Beispiele in VBS gefunden, die mir nun aber nicht mehr weiterhelfen und vielleicht könnt ihr mir etwas auf die Sprünge helfen. Ich möchte einen Eintrag in einen vorhandenen Datensatz machen.
Mir scheint, dass mein "CommandText" nicht richtig ist, da mir APDIAG (WinCC DiagnoseTool), mir an der Zeile "DBCommand.Execute", mir folgenden Fehler ausgibt:
"Der Befehl enthielt mindestens einen Fehler.".
Vermutlich wird der Filter/Schreibbefehl falsch sein. Ich habe nun wirklich alle mögliche Fälle ausprobiert, aber ich komme nicht weiter. Die Tabelle "PRT#JOBS" hat die Datensätze aller Druckaufträge. Ziel ist es den Speicherort und Datenname zu dynamisieren, so dass ich den selben Druckauftrag immer wieder für unterschiedliche Chargen verwenden kann, da dies leider nicht direkt über den Druckauftrag mit einer Variable zu machen ist.
Die Skriptstellen habe ich mit '#####################################################
eingerahmt, wo ich denke, dass der Fehler sein könnte.
Code:
Sub DatabaseWrite ()
'1# Create connection string for ADO access
'ConnectionString = „Provider=<Providernamen>.<Instanznr.>;Catalog=<DSN der Datenbank>R;Data Source=<Rechnername>\WinCC“
'-----------------------------------------------------------------------------------------
Dim ProviderName
Dim CatalogName 'Data Source Name from WinCC-RT
Dim DataSourceName 'Name of the PC from WinCC-RT
Dim szConnectionString
'First instance of WinCCOLEDB
'------------------------
ProviderName = "Provider=WinCCOLEDBProvider.1;"
HMIRuntime.Trace "ProviderName:" & ProviderName & vbNewLine
'Name of Runtime-Database
'------------------------
Set CatalogName = HMIRuntime.Tags("@DatasourceNameRT") 'Catalog=CC_17864_21_09_08_11_12_05R (Für diese Anwendung die falsche Datenbank)
CatalogName = "Catalog=" & CatalogName.Read
CatalogName = Left(CatalogName,Len(CatalogName) -1) & ";"'Löscht das R am Ende
HMIRuntime.Trace "CatalogName:" & CatalogName & vbNewLine
'Data Source
'------------------------
'DataSourceName = "Data Source=.\WinCC"
Set DataSourceName = HMIRuntime.Tags("@LocalMachineName")
DataSourceName = "Data Source=" & DataSourceName.Read &"\WinCC"
HMIRuntime.Trace "DataSourceName:" & DataSourceName & vbNewLine
szConnectionString = ProviderName + CatalogName + DataSourceName
HMIRuntime.Trace "ConnectionString:" & szConnectionString & vbNewLine
'-----------------------------------------------------------------------------------------
'2# Define command string
'----------------------------------------------------------------
Dim CommandText
Dim szValue
szValue = HMIRuntime.Tags("Configuration_Path_Test").Read
'#####################################################
CommandText = "SELECT JOBNAME FROM PRT#JOBS WHERE JOBNAME like 'PrintReportBatch_FKM_ProductionPDF' INSERT INTO PRT#JOBS(FILENAME) VALUES ('" & szValue &"');"
'#####################################################
HMIRuntime.Trace "CommandText:"& CommandText & vbNewLine
'----------------------------------------------------------------
'3# Open connection
'----------------------------------------------------------------
Dim DBConnection
Set DBConnection = CreateObject("ADODB.Connection")
DBConnection.ConnectionString = szConnectionString
DBConnection.open
'----------------------------------------------------------------
'4# Execute command
'----------------------------------------------------------------
Dim DBCommand
Set DBCommand = CreateObject("ADODB.Command")
DBCommand.ActiveConnection = DBConnection
DBCommand.CommandText = CommandText
'#####################################################
DBCommand.Execute
'#####################################################
'----------------------------------------------------------------
'5# Close connection
'----------------------------------------------------------------
HMIRuntime.Trace "Connection closed again" & vbNewLine
Set DBCommand = Nothing
DBConnection.Close
Set DBConnection = Nothing
'----------------------------------------------------------------
End Sub
Ich hoffe, dass ich das Problem einigermaßen verständlich erklärt habe. Vielleicht ist das Skript auch komplett falsch, es ist mein erster Versuch überhaupt mit VBS eine Datenbankverbindung aufzubauen.
Zuletzt bearbeitet: