Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 7 von 7

Thema: Variablen von wincc nach access

  1. #1
    Registriert seit
    03.05.2007
    Ort
    Saarland
    Beiträge
    43
    Danke
    2
    Erhielt 5 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo.

    Hab ein kleines aber feines Problem.

    Ich möchte WinCC Variablen nach Access in eine Datenbank schreiben.
    Die funktioniert auch, solange es sich um reine Zahlen handelt(z.B.Vorzl. 8 Bit Wert).

    Sobald ich versuche Variablen vom Typ Textvariable in die Datenbank zu schreiben, treten Probleme auf.

    Zum Einen, wenn es sich um eine Textvariable vom Typ 8 Bit handelt, wird mir diese in der Datenbank als Kommazahl angezeigt.(In der WinCCVariable steht 12345612345612345121... und angezeigt in Access wird 1,23456123456123E+71)
    Zum Zweiten, wenn in der Textvariablen Buchstaben vorkommen, wird nichts in die Datenbank geschrieben.
    Wenn ich die Variable als Typ Textvariable 16 Bit festlege, wird ebenfalls nichts in die Datenbank eingetragen.

    In Access habe ich das Feld für die Eintragung der Variablen als Text eingestellt.

    Mein Vb Skript sieht so aus:

    Dim objConnection
    Dim strConnectionString
    Dim lngValue
    Dim strSQL
    Dim objCommand
    strConnectionString = "Provider=MSDASQL;DSN=SampleDSN;UID=;PWD=;"
    lngValue = HMIRuntime.Tags("Tag1").Read
    strSQL = "INSERT INTO WINCC_DATA (TagValue) VALUES (" & lngValue & ");"
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.ConnectionString = strConnectionString
    objConnection.Open
    Set objCommand = CreateObject("ADODB.Command")
    With objCommand
    .ActiveConnection = objConnection
    .CommandText = strSQL
    End With
    objCommand.Execute
    Set objCommand = Nothing
    objConnection.Close
    Set objConnection = Nothing

    Vielleicht hat ja jemand ne Idee woran das liegen könnte.

    MfG
    Chrissi
    Zitieren Zitieren Variablen von wincc nach access  

  2. #2
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Unter der Hilfe von Siemens steht folgendes:

    Beispiel: So projektieren Sie eine Datenbankanbindung mit VBS
    Einleitung
    Die folgenden Beispiele beschreiben die Projektierung einer Access-Datenbankanbindung über einen ODBC-Treiber.
    Beispiel 1 schreibt einen Variablenwert aus WinCC in eine Access-Datenbank.
    Beispiel 2 liest einen Wert aus der Datenbank und schreibt diesen Wert in eine WinCC Variable.
    Die Beispiele enthalten keine Fehlerbehandlung.
    Vorgehensweise Beispiel 1
    1. Access-Datenbank mit Tabelle WINCC_DATA und Spalten (ID, TagValue) mit der ID als Autowert erstellen.
    2. ODBC-Datenquelle mit Namen "SampleDSN" einrichten, Verweis auf obige AccessDatenbank.
    3. Programmierung.

    Beispiel 1
    'VBS108
    Dim objConnection
    Dim strConnectionString
    Dim lngValue
    Dim strSQL
    Dim objCommand
    strConnectionString = "Provider=MSDASQL;DSN=SampleDSN;UID=;PWD=;"
    lngValue = HMIRuntime.Tags("Tag1").Read
    strSQL = "INSERT INTO WINCC_DATA (TagValue) VALUES (" & lngValue & ");"
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.ConnectionString = strConnectionString
    objConnection.Open
    Set objCommand = CreateObject("ADODB.Command")
    With objCommand
    .ActiveConnection = objConnection
    .CommandText = strSQL
    End With
    objCommand.Execute
    Set objCommand = Nothing
    objConnection.Close
    Set objConnection = Nothing

    --- --- --- --- ---

    Vorgehensweise Beispiel 2
    WinCC Variable mit dem Namen dbValue anlegen.
    Access-Datenbank mit Tabelle WINCC_DATA und den Spalten: ID, TagValue erstellen (ID als Autowert).
    ODBC-Datenquelle mit Namen "SampleDSN" einrichten, Verweis auf obige AccessDatenbank.
    Programmierung.
    Beispiel 2
    'VBS108a
    Dim objConnection
    Dim objCommand
    Dim objRecordset
    Dim strConnectionString
    Dim strSQL
    Dim lngValue
    Dim lngCount
    strConnectionString = "Provider=MSDASQL;DSN=SampleDSN;UID=;PWD=;"
    strSQL = "select TagValue from WINCC_DATA where ID = 1"
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.ConnectionString = strConnectionString
    objConnection.Open
    Set objRecordset = CreateObject("ADODB.Recordset")
    Set objCommand = CreateObject("ADODB.Command")
    objCommand.ActiveConnection = objConnection
    objCommand.CommandText = strSQL
    Set objRecordset = objCommand.Execute
    lngCount = objRecordset.Fields.Count
    If (lngCount>0) Then
    objRecordset.movefirst
    lngValue = objRecordset.Fields(0).Value
    HMIRuntime.Tags("dbValue").Write lngValue
    Else
    HMIRuntime.Trace "Selection returned no fields" & vbNewLine
    End If
    Set objCommand = Nothing
    objConnection.Close
    Set objRecordset = Nothing
    Set objConnection = Nothing

    Vielleicht solltest du es mal über die ODBC-Verbindung versuchen.

    Gruß
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  3. #3
    Registriert seit
    03.05.2007
    Ort
    Saarland
    Beiträge
    43
    Danke
    2
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Hallo.

    Genau die 2 Skripte habe ich auch gefunden und benutzt.
    Wie gesagt, das funktioniert alles, solange es sich nicht um Variablen vom Typ "Textvariable" handelt.

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.712
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Zitat Zitat von chrissi52000 Beitrag anzeigen
    strSQL = "INSERT INTO WINCC_DATA (TagValue) VALUES (" & lngValue & ");"
    Hallo,
    hast du mal dein Augenmerk auf den Eintrag VALUES("&lngValue&") gelegt ?
    M.E. könnte das heißen, dass eine Variable im Format LongInteger geschrieben werden soll ...
    Ich bin allerdings auch kein Profi und somit ist das nur eine Mutmassung ...

  5. #5
    Registriert seit
    05.11.2004
    Ort
    Schweiz
    Beiträge
    1.135
    Danke
    224
    Erhielt 127 Danke für 85 Beiträge

    Standard

    Ja, das ist korrekt.

    Aber nicht hier sondern folgend:

    Dim lngValue <--- --- --- Ist mit der Deklaration als Variant vorgegeben.

    Das bedeutet, das der erste Datentyp, der kommt, diese Variable als den
    Typ deklariert. Wenn du also zuerst ein Int, Real etc. schickt, und dann
    deine Strings, dann ist die Variable aber schon als Real vorgesehn und es
    kommen nur Zahlen, oder es passiert garnix. Vermutlich das 2. kommt
    öfters vor.
    Deswegen solltest du lngValue feste auf den Typ deklarieren, als den du
    ihn nutzen willst
    Kommt Zeit.... Kommt Rat.... In der Tat.
    Gartenlampe mit Windenergie anstelle von Solar? Bei Interesse -> PN

  6. #6
    Registriert seit
    22.01.2007
    Beiträge
    2
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Pfeil

    Hallo!
    Um eine String-Variable in eine Access-Datenbank zu schreiben muss man den Variablenwert in Hochkomma schreiben.

    strSQL = "INSERT INTO WINCC_DATA (TagValue) VALUES ('" & lngValue & " ');"

    Gruß
    de Maddin

  7. #7
    Registriert seit
    13.10.2007
    Beiträge
    12.031
    Danke
    2.785
    Erhielt 3.268 Danke für 2.156 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Endschuldigung das ich den alten Thread noch einmal hervor hole.
    Ein Kollege von mir, versucht entsprechend den Beitrag #2 von Krumnix
    eine Datenbankanbindung zu machen. Dieses klappt auch soweit, allerdings
    nur mit einer Variabel. Sein wunsch ist es mehrere Variabeln und dann
    noch in einer Zeile zu schreiben, kann uns da jemand ein Tip geben.

    gruß helmut
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 30.12.2010, 09:30
  2. Antworten: 1
    Letzter Beitrag: 02.03.2009, 13:04
  3. Antworten: 1
    Letzter Beitrag: 16.07.2007, 17:39
  4. Datenbausteine nach MS Access exportieren
    Von DarkLykan im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 12.02.2007, 12:43
  5. Antworten: 2
    Letzter Beitrag: 09.10.2005, 16:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •