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

Ergebnis 1 bis 10 von 10

Thema: WinCC flex VBS <-> MySQL

  1. #1
    Registriert seit
    19.11.2008
    Ort
    Schweigen am Weintor
    Beiträge
    707
    Danke
    191
    Erhielt 161 Danke für 92 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Morgen,

    in der Faq gibt es ja einen kleinen Code um daten mittels vbs an eine datenbank zu schicken dieses hier

    Code:
    Const db_server="192.168.1.1"
    Const db_port= "3306"
    Const db_user= "root"
    Const db_pass= "MeinPasswort"
    Const db_name= "test"
    Const db_tabelle= "tabelle"
    
    Dim Sql, conn, strConnectString, rs
      
         ' sql-Anweisung
         Sql = "INSERT INTO " & db_tabelle & " ( datum, zeit ) values ('" & Date & "' , '" & Time & "' );"
     
         ' Verbindung zu MySql Server initialisieren
         Set conn=CreateObject("ADODB.Connection")
         strConnectString = "DRIVER={MySQL ODBC 5.1 Driver};" _
                   & "SERVER=" & db_server & ";" _
                   & " DATABASE=" & db_name & ";" _
                   & "UID=" & db_user & ";PWD=" & db_pass & "; OPTION=3"
         conn.Open strConnectString                               
         'ausführen
         Set rs=CreateObject("ADODB.recordset")
         rs.Open Sql, conn          
         conn.Close
    was muss ich denn machen wenn ich was aus der datenbank lesen und auf eine variable schreiben will.

    also z.b. in der datenbank gibt es eine tablle, in der ersten spalte, in der ersten zeile ist, ein boolischer wert diesen hätte ich gerne auf der runtime im prinzip muss ich doch nur den sql befehl ändern in "select ...." aber dann wie bekomm ich diese daten dann angezeigt? wahrscheinlich ist es mal wieder viel zu einfach und ich stell mich wieder blöd dran... kann aber auch grad nicht testen hab keine datenbank zur verfügung diese baut unser it´ler erst nachem urlaub auf..

    grüßel erzi
    Zitieren Zitieren WinCC flex VBS <-> MySQL  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    es gibt in einer datenbank sowas wie zeile,spalte nicht.
    das funktioniert völlig anders wie in einer tabellenkalkulation.

    du musst gezielt in der datenbank in einem oder mehreren feldern nach der gewünschten abfrage suchen


    Code:
    Set objRecordset = dbConn.Execute("SELECT DISTINCT 'Column' FROM 'Database'.'table' WHERE ID=27 AND ExtraFieldID=53")
    While Not objRecordset.EOF
       strValue = objRecordset.Fields("Column").Value
       objRecordset.MoveNext 'springe zum nächsten datensatz
    Wend
    MsgBox strValue
    schau mal hier. das ist zwar php veranschaulicht aber ganz gut wie das ganze funktioniert
    http://www.php-einfach.de/einf_mysql...e_abfragen.php
    Geändert von volker (22.08.2014 um 09:27 Uhr)
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. Folgender Benutzer sagt Danke zu volker für den nützlichen Beitrag:

    erzteufele (22.08.2014)

  4. #3
    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

    um das, was Volker schreibt vielleicht noch einmal etwas anders darzustellen :
    Du sprichst nicht direkt Elemente an sondern du kommunizierst im Grunde mit einem Programm.
    Dabei stellst du z.B. eine Anfrage wie "was steht in der Spalte 'Name' drin" und du bekämst hier möglicherweise alle Inhalte der Spalte zurück geliefert.
    Oder du sagst "Schreibe in die namentlich benannte Tabelle in die Spalten 'Datum' und 'Uhrzeit' die Werte von 'Date' und 'Time' hinein ...

    Entscheidend ist hier, die Sprach-Syntax des SQL-Servers zu kennen, die unabhängig von deiner Entwicklungssprache ist.

    Gruß
    Larry

  5. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    erzteufele (22.08.2014)

  6. #4
    erzteufele ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.11.2008
    Ort
    Schweigen am Weintor
    Beiträge
    707
    Danke
    191
    Erhielt 161 Danke für 92 Beiträge

    Standard

    ok irgendwie wird´s funktionieren müssen danke schonmal jetzt brauch ich erstmal eine testumgebung.

    aber mal so generell warum ich dies überhaupt mache vielleicht gibt es ja schon fertige lösungen
    ich muss von einer SPS DMC code´s an ein ERP system schicken wenn 4 tray´s voll sind = 48teile soll ich dem ERP system sagen das es jetzt drucken soll, dann generiert der system eine chargennr. das etikett usw... der druck fällt auf den stapel tray´s und die maschine darf den stapel ausschieben.

    ich wollte jetzt eigentlich die dmc´s in die datenbank schieben und dann eine tabelle in der datenbank quasi als kommunikation schnittstelle zum erp nutzen mit den signalen drucker ist bereit, drucken starten, druck beendet usw...

    glaube aber fast ein opc wäre vielleicht dafür besser geeignet oder wie seht ihr dies? habt ihr sowas schonmal gemacht?

    grüßel erzi

  7. #5
    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

    Hallo,
    etwas in der Form, wie bei dir habe ich noch nicht gemacht. Dennoch bin ich der Meinung, das du den richtigen Weg verfolgst (ohne genauere Kenntnis deines Vorhabens) wenn du die Daten in die Datenbank schreibst. Du mußt es halt nur richtig machen ...
    Ich würde mich dafür also erstmal an einer Test-Datenbank austoben ...

    Gruß
    Larry

  8. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.850
    Danke
    78
    Erhielt 800 Danke für 543 Beiträge

    Standard

    auch ein opc-server muss seine daten erstmal irgendwoher bekommen. opc ist nur eine andere art die daten in die sps zu bekommen.

    grundsätzlich gibt es mehrere möglichkeiten. z.b. excel-datei, csv-datei usw.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  9. #7
    erzteufele ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.11.2008
    Ort
    Schweigen am Weintor
    Beiträge
    707
    Danke
    191
    Erhielt 161 Danke für 92 Beiträge

    Standard

    so habe mal eine testdatenbank, treiber installiert aber ich bekomme die meldung

    [Microsoft][ODBC Driver Manager] Der Datenquellenname wurde nicht gefunden, und es wurde kein Standardtreiber angegeben

    Code:
    Const db_server="172.16.0.227"
    Const db_port= "3306"
    Const db_user= "sps"
    Const db_pass= "sps"
    Const db_name= "test"
    Const db_tabelle= "wincc"
    
    Dim Sql, conn, strConnectString, rs
      
         ' sql-Anweisung
         Sql = "INSERT INTO " & db_tabelle & " ( datum, uhrzeit ) values ('" & Date & "' , '" & Time & "' );"
     
         ' Verbindung zu MySql Server initialisieren
         Set conn=CreateObject("ADODB.Connection")
         strConnectString = "DRIVER={MySQL ODBC 5.1 Driver};" _
                   & "SERVER=" & db_server & ";" _
                   & "DATABASE=" & db_name & ";" _
                   & "UID=" & db_user & ";PWD=" & db_pass & "; OPTION=3"
         conn.Open strConnectString                               
         'ausführen
         Set rs=CreateObject("ADODB.recordset")
         rs.Open Sql, conn          
         conn.Close
    2014-09-10_160143.jpg

    sollte doch alles richtig sein oder ?

    grüßel erzi

  10. #8
    erzteufele ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.11.2008
    Ort
    Schweigen am Weintor
    Beiträge
    707
    Danke
    191
    Erhielt 161 Danke für 92 Beiträge

    Standard

    ist das ein mist... sorry hab den x64 treiber installiert weil ich ja ein 64bit system habe... aber winccflex läuft als 32bit instanz... da muss auch der 32bit treiber installiert sein habe ich auch erst irgendwo im netz gelesen...

  11. #9
    erzteufele ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.11.2008
    Ort
    Schweigen am Weintor
    Beiträge
    707
    Danke
    191
    Erhielt 161 Danke für 92 Beiträge

    Standard

    jetzt hab ich noch eine kleine frage

    nun mag ich den inhalt der ersten spalte "Row_1" mit dem index 1 (indexspalte) auslesen und in eine datei speichern, die Spalte ist ein 2byte int und die variable in wincc flex auch aber es kommt ein typkonflikt ...

    Code:
         ' sql-Anweisung
         Lesen = "SELECT Row_1 FROM `Table_2` WHERE id=1"
     
         ' Verbindung zu MySql Server initialisieren
         Set conn=CreateObject("ADODB.Connection")
         strConnectString = "DRIVER=MySQL ODBC 5.1 Driver;" _
                   & "SERVER=" & db_server & ";" _
                   & "DATABASE=" & db_name & ";" _
                   & "UID=" & db_user & ";PWD=" & db_pass & "; OPTION=3"
         conn.Open strConnectString                               
         'ausführen
         'Set rs=CreateObject("ADODB.recordset")
         'rs.Open
         Ausgelesen = conn.execute(Lesen)
          SmartTags("Variable_1")=Ausgelesen       
         conn.Close
    kann ich mir irgendwie anzeigen lassen was generell in Ausgelesen drin steht?

    grüßel erzi

  12. #10
    erzteufele ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    19.11.2008
    Ort
    Schweigen am Weintor
    Beiträge
    707
    Danke
    191
    Erhielt 161 Danke für 92 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    fels jmd mal sowas machen sollte...
    Code:
    Const db_server="172.16.0.227"
    Const db_port= "3306"
    Const db_user= "sps"
    Const db_pass= "sps"
    Const db_name= "test"
    Const db_tabelle= "wincc"
    
    Dim conn, strConnectString, Lesen, rs, Schreiben
      
         ' sql-Anweisung
         Lesen = "SELECT `Drucker Bereit`,`Drucker drucken`,`Drucker Fertig` FROM `Kommunikation` WHERE id=1"
         Schreiben ="UPDATE `test`.`Kommunikation` SET `Drucker drucken` = '" & SmartTags("Daten.KommunikationG4W.Drucker_drucken") & "' WHERE `Kommunikation`.`id` = 1;" 
         
         ' Verbindung zu MySql Server initialisieren
         Set conn=CreateObject("ADODB.Connection")
         strConnectString = "DRIVER=MySQL ODBC 5.1 Driver;" _
                   & "SERVER=" & db_server & ";" _
                   & "DATABASE=" & db_name & ";" _
                   & "UID=" & db_user & ";PWD=" & db_pass & "; OPTION=3"
         conn.Open strConnectString                               
    
         Set rs=CreateObject("ADODB.Recordset")
         
         rs.open Lesen,conn,1,1
         
         SmartTags("Daten.KommunikationG4W.Drucker_Bereit")=rs.fields(0) 
         'SmartTags("Daten.KommunikationG4W.Drucker_drucken")=rs.fields(1)
         SmartTags("Daten.KommunikationG4W.Drucker_Fertig")=rs.fields(2)
         rs.close
         
         rs.open Schreiben,conn
                 
         conn.Close

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 24.10.2012, 08:40
  2. WinCC flex VBS Problem
    Von Zyrano im Forum HMI
    Antworten: 6
    Letzter Beitrag: 25.01.2011, 11:40
  3. Antworten: 31
    Letzter Beitrag: 21.09.2010, 09:38
  4. Antworten: 1
    Letzter Beitrag: 01.07.2009, 11:56
  5. WinCC Flex und MySql Datenbank
    Von Blackforest im Forum HMI
    Antworten: 3
    Letzter Beitrag: 19.12.2008, 22:46

Lesezeichen

Berechtigungen

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