技术论坛

WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错

作者 主题
游民

经验值: 122
发帖数: 6
精华帖: 1
主题:【求助】WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
推荐帖


只看楼主 只看精华 楼主 2020-03-19 10:03:35

WinCC 7.4SP1版本可以归档字符串变量,使用WinCC连通性软件包WinCC OLE DB提供程序将

 归档数据库用ListView控件列表显示。参考WinCC帮助文档中的实例“使用WinCC OLE DB

提供程序和Visual Basic.NET读取过程值归档”


问题:

使用TAG架构带WHERE子句的命令字符串一切正常,

其中ArTagsTag_1为模拟量变量,ArTagsT_1为字符串变量。

CommandString ="TAG:R,'ArTagsTag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE RealValue  > 2 AND RealValue  < 5'"


而使用TAG_EX架构带WHERE子句却报错,提示“不能转换变量”或者“错误的SIN命令”。

CommandString ="TAG_EX:R,'ArTagsTag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE VariantValue > 2 AND VariantValue < 5'"


或者

CommandString ="TAG_EX:R,'ArTagsT_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE VariantValue ='YOU''"




 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1614752&b_id=5&s_id=0&num=13

侠圣

经验值: 2241
发帖数: 378
精华帖: 4
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
推荐帖


只看楼主 只看精华 1楼 2020-03-19 11:59:05

TAG_EX架构是什么意思?


 
以下网友喜欢您的帖子:

  
版主

经验值: 17322
发帖数: 8474
精华帖: 18
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
推荐帖


只看楼主 只看精华 2楼 2020-03-19 18:53:46

从WinCC V7.4 SP1开始,变量归档查询时,变量值字段为VariantValue,低于此版本的是RealValue

第一个查询语句,居然能查询到?


无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
侠圣

经验值: 2210
发帖数: 263
精华帖: 6
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
推荐帖


只看楼主 只看精华 3楼 2020-03-20 13:39:11

真的很奇怪,数据结构变了居然还能用啊????楼主怕啥看错了吧 应该是7,.4不带sp1吧


wincc报表全套教材书+视频教程+实例:2606352062
以下网友喜欢您的帖子:

  
游民

经验值: 122
发帖数: 6
精华帖: 1
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
精华帖精华帖星级1级 推荐帖


只看楼主 只看精华 楼主 4楼 2020-03-20 15:14:20

WinCC 7.5SP1新版本不仅可以归档字符串变量,还可以通过WinCC连通性软件包WinCC OLE DB提供程序的TAG_EX架构记录集,将字符串变量读取出来。

对于超过10万条包含字符串记录的归档,不需要自建SQL server数据库,就能通过脚本编制自己的万能报表,这种方式摆脱了“用户归档”记录数有限制的问题。

 

参考7.5 SP1帮助文档中的实例“使用WinCC OLE DB提供程序和Visual Basic.NET读取过程值归档”

因为7.5SP1官方帮助中没有给出TAG_EX架构的范例,只有自己摸索一下。

建立两个归档变量:  ArTagsTag_1为浮点变量,ArTagsT_1为字符串变量。

1、使用TAG_EX架构命令字符串

CommandString="TAG_EX:R,('ArTagsTag_1'; 'ArTagsT_1'),'0000-00-00 00:01:00.000','0000-00-00 00:00:00.000'"  

如图正常读取了字符串和浮点数

 


2、选择非字符串变量,命令字符串带TimeStep子句

CommandString="TAG_EX:R,'ArTagsTag_1','0000-00-00 00:01:00.000','0000-00-00 00:00:00.000','TIMESTEP=20,5'"    

如图正常读取了带时间间隔条件的浮点数

 

 

 3、选择非字符串变量,带WHERE子句

CommandString ="TAG_EX:R,'ArTagsTag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE VariantValue > 20.0 AND VariantValue < 21.0'"

如图正常读取了20—21之间的浮点数

 

4、使用TAG架构读取非字符串变量时,带WHERE和TimeStep子句(注意VariantValue变为RealValue)

CommandString="TAG:R,'ArTagsTag_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE RealValue > 20.0 AND RealValue < 21.0','TIMESTEP=20,5'"

正常读取

 

 

存在的问题:

5、选择字符串变量,带TimeStep子句

CommandString="TAG_EX:R,'ArTagsT_1','0000-00-00 00:01:00.000','0000-00-00 00:00:00.000','TIMESTEP=20,5'"    

查询结果为空

 

 

6、选择字符串变量,带WHERE子句

CommandString ="TAG_EX:R,'ArTagsT_1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE = 'YOU''"

报错!

  

 

总结一下:

1、WinCC 7.5SP1版本连通性软件包WinCC OLE DB提供程序,支持字符串、Int64和UInt64的读取,这是一个进步。

2、TAG_EX架构只有读取非字符串变量时,才可以使用WHERE和TimeStep子句。

3、TAG_EX架构读取字符串变量,不支持WHERE和TimeStep子句,希望西门子改进一下!

   目前解决办法是先全部读取出来,再后期处理。


附上:WinCC 7.5SP1版本连通性软件包官方文档

链接:https://pan.baidu.com/s/1VMFw_O5DLE8vdshlElW7dw
提取码:9370

 


 
以下网友喜欢您的帖子:

  
版主

经验值: 17322
发帖数: 8474
精华帖: 18
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
推荐帖


只看楼主 只看精华 5楼 2020-03-21 06:18:37
字符串比较用Like,不要用等于号。
无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
游民

经验值: 122
发帖数: 6
精华帖: 1
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
推荐帖


只看楼主 只看精华 楼主 7楼 2020-03-21 16:03:01

没有WHERE子句正常,

CommandString = "TAG_EX:R,'ArTags\T1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000'"

 

 

加上后就报错,

CommandString = "TAG_EX:R,'ArTags\T1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000','WHERE VariantValue Like 'HELLO''"

 

 


 
以下网友喜欢您的帖子:

  
版主

经验值: 17322
发帖数: 8474
精华帖: 18
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
推荐帖


只看楼主 只看精华 8楼 2020-03-22 08:26:50
改成RealValue Like 'YOU'呢?
无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
推荐帖


只看楼主 只看精华 9楼 2020-03-22 08:47:52
你这行语句是脚本中拷贝过来的吗?注意引号的配对,内嵌字符串的引号和语句的引号不要用相同的,用单双区别开
 
以下网友喜欢您的帖子:

  
至圣

经验值: 19840
发帖数: 8834
精华帖: 39
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错


只看楼主 只看精华 10楼 2020-03-22 08:55:42
where子句不需要用单引号扩起来,where属于sql命令,,后面要比较的字符串属于sql命令中的字符串,需要单引号
 
以下网友喜欢您的帖子:

  
版主

经验值: 17322
发帖数: 8474
精华帖: 18
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错


只看楼主 只看精华 11楼 2020-03-22 19:57:32
单引号嵌套问题
Where子句前面和最后,用单引号,要查询的字符串,用Ascii码Chr(39)来括起来。
无论成与败,无论甜与苦,我还是我。
以下网友喜欢您的帖子:

  
版主

经验值: 69053
发帖数: 12266
精华帖: 59
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错


只看楼主 只看精华 12楼 2020-03-22 22:00:10

用连通性软件包查询数据的时候慢吗?

也可能有bug,安装更新包1试试呢?


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
游民

经验值: 122
发帖数: 6
精华帖: 1
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错


只看楼主 只看精华 楼主 13楼 2020-03-22 23:46:51

1、以上各位建议的方法,今天在WinCC V7.5 SP1+连通性软件包环境中写成VBS脚本测试,

     结论还是一样:TAG_EX:R架构读取字符串变量,不支持WHERE和TimeStep子句

2、用OleDbDataReader读,再用GetSchemaTable()查询读取的记录集结构属性,发现

      TAG:R架构:RealValue为system.Double

      TAG_EX:R架构:VariantValue变为system.object,如果不给出其属性和方法,怎么使用?

3、详细查阅了WinCC V7.5 SP1连通性软件包帮助文档,西门子只给出TAG:R架构的范例,

      没有给出TAG_EX:R架构的范例。

 

 

 

 

 

 


 
以下网友喜欢您的帖子:

  
至圣

经验值: 28602
发帖数: 10825
精华帖: 131
回复:WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错


只看楼主 只看精华 14楼 2020-03-23 20:07:36

“YOU” 不是 Variant 数据类型。 


所以需要先转换一下。 


比如用CONVERT函数。 


参考一下这篇文章:

SQLServer的sql_variant数据类型

https://blog.csdn.net/sheldon178/article/details/79498579


如果有用, 解决了, 请回来点个赞。 




微信公众号:PLC标准化编程,ZHO6371995
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
WinCC带字符串归档记录集TAG_EX架构,使用WHERE子句报错
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。