資源描述:
《wincc通過vbs訪問數(shù)據(jù)庫(kù).doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、本人通過WINCC的VBS讀取SQL2000里的數(shù)據(jù)或者寫入數(shù)據(jù),通過在按鈕控件做一個(gè)動(dòng)作,當(dāng)點(diǎn)擊時(shí)寫入數(shù)據(jù)庫(kù)一個(gè)數(shù)據(jù),代碼如下:Dim?rs,commDim?cn,strcnDim?is_sql,strSQLSet?cn?=?CreateObject("ADODB.Connection")Set?rs??=??CreateObject("ADODB.Recordset")strcn?=?"Provider=SQLOLEDB.1;Integrated?Security=SSPI;Persist?Security?Info=False;Initial?Catalog=glj;Dat
2、a?Source=GLJ077wincc"cn.ConnectionString?=?strcncn.OpenstrSQL?=?"INSERT??INTO??W1??(xm)??VALUES??('glj077')"rs.CursorLocation?=?adUseServerrs.Open?strSQL,?cn,?1,?3cn.CloseSet?cn?=?Nothing發(fā)現(xiàn)如下問題:此代碼在VB6.0中調(diào)試通過,可以寫入數(shù)據(jù)glj077,但在WICC里不可以,雖然編譯通過,但當(dāng)按下按鈕時(shí),并沒有寫入數(shù)據(jù).請(qǐng)各位高手幫忙看一下,是代碼的問題還是需要在WINCC里還要裝一些設(shè)置,
3、望告之.???謝謝!!!以上問題已解決,發(fā)現(xiàn)是代碼問題,還有樓上那位兄弟說的對(duì),常量不識(shí)別,必須用數(shù)字代替。通過這幾天的試驗(yàn),學(xué)到了不少東西,現(xiàn)把學(xué)到的東西和大家分享一下,希望可以拋磚引玉。在WINCC里,用VBS讀取和寫入到SQL2000數(shù)據(jù)方法有以下幾種(僅寫出本人實(shí)驗(yàn)通過的方法,至于其它方法,本人沒有試驗(yàn)過,不在討論范圍)第一種方法代碼如下(寫入數(shù)據(jù))Dim?cn,strSQL,strcnSet?cn?=?CreateObject("ADODB.Connection")strcn?=?"Provider=SQLOLEDB.1;Integrated?Security=SSPI
4、;Persist?Security?Info=False;Initial?Catalog=glj;Data?Source=GLJ077wincc"cn.ConnectionString?=?strcncn.Open?strcnstrSQL?=?"INSERT??INTO??W1??(xm)??VALUES??('glj077')"cn.Execute?strSQLcn.closeset?cn=Nothing以上方法立用了字符串連接函數(shù)的Execute方法,實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的寫入操作(改變strSQL字符的值應(yīng)該可以實(shí)現(xiàn)其它操作,不過本人沒有實(shí)驗(yàn)過)第二種方法代碼如下:(可寫可讀)D
5、im?cn,strSQL,strcnDim?rs,rs1Dim?RvalueSet?cn?=?CreateObject("ADODB.Connection")Set?rs=CreateObject("ADODB.RecordSet")Set?rs1=CreateObject("ADODB.RecordSet")strcn?=?"Provider=SQLOLEDB.1;Integrated?Security=SSPI;Persist?Security?Info=False;Initial?Catalog=glj;Data?Source=GLJ077wincc"cn.Connect
6、ionString?=?strcncn.Open?strcnstrSQL?=?"Select?*?from?W1"rs.CursorLocation?=?1(此處必須寫數(shù)字代替字符串常量)寫入數(shù)據(jù)Set?rs1=rs.Open?strSQL,?cn,?1,?3?(同樣,也必須用數(shù)字,發(fā)現(xiàn)沒有,這個(gè)???????????????????????????????????和我最初的代碼有什么不一樣,這也是???????????????????????????????????我最初的程序不能正確執(zhí)行的關(guān)鍵)rs1.AddNew?????新建一條記錄rs1.Fields("xm")="gl
7、j077"???往數(shù)據(jù)庫(kù)表W1字段為xm中寫入一條記錄,????????????????????????????值為glj077rs1.Update讀取數(shù)據(jù)Set?rs1=rs.Open?strSQL,?cn,?1,?3?rs1.MovefistRvalue?=rs1.Fields("xm")?讀取第一條記錄的值,修改SQL查詢語(yǔ)句可以?????????????????????????查找特定記錄rs1.closers.closecn.closeset?rs=Nothingset