使用WinCCOLEDBProvider读取wincc归档数据,报错(0x80040E14)

已锁定

NutterTools

  • 帖子

    29
  • 精华

    1
  • 被关注

    3

论坛等级:游民

注册时间:2012-08-30

普通 普通 如何晋级?

使用WinCCOLEDBProvider读取wincc归档数据,报错(0x80040E14)

3943

8

2016-09-01 13:23:31

 大家好!

    最近客户对报表的要求有改变,客户要求要能方便的设置顺序报表的开始时间,结束是时间和时间间隔以及报表的变量。思来想去只有WinCCOLEDBProvider能方便的完成在这个要求。所以我就用C#写了一个小程序,通过WinCCOLEDBProvider接口来调用wincc归档数据,然后再利用得到的数据做出一个报表,最后用户可以选择将报表导出为excel文件。

    现在问题是,我查询的时间如果短的话是没有问题的的,数据可以正常的查询出来.但是一旦查询的时间比较长就会报错。错误信息为:DB_E_ERRORSINCOMMAND(0x80040E14)

    一开始我觉得是我的程序有问题,我不断的检查我的程序,我没有发现有错误。后来我打开sql 的report service,利用report service来查询,发现问题是一样的。查询的时间短没有问题,查询的时间一长就报错。

图1和图2都是用SQL report service 来查询的.

图1是查询时间比较短的截图.

图2是查询时间长的截图




---------------------------------------------------------------------------------------------分  割--------------------------------------

上传一段我查询的关键代码:

     string myConnectstr = "Provider=WinCCOLEDBProvider.1;" + "Catalog="+ Database + ";" + "Data Source="+ serverName+ "\\WinCC";
            string mySelectQuery = "TAG:R," + "(303;304;305)" + ",'" + starttime + "','" + endtime + "','order by Timestamp ASC','"+ "TimeStep=" + step + ",1'";
            //mySelectQuery = "Tag:R,305,'2016-08-30 08:20:27','2016-08-31 08:20:27','order by Timestamp ASC','TimeStep=3600,1'";
            try
            {
                using (OleDbCommand myCommand = new OleDbCommand(mySelectQuery))
                {
                    OleDbConnection  myConnection = new OleDbConnection(myConnectstr);
                    myCommand.Connection = myConnection;
                    OleDbDataAdapter myAdapter = new OleDbDataAdapter(myCommand);
                    DataTable myTableTags = new DataTable();
                    myTableTags.TableName = "myTableTags";
                    myAdapter.Fill(myTableTags);
                    dgv.DataSource = myTableTags;
                    myConnection.Close();
                    MessageBox.Show(myTableTags.Rows.Count.ToString());
                }
            }
            catch(Exception ex)
            {
                //myConnection.Close();
                MessageBox.Show(ex.Message);
            }

-----------------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------

现在问题卡住,不知道到底是wincc的connectivity package问题还是MS SQL的问题,我觉得可能是wincc的分段导致的,因为我发现一般在分段时间(项目现在设置的分段时间是一周)查询问题不大,一旦超过一周那么100%报错。希望那位大神帮忙看看,有没有什么其他原因被我忽略了。

使用WinCCOLEDBProvider读取wincc归档数据,报错(0x80040E14) 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32750条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。