我这边电脑安装了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 |