在熟悉Intouch项目有一段时间了,也做有相关的三个项目,关于Intouch的一些报表数据的采集,也有了自己一定的看法(主要还是因为自己是野路子)今天就把我常用的一种制作思路,提供给大家。(仅供参考哈)

由于个人原因,转入中控行业也有点时间了,为了解决项目的实际需求,也看了一些intouch相关报表的制作思路。特此结合自身实际项目需求总结如下:

基本思路:

SQL Server+时间脚本+绑定列表。

1.具体来讲,首先需要有SQL Server数据库(后者其他的关系型数据库)。然后,建立数据库,以及相应的数据表。当然一般的表的结构都是如下结构:

数据库中的结构---->绑定列表中的对应结构

date----->$datestring

time(0)----->$timestring

其他的数据就看实际需求啦。

2.建好表之后,就是利用windows 下ODBC建立数据库与自己开发的报表(或第三方报表)连接,Intouch编写应用程序脚本

启动时:

ResultCode=SQLConnect(ConnectionID,"Provider=SQLOLEDB;Data  Source=HP-PC;InitialCatalog=HQ;User ID=sa;Password=; ");

至此,intouch<---->SQL SERVER<----->报表的通路已经打通。

3.建立通道后,进入本博客的正题,采集数据。

a.以系统变量$Hour为变化点:

ResultCode=SQLInsert(ConnectionID,"设备运行日报表","RiYunXing");

注:RiYunXing代表intouch中绑定列表的名字,设备运行日报表代表这数据库中表对应的名字。

b.在需求变化中,并不是每次都是以每小时整点记录一次数据,比如采集雨量是以五分钟记录一次,考验智商的时候到了:

$MINUTE
IF ($Minute MOD 5==0) THEN
ResultCode=SQLInsert(ConnectionID,"液位雨量日报表","YeWeiYuLiang");

Bingo,利用$Minute为变化因子,加上取余操作,做到了每五分钟采集一次。

c.然后需求又升级了,怎么做到每两个半小时一次采集(如:8:30,10:30等等),要来大招了:

$TimeString
IF ($Hour MOD 2==0 and $Minute MOD 30==0 and $Second==0) then
ResultCode=SQLInsert(ConnectionID,"运行日报表","RiYunXing");
ENDIF;

最后这个,基本上能随心所欲,想几点记录就几点记录,想记录几次,你只管说。

然后一个,野路子版本的数据采集功能报表记录功能就完成了。

当然。。。。。技术赶不上变化,需求在变,技术也在变,人也要更加努力适应变化,所以,恒不变者,变化也。(吐槽)

下一步重点:

关于数据展示,大屏,曲线,备注这块(前端,json,后台)未完待续。。。

Intouch 关于报表数据的一种思路的更多相关文章

  1. [PHP]更新中间关联表数据的两种思路

    ---------------------------------------------------------------------------------------------------- ...

  2. 把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进)

    #把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进) ##背景 项目中经常需要把JSON数据填充到页面表单,一开始我使用easyui自带的form load方法,觉得效率很低,经 ...

  3. js数组去重几种思路

    在一些后台语言中都内置了一些方法来处理数组或集合中重复的数据.但是js中并没有类似的方法,网上已经有一些方法,但是不够详细.部分代码来源于网络.个人总计如下:大致有4种思路 1)使用两次循环比较原始的 ...

  4. 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)

    当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...

  5. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  6. 处理 Vue 单页面应用 SEO 的另一种思路

    vue-meta-info 官方地址: monkeyWangs/vue-meta-info (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender-spa-plu ...

  7. [Redis]处理定时任务的2种思路

    用redis完成类似 at 命令的功能,例如订单24小时后没有支付自动关闭,定时发邮件,主要说下任务生成之后怎么触发消费. 使用 有序集合 思路: 使用sorted Sets的自动排序, key 为任 ...

  8. Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示

    Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 今天项目中要实现一个天气的预览,加载的信息很多,字段也很多,所以理清了一下思路,准备独立出来写一个总结,这样对大家 ...

  9. 解决Geoserver请求跨域的几种思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景描述 跨域问题是浏览器同源安全制引起的特别常见的问题.不同前端语 ...

随机推荐

  1. [翻译]Go与C#的比较,第二篇:垃圾回收

    Go vs C#, part 2: Garbage Collection | by Alex Yakunin | ServiceTitan - Titan Tech | Medium 目录 译者注 什 ...

  2. redis为什么要提供pipeline功能

    通常我们用redis做接口缓存后,查询接口的性能就能提升到ms级别: 但是redis是纯内存操作啊,总不至于要到ms吧,根据官方的 benchmark 单实例也是能抗 7w+ qps 也就是说单个re ...

  3. 轻松吃透实时时钟芯片DS1302软硬件设计,看完秒懂

    今天我们来讨论一款老掉牙的实时时钟芯片DS1302.什么是实时时钟(RealTime Clock, RTC)呢?为什么我们需要它呢?假设你使用单片机实现万年历应用,一般的做法是这样的:设置中断后判断1 ...

  4. windows 安装Git详解

    windows 安装Git详解 一.Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...

  5. 学会使用Python的threading模块、掌握并发编程基础

    threading模块 Python中提供了threading模块来实现线程并发编程,官方文档如下: 官方文档 添加子线程 实例化Thread类 使用该方式新增子线程任务是比较常见的,也是推荐使用的. ...

  6. Java 提效神器 Stream 的冷门技巧

    Stream 使用这个方法创建一个 Stream 对象. new ArrayList<>().stream() Filter 过滤器,里面传递一个函数,这个函数的返回结果如果为 true ...

  7. jenkins pipeline的声明式与脚本式

    自从Jenkins 2.0 版本升级之后,支持了通过代码(Groovy DSL)来描述一个构建流水线,灵活方便地实现持续交付,大大提升 Jenkins Job 维护的效率,实现从 CI 到 CD 到转 ...

  8. 通过Cloudflare API进行CDN刷新

    1.Cloudflare CDN刷新说明 1.Cloudfalre同Akamai一样,只有刷新,没有预热的概念. 2.通过Cloudflare API进行刷新,需要用到登录用户的[邮箱][api密钥] ...

  9. Kubernetes的认证机制

    1.了解认证机制 API服务器可以配置一到多个认证的插件(授权插件同样也可以).API服务器接收到的请求会经过一个认证插件的列表,列表中的每个插件都可以检查这个请求和尝试确定谁在发送这个请求.列表中的 ...

  10. 自然语言处理(NLP)——简介

    自然语言处理(NLP Natural Language Processing)是一种专业分析人类语言的人工智能.就是在机器语⾔和⼈类语言之间沟通的桥梁,以实现人机交流的目的. 在人工智能出现之前,机器 ...