找回密码
 论坛注册
搜索
查看: 1247|回复: 0

内置sql筛选的实时报警示例

[复制链接]
100 紫币 回复本帖可获得 5 紫币奖励! 每人限 1 次(中奖概率 80%)
  • 打卡等级:热心大叔
  • 打卡总天数:108
  • 打卡月天数:9
  • 打卡总奖励:1823
  • 最近打卡:2025-04-30 13:05:45

266

主题

30

回帖

5万

积分

管理员

积分
57593

最佳新人活跃达人技术达人先锋会员官方徽章

发表于 2024-11-15 14:32:59 | 显示全部楼层 |阅读模式
实时报警列表:
20241115133157.png


①查询指定时间范围内的实时报警
  1. //条件:时间
  2. ObSql sql;
  3. ObTable tab;
  4. sql.Connect("Local");
  5. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where DATETIME>="+ToString(t1.Time_t)+" and DATETIME<="+ToString(t2.Time_t)+" and REALALMCOUNT=100",tab);//时间范围
  6. Table1.Set(tab);
  7. sql.Close();
复制代码
20241115135354.png


②查询指定时间范围内指定单元的实时报警
  1. //条件:时间+单元
  2. ObSql sql;
  3. ObTable tab;
  4. sql.Connect("Local");
  5. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where  DATETIME>="+ToString(t1.Time_t)+" and DATETIME<="+ToString(t2.Time_t)+" and UNIT=1 and REALALMCOUNT=100",tab);//时间范围+单元1的报警
  6. Table1.Set(tab);
  7. sql.Close();
复制代码
20241115140436.png


③查询指定时间范围内指定节点的实时报警
  1. //条件:时间+层级
  2. ObSql sql;
  3. ObTable tab;
  4. sql.Connect("Local");
  5. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where DATETIME>="+ToString(t1.Time_t)+" and DATETIME<="+ToString(t2.Time_t)+" and ALMGROUP='Area1.Line1' and REALALMCOUNT=100",tab);//时间范围+层级'Area1.Line1
  6. Table1.Set(tab);
  7. sql.Close();
复制代码
20241115141037.png


④查询指定节点指定单元的实时报警
  1. //条件:单元+层级
  2. ObSql sql;
  3. ObTable tab;
  4. sql.Connect("Local");
  5. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where Unit=1 and ALMGROUP='Area1.Line1' and REALALMCOUNT=100",tab);//单元1+层级Area1.Line1
  6. Table1.Set(tab);
  7. sql.Close();
复制代码
20241115141444.png


⑤查询低级报警
  1. //条件:级别
  2. ObSql sql;
  3. ObTable tab;
  4. sql.Connect("Local");
  5. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where LEVEL=0 and REALALMCOUNT=100",tab);//低级报警
  6. Table1.Set(tab);
  7. sql.Close();
复制代码
20241115141659.png


⑥查询指定节点下紧级报警
  1. //条件:级别+层级
  2. ObSql sql;
  3. ObTable tab;
  4. sql.Connect("Local");
  5. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where LEVEL=2 and ALMGROUP='Area1.Line1' and REALALMCOUNT=100",tab);//紧急报警+层级Area1.Line1
  6. Table1.Set(tab);
  7. sql.Close();
复制代码
b20241115142052.png


⑦点名查询(精准或模糊查询)

  1. //条件:点名
  2. ObSql sql;
  3. ObTable tab;
  4. sql.Connect("Local");
  5. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where Name Like '%1_2%' and REALALMCOUNT=100",tab);//点名内含有1_2的测点报警
  6. Table1.Set(tab);
  7. sql.Close();
复制代码
20241115142415.png


⑧说明查询(模糊或精确)
  1. //条件:说明
  2. ObSql sql;
  3. ObTable tab;
  4. sql.Connect("Local");
  5. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where Desc Like '%电压%'  and REALALMCOUNT=100",tab);//说明含有电压
  6. Table1.Set(tab);
  7. sql.Close();
复制代码
20241115142755.png


内置SQL查询注意事项:

1.查询实时报警,不可缺少REALALMCOUNT条件. 此为必要条件,不可缺少!!
  1. ObSql sql;
  2. ObTable tab;
  3. sql.Connect("Local");
  4. sql.Query("SELECT  DATETIME AS 时间,NAME AS 点名,LEVEL AS 级别,UNIT AS 单元,ALMGROUP AS 层级,DESC AS 说明 from alarmdata where DATETIME>="+ToString(t1.Time_t)+" and DATETIME<="+ToString(t2.Time_t),tab);//<font color="#ff0000">缺少</font><span style="color: rgb(255, 0, 0);">REALALMCOUNT,会导致查询结果为空</span>
  5. Table1.Set(tab);
  6. sql.Close();
复制代码

2、查询语句必须包含SELECT、FROM、WHERE这三个关键字

3、查询必须要有条件表达式

4、如果有时间条件,必须有时间范围,即开始和结束时间。

5、查询条件,字符串区分大小写
a20241115142415.png

顶部qrcode底部
帅的人都用微信扫了!
快速回复 返回顶部 返回列表