winCC to MS Access VBScript

| 31 Mayıs 2011 | 6 Yorum






winCC den Microsoft Access e aktarım için VisualBasicScript Kullanımı

1. Bir Access database içersine(örneğin DATA.mdb) WINCC_DATA adında bir tablo ve ID, TagValue şeklinde iki değişken oluşturun.(ID otomatik sayı olsun)

2. ODBC yapılandırmasından “SampleDSN” adıyla oluşturduğunuz DATA.mdb dosyasını ilişkilendirin.

3.Aşağıdaki script’in bir butona bağlandığını düşünelim,Bu durumda WINCC de ki number tipli Tag1 değeri, Microsoft Access database WINCC_DATA tablosunda ki TagValue degerine aktarılıyor.

Problem;
1.Script içersindeki IgnValue degerini ObjValue veya StrValue yapmam ragmen string (karekter içeren) tipli aktaramadım sadece number tipli değerler aktarılabiliyor.
2.Tabloma TagValue2 diye bir ikinci değişken daha eklesem,Tag2 değerini aktarabilmek için scripte nasıl bir değişiklik yapılması gereklidir.

[php]
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

[/php]

 

Çözüm;
1.Script içersindeki IgnValue degerini ObjValue veya StrValue yapmam ragmen string (karekter içeren) tipli aktaramadım sadece number tipli değerler aktarılabiliyor.

[php]
strSQL = "INSERT INTO WINCC_DATA (TagValue) VALUES (" & lngValue & ");"
[/php]

bu satır aşağıdaki şekilde değiştirilecek

[php]
strSQL = "INSERT INTO WINCC_DATA (TagValue) VALUES (‘" & CStr(lngValue) & "’);"
[/php]

not: [ ‘ ” (şeklinde tırnaktan önce kesme) ]

2.Tabloma TagValue2 diye bir ikinci değişken daha eklesem,Tag2 değerini aktarabilmek için scripte nasıl bir değişiklik yapılması gereklidir.

yazım1;

[php]

strSQL2="(TagValue,TagValue2)"
strSQL3="( ‘" & CStr(lngValue) & "’,’" & CStr(lngValue2) & "’ )"
strSQL = "INSERT INTO WINCC_DATA"& strSQL2 &" VALUES "& strSQL3 &";"

[/php]

yazım2;

[php]

strSQL = "INSERT INTO WINCC_DATA (TagValue,TagValue2) VALUES ( ‘" & CStr(lngValue) & "’,’" & CStr(lngValue2) & "’ );"

[/php]


 



Kategori: Yazılım

Bora M. Deniz ()

Teknoloji, internet, ve bilişim gibi konularda paylaşımlarım ve yazılarımla 2011 den beri teknorapor.com dayım. Sosyal medya da yararlı bulduğunuz yazılarımı paylaşmanız dileklerimle... The author shares and writings IT, internet and technology news blog offering

Yorum (6)

Trackback URL | Yorum RSS

  1. serhat polat canpolat diyor ki:

    açıklamanız iin teşekürler.Bende denedim ama kayıt yapamıyorum.System DNS yapılandırmasını yaptım ama yinede olmuyor.Adım adım nasıl insert işlemi yapılıyor yazarsanız sevinirim.

  2. serhat polat canpolat diyor ki:

    bora bey,wincc 7.2 ve windows 7 32bit işletim sisteminde deniyorum.Butonun mouse click eventinde csripti çalıştırıyorum.DSN ayarlarında login girişini windows ve sql olarak her ikisinide denedim ama sonuç alamıyorum.Kaçırdığım bir nokta var ama bulamıyorum.

    • Bora M. Deniz diyor ki:

      Merhaba,
      Access dosyanızon mdb uzantılı olan 2003-2007 versiyonunda olsun, bu şekilde dener misiniz?
      insert deyimi içinde kullandığımız WINCC_DATA ise bizim Access içindeki tablomuzun adıdır. Tablo içinde olması gereken alan ise TagValue adında bir alan örneğimizde ve string tipinde olacak şekilde veri tabanı dosyasını oluşturalım ve
      ODBC de Sistem DNS de Microsoft Access (mdb) üzerinden bağlantınızı kuralım.

      Script de aşağıdaki bağlantı kodu aslında ODBC de SampleDNS adında bir baglantı oldugunu ve kullanıcı adı ve sifresinin bos oldugunu belirtiyor.
      strConnectionString = “Provider=MSDASQL;DSN=SampleDSN;UID=;PWD=;”

  3. serhat polat canpolat diyor ki:

    bora bey,sql server kullanıyoruz.ODBC ayarlarında driver olarak sql server seçiyorum.Kullanıcı login olarak sql server da oluşturduğum kendi kullanıcı ve şifremi girerek dsn ayarlıyorum.Test connection da successfull oluyor sorunsuz.
    Çok farklı connectionstring kullandım ama olmadı

    • Bora M. Deniz diyor ki:

      Anladım Orneğin Excelde VBA pencersinde Referans kısmında Microsoft ActiveX Data Objectcts 6.1 Library ekleyin ve aşağıdaki örneği kendinize uyarlayabilir misiniz?

      işlem:SQL den bir tablodan alınan tüm degerler excel e aktarılıyor.

      Ozel alanlar:
      SUNUCUNUN_ADI\SQL_ADI
      VERITABANIN_ADI
      SA
      SIFRE
      TABLONUN_ADI

      Excelde bir makroya ekleyip deneyin. Belki WİnCC de bazı syntax düzeltmeleri gerekebilir.

      Sub macro()

      Dim conn As ADODB.Connection
      Dim rs As ADODB.Recordset
      Dim sConnString As String

      ‘ Create the connection string.
      sConnString = “Provider=SQLOLEDB;Data Source=SUNUCUNUN_ADI\SQL_ADI;” & _
      “Initial Catalog=VERITABANIN_ADI;” & _
      “User Id=SA;” & _
      “Password=SIFRE”

      ‘ Recordset ve Baglantı objelerinin oluşturulması
      Set conn = New ADODB.Connection
      Set rs = New ADODB.Recordset

      ‘ Baglantı MSQL Scripti
      conn.Open sConnString
      Set rs = conn.Execute(“SELECT * FROM TABLONUN_ADI;”)

      ‘ Data kontrol ediliyor
      If Not rs.EOF Then
      ‘ Transfer result.
      Sheets(1).Range(“A1”).CopyFromRecordset rs
      ‘ recordset kapanıyor
      rs.Close
      Else
      MsgBox “Hata: Kayıt bulunamadı”, vbCritical
      End If

      ‘ Clean up
      If CBool(conn.State And adStateOpen) Then conn.Close
      Set conn = Nothing
      Set rs = Nothing

      End Sub

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir