工控编程吧

标题: WinCC V7.2 数据库连接问题请教 [打印本页]

作者: baikhgmv    时间: 2016-9-18 21:23
标题: WinCC V7.2 数据库连接问题请教
WinCC V7.2 数据库连接问题请教

我这边电脑安装了WinCC V7.2 版本, 在自带的SQLServer 中建立了一个数据库,并且在电脑的ODBC 的用户DSN 和系统DSN中,都添加了该数据库,并在添加的时候,测试连接成功。我在脚本中编了程序,用来查询,但是不成功,具体的程序如下:

Dim A_AirTest_Pro

Dim cn

Dim rst

Dim rstCom

Dim strcn

Dim objItem

Dim strsql


A_AirTest_Pro= HMIRuntime.Tags("Air_Program_No_01").Read



HMIRuntime.Tags("Air_Fill_Time_01").Write 0.0

HMIRuntime.Tags("Air_Steady_Time_01").Write 0.0

HMIRuntime.Tags("Air_Check_Time_01").Write 0.0


HMIRuntime.Tags("Air_Fill_Press_01").Write 0.0

HMIRuntime.Tags("Air_Steady_Press_01").Write 0.0

HMIRuntime.Tags("Air_Check_Press_01").Write 0.0


HMIRuntime.Tags("Air_Process").Write "Data Read Finsh"


'strcn = "Data Source=Test_01;UID=''WD='';"

strcn = "Data Source=Test_01;UID=shc30053WD=shc30053;"

Set cn = CreateObject("ADODB.connection")


cn.ConnectionString = strcn

cn.Open


HMIRuntime.Tags("Air_Process").Write "Sql Server connection"


strsql = "SELECT * FROM Air_Leak_Test Where Program_No ="&A_AirTest_Pro&""

HMIRuntime.Tags("Air_Process").Write "Sql Server connection_01"


Set rst = CreateObject("ADODB.Recordset")

HMIRuntime.Tags("Air_Process").Write "Sql Server connection_02"


Set rstCom = CreateObject("ADODB.Command")

HMIRuntime.Tags("Air_Process").Write "Sql Server connection_03"


rstCom.CommandType=1

HMIRuntime.Tags("Air_Process").Write "Sql Server connection_04"


Set rstCom.ActiveConnection = cn

HMIRuntime.Tags("Air_Process").Write "Sql Server connection_05"


rstCom.CommandText = strsql

HMIRuntime.Tags("Air_Process").Write "Sql Server connection_06"


Set rst = rstCom.Execute

'rstCom.Execute


HMIRuntime.Tags("Air_Process").Write "Sql command execute"


If Not rst.eof Then

rst.MoveFirst

HMIRuntime.Tags("Air_Fill_Time_01").Write rst.Fields(0).value

HMIRuntime.Tags("Air_Steady_Time_01").Write rst.Fields(1).value

HMIRuntime.Tags("Air_Check_Time_01").Write rst.Fields(2).value


HMIRuntime.Tags("Air_Fill_Press_01").Write rst.Fields(3).value

HMIRuntime.Tags("Air_Steady_Press_01").Write rst.Fields(4).value

HMIRuntime.Tags("Air_Check_Press_01").Write rst.Fields(5).value


End If



rst.close

cn.close

Set rst=Nothing

Set cn=Nothing

程序走到

Set rst = rstCom.Execute 这里不走了,也就是说,该语句并没有执行。但是以上的代码在WinCC V7.0 中是可以执行的。不知道为什么在7.2 中就执行不下去。希望大家帮忙解答一下。多谢了!

二者的区别,我看了一下,7.0 装在32位的操作系统Win7 企业版 SP1 .7.2 装在64位的操作系统Win7 企业版SP1。


---------这到底是要read呢还是write呢?


------是Write ,刚开始的Write ,是清零。后面的是查询值。


---------明白了

HMIRuntime.Tags("Air_Process").Write "Sql Server connection_03"

这些语句原来是你做的诊断啊!


在调试动态的SQL语句之前应该先用固定的SQL语句调通。


-------那些语句是诊断的,笨人笨法啊,不太理解您的动态SQL 语句 ,和固定的SQL 语句?能否帮忙解释一下?关于SQL的语句,我在SQL Server 中,新建一个查询,是没有错误的,可以查出来结果。并结果也是正确的。多谢!



-----strcn = "Data Source=Test_01;UID=shc30053WD=shc30053;"

这一句似乎有问题。你修改成这个形式试试:

strcn ="rovider=MSDASQL;DSN=report;UID=shc30053WD=shc30053;"

dsn中默认指向你需要的数据库



--------谢谢!问题已经解决了,你说的是我会试一下。

是那个语句有问题的,就是64位系统的不能用这个语句,而32位的系统是可以用的。至于为什么,我也不知道。希望有高人可以解答一下。

具体的语句有两种,如下:

1。 strcn = "Driver={SQL Server};Server=.\WINCC;UID=ASS=;database=Test_01"

2。

strcn = "rovider=SQLOLEDB.1;Integrated Security=SSPIersist Security Info =False;Initial Catalog=Test_01;Data Source =.\WinCC"



--------我也遇到这个问题了

原本在32位系统中运行的脚本到了64位里面就不运行了……

链接数据库"rovider=OraOLEDB.Oracle.1;Data Source=zzex;User ID=systemassword=zzex;"

是这句出的问题吗?需要怎么改,麻烦指教下


------你这个是连接远程的数据库,不是本机上的数据库,首先要测试的服务器上的数据库,是否允许该机访问。做一下测试。


-------你那个是甲骨文的数据库,没有用过,也不懂的。不过SQL的远程数据库的连接如下:

strcn="Driver={SQL Server};Server=dbs10;UID=sa;PWD=sa;database=basename" 仅供参考。








欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4