| 作者 | 主题 |
|---|---|
|
宁超 至圣 经验值:11564 发帖数:1009 精华帖:39 |
楼主
主题:C脚本使用WinCCOLEDBProvider为何总是报错呢? Provider=WinCCOLEDBProvider.1;Initial Catalog=CC_OS_1__17_10_24_13_39_55R;Data Source=.\WINCC Tag:R,'SystemArchive\pidLevel/1.MV#Value','0000-00-00 00:10.00.000','0000-00-00 00:00.00.000' //报错内容 Microsoft OLE DB Service Components: Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done. ADODB.Recordset: The connection cannot be used to perform this operation. It is either closed or invalid in this context. property Close not available //C脚本 #pragma code("kernel32.dll") #define GetObject GetObject __object *cn=NULL; __object *rs=NULL; int i,RsCount; char sql[256]; char* DataSourceNameRT; char LocalComputerName[30]; char connstr[256]; //我试过了可以访问SQLOLEDB用户归档,但是过程值归档不行。 DataSourceNameRT = GetTagChar("@DatasourceNameRT"); strcat(connstr,"Provider=WinCCOLEDBProvider.1;Initial Catalog="); strcat(connstr,DataSourceNameRT); strcat(connstr,";Data Source=.\\WINCC"); printf("%s",connstr); cn=__object_create("ADODB.Connection"); rs=__object_create("ADODB.RecordSet"); strcat(sql,"Tag:R,'SystemArchive\\pidLevel/1.MV#Value','0000-00-00 00:10.00.000','0000-00-00 00:00.00.000' "); printf("%s",sql); cn->open(connstr); rs->Open(sql,cn,3,1); //RsCount=rs->RecordCount; //rs->MoveFirst(); rs->Close; cn->Close; 救救我这个小菜鸟吧,不要VBS的脚本。 |
|
宁超 至圣 经验值:11564 发帖数:1009 精华帖:39 |
8楼
主题:回复:C脚本使用WinCCOLEDBProvider为何总是报错呢?
找到原因了。连接数据库时cn->cursorlocation=3就返回了数据。仔细上网百度了ADO的接口才发现是少组态了接口数值。其实对比:vbs连接数据库的代码就应该发现这个问题的。唉,菜鸟路多坎坷
|