Intouch 关于报表数据的一种思路
在熟悉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 关于报表数据的一种思路的更多相关文章
- [PHP]更新中间关联表数据的两种思路
---------------------------------------------------------------------------------------------------- ...
- 把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进)
#把JSON数据载入到页面表单的两种思路(对easyui自带方法进行改进) ##背景 项目中经常需要把JSON数据填充到页面表单,一开始我使用easyui自带的form load方法,觉得效率很低,经 ...
- js数组去重几种思路
在一些后台语言中都内置了一些方法来处理数组或集合中重复的数据.但是js中并没有类似的方法,网上已经有一些方法,但是不够详细.部分代码来源于网络.个人总计如下:大致有4种思路 1)使用两次循环比较原始的 ...
- 应对Memcached缓存失效,导致高并发查询DB的四种思路(l转)
当Memcached缓存失效时,容易出现高并发的查询DB,导致DB压力骤然上升. 这篇blog主要是探讨如何在缓存将要失效时,及时地更新缓存,而不是如何在缓存失效之后,如何防止高并发的DB查询. 解决 ...
- 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 ...
- 处理 Vue 单页面应用 SEO 的另一种思路
vue-meta-info 官方地址: monkeyWangs/vue-meta-info (设置vue 单页面meta info信息,如果需要单页面SEO,可以和 prerender-spa-plu ...
- [Redis]处理定时任务的2种思路
用redis完成类似 at 命令的功能,例如订单24小时后没有支付自动关闭,定时发邮件,主要说下任务生成之后怎么触发消费. 使用 有序集合 思路: 使用sorted Sets的自动排序, key 为任 ...
- Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示
Android JSON原生解析的几种思路,以号码归属地,笑话大全,天气预报为例演示 今天项目中要实现一个天气的预览,加载的信息很多,字段也很多,所以理清了一下思路,准备独立出来写一个总结,这样对大家 ...
- 解决Geoserver请求跨域的几种思路
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景描述 跨域问题是浏览器同源安全制引起的特别常见的问题.不同前端语 ...
随机推荐
- Go语言实现的23种设计模式之结构型模式
摘要:本文主要聚焦在结构型模式(Structural Pattern)上,其主要思想是将多个对象组装成较大的结构,并同时保持结构的灵活和高效,从程序的结构上解决模块之间的耦合问题. 本文分享自华为云社 ...
- 有模有样解决Flutter里Webview无法访问HTTP页面的问题
探索过程 Android9(好像是吧)开始谷歌就默认不让开发者访问不安全HTTP内容了,如果非要用HTTP,那必须在networkSecurityConfig里配置cleartextTrafficPe ...
- 判断Linux 系统负荷是否过载
1.如果你的电脑很慢,可以查看下它的工作量是否太大. 在Linux系统中,我们一般使用uptime,或者w 或者top命令 如下:在操作系统中输入 :uptime 08:55:44 up 23 day ...
- ES6中的Module与Interator
小编今天在用Vue做项目的时候,发现组件中有import和export,刚好今天看到相关的语法介绍和一些实例,下面小编就和大家一起进步.对于模块化规范,在es6出现之前,有以下三种规范,分别是Comm ...
- Netty 框架学习 —— 预置的 ChannelHandler 和编解码器
Netty 为许多提供了许多预置的编解码器和处理器,几乎可以开箱即用,减少了在烦琐事务上话费的时间和精力 空闲的连接和超时 检测空闲连接以及超时对于释放资源来说至关重要,Netty 特地为它提供了几个 ...
- 信息论估计工具jidt基本使用
JIDT基本介绍 JIDT是 Java Information Dynamics Toolkit的简称,用于研究复杂系统中信息论相关度量的计算,它是一个基于java的开源工具库,也可以在Matlab. ...
- buu crypto 凯撒?替换?呵呵!
一. 以为是简单的凯撒加密,但是分析Ascill表,发现毫无规律,意味着要爆破出所有可能.只能用在线工具来弄了,脚本是不可能写的(狗头) 找到了,但是提交不成功,需要变成小写,用脚本转换一下,同时很坑 ...
- WPF教程一:创建Hello world来理解XAML的内容及编译
在实际的WPF开发中遇到很多再用Winform写法来写WPF的开发人员,很多时候项目进度延期.出现非必要的BUG等等.大多是因为开发人员虽然是再写WPF. 但是没有好好的学过WPF,就导致无法发挥出W ...
- git rebase(变基)操作
1.rebase(变基)操作 注意事项:rebase 改变分支的根源,绝对不要在与其他人共享的分支上进行操作rebase黄金法则:绝不要在公共的分支上使用它! 1.1git merge 与 git r ...
- 续PA协商过程
续PA协商过程 当sw3的接口恢复之后会发生2中情况. ①sw3的G0/0/2口先发BPDU ②sw3的G0/0/3口先发BPDU sw3先发送BPDU sw3和sw1的交互过程: sw3的2口恢复后 ...