用VB编写程序将WINCC归档数据导入表格中,数据库无法连接用VB编写程序将WINCC归档数据导入表格中,adodb.connection的err.number不为0,用GetConState测试数据库连接状态为关闭。搜索了很多网页,代码没有问题,就是无法连接数据库,这个项目是复制过来的,已经更改了项目的计算机名,跟这个有关系吗?希望有人能解答,万分感激!
-------有关系。 关系很大。
----谢谢万斑竹,这种情况可以重新安装数据库来解决吗?
-------补充一下:读取内部变量@DatasourceNameRT的值,作为连接数据库的DSN。
------- sPro = "Provider=WinCCOLEDBProvider.1;"
Set DSNname=HMIRuntime.Tags("@DatasourceNameRT")
DSNname.Read
sDsn= "Catalog="&DSNname.value&";"
sSer = "Data Source=.\WinCC"
sCon = sPro + sDsn + sSer 这是连接字符串,用的内部变量,commandType=1。用内部变量测试,手动更改内部变量的值,WINCC的归档数据有变化,但EXCLE表格不输出,程序显示数据库没有连接。
------请大神看看哪里有错,如果是因为项目复制过来的问题,应该怎么解决呢?重新安装数据库,还是用WINCC项目复制器重新复制呢?在WINCC工具里边没有找到项目复制器。 sPro = "Provider=WinCCOLEDBProvider.1;" sDsn = "Catalog=CC_mm_WinC_11_09_02_11_26_33R;"
sSer = "Data Source=.\WinCC"
sCon = sPro + sDsn + sSer
Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = sCon
conn.CursorLocation = 3
conn.Open If err.number<>0 Then
MsgBox "打开连接错误!"
End If
err.clear sSql = "TAG:R,'bm\Number_b','"+StrBtime+"','"+StrEtime+"'“ Set oRs = CreateObject("ADODB.Recordset") Set oCom = CreateObject("ADODB.Command")
oCom.CommandType = 1
Set oCom.ActiveConnection = conn
oCom.CommandText = sSql
Set oRs = oCom.Execute If GetConState(conn.State) = "adStateClosed" Then
MsgBox "数据库连接失败" End If
-------第二行应该有问题。
-------谢谢您~改成这样也无法连接: Set DSNname=HMIRuntime.Tags("@DatasourceNameRT")
DSNname.Read
sDsn= "Catalog="&DSNname.value&";"
------你把你读出的在界面上做个变量显示出来看对不对,用数据库读的时候必须在运行wincc.
---------定义了几个变量进行测试,改变变量的值,归档表格控件中变量值也跟着改变,但是导不出表格。 SQL项目数据库bdo.archive 可以正常显示最后一次操作的时间,但是看不到值,可能SQL对这些值是隐藏的。 程序中,adodb.connection的err.number不为0,用GetConState测试数据库连接状态为关闭,不能成功连接数据库,但是激活WINCC之后没有不能连接数据库的提示框,我是通过测试adodb.connection的err.number和GetConState,并用msg显示数据库连接状态的。感觉是因为项目复制到新电脑,更改项目的计算机名称导致的,但是怎么解决呢?我可以删除项目中的数据库文件,重新生成吗?
--------1、用WinCC项目复制器拷贝出来,再打开拷贝的项目文件。 2、sDsn= "Catalog=" & HMIRuntime.Tags("@DatasourceNameRT").Read & ";" 这样,连接部分应该没问题。 -------sSql = "TAG:R,'bm\Number_b','"+StrBtime+"','"+StrEtime+"'“ 这行最后的双引号,是中文的双引号,肯定是不行的,你查查。
----问题解决了!谢谢各路大神的帮助!数据库的连接和命令的执行都没有问题,可能就是因为WINCC项目是复制过来的,导致数据库无法导通。用OLE.DB Tag and Alarm Expert . xls 试了一下,可以成功导出数据,再运行程序,就能连接了,问题解决得有点莫名其妙、、
------自己编写的程序,查询到open(打开)adodb.connection的err.number不为0,说明数据库连接没有打开,是有错误的。但是用西门子自己的OLE.DB Tag and Alarm Expert . xls 可以导出归档数据,之后再运行自己的程序,查询open(打开)adodb.connection的err.number为0,说明数据库连接打开正常。貌似西门子自己的OLE.DB Tag and Alarm Expert . xls访问权限高。 没有找到大神们说的项目复制器,可能一开始装WINCC的时候没有安装,可能这是一个简便的解决方法。
-------第一个&的后边和第二个&的前边是有空格的,这个刚检查出来,谢谢啦
|