【乌拉喵.教程】“多负载识别监控平台(上位机)”技术细节 之Unit2-Form2用户电量查询显示界面

简介: 【乌拉喵.教程】“多负载识别监控平台(上位机)”技术细节 之Unit2-Form2用户电量查询显示界面

下面介绍Unit2用户电量查询显示界面的实现。

此界面并没有使用什么独特的控件,其中使用了多标签PageControl,数据显示DBGrid,图标Chart控件。


其中DBGird控件直接与Form1中的DataSource相连,由数据库读出的数据直接使用add语句,在Chart控件中进行显示。

1.数据的查询

操作数据库自然使用SQL语句,输入带变量的SQL语句,可以使用Form1中Timer4的输入方法(见Unit1技术细节4.Timer4),这里举例一种直接使用“+”来产生控制语句字符串的方法。

  u_Date := datetostr(teDateTimePicker1.DateTime);//获得用户选择的时间
  u_Year:=leftStr(u_Date,4);//取年
  u_Month:=copy(u_Date,6,2);//取月
  u_Day:=copy(u_Date,9,2);//取日
//  tememo2.Text := u_Date;
//  tememo1.Text := u_Year+u_Month+u_Day;
  form1.IBdatabase1.Connected:=true;
  form1.IBquery1.Close;
  form1.ibquery1.SQL.Clear;
  case f2dlCombo.ItemIndex of
    0:form1.ibquery1.SQL.Add('select * from BH0 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);//查询当年月日的数据
    1:form1.ibquery1.SQL.Add('select * from BH1 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
    2:form1.ibquery1.SQL.Add('select * from BH2 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
    3:form1.ibquery1.SQL.Add('select * from BH3 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
    4:form1.ibquery1.SQL.Add('select * from BH4 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
    5:form1.ibquery1.SQL.Add('select * from BH5 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
    6:form1.ibquery1.SQL.Add('select * from BH6 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
    7:form1.ibquery1.SQL.Add('select * from BH7 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
    8:form1.ibquery1.SQL.Add('select * from BH8 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
    9:form1.ibquery1.SQL.Add('select * from BH9 where u_day='+ u_Day +
                        'and u_month=' + u_Month + 'and u_year=' + u_Year);
  end;
  form1.ibquery1.Open;  //这时值已经放到IBQuery中了

其中可以观察到  u_Date,u_Year,u_Month,u_Day : string;即均为字符型数据,传输的SQL数据也为字符串型,因此,直接将 u_Date,u_Year,u_Month,u_Day加入到SQL语句中是符合类型的。因此使用语句('select * from BH0 where u_day='+ u_Day + 'and u_month=' + u_Month + 'and u_year=' + u_Year) 可以找出指定年月日的所有数据。


2.数据的显示

对于数据的显示,使用series1的add命令,将得到的数据add到表中,之后进行显示即可。


下面展示的是使用最笨的方法将数据读出:


定义一个数组 adayhour来存放24小时的数据,如  adayhour : array [1..24] of real;

  adayhour[1] := form1.ibquery1.FieldByName('H1').AsFloat ;//按字段名取出数据,分别放到数组中
  adayhour[2] := form1.ibquery1.FieldByName('H2').AsFloat ;//因为数据类型不一样,所以要加.asfloat
  adayhour[3] := form1.ibquery1.FieldByName('H3').AsFloat ;
  adayhour[4] := form1.ibquery1.FieldByName('H4').AsFloat ;
  adayhour[5] := form1.ibquery1.FieldByName('H5').AsFloat ;
  adayhour[6] := form1.ibquery1.FieldByName('H6').AsFloat ;
  adayhour[7] := form1.ibquery1.FieldByName('H7').AsFloat ;
  adayhour[8] := form1.ibquery1.FieldByName('H8').AsFloat ;
  adayhour[9] := form1.ibquery1.FieldByName('H9').AsFloat ;
  adayhour[10] := form1.ibquery1.FieldByName('H10').AsFloat ;
  adayhour[11] := form1.ibquery1.FieldByName('H11').AsFloat ;
  adayhour[12] := form1.ibquery1.FieldByName('H12').AsFloat ;
  adayhour[13] := form1.ibquery1.FieldByName('H13').AsFloat ;
  adayhour[14] := form1.ibquery1.FieldByName('H14').AsFloat ;
  adayhour[15] := form1.ibquery1.FieldByName('H15').AsFloat ;
  adayhour[16] := form1.ibquery1.FieldByName('H16').AsFloat ;
  adayhour[17] := form1.ibquery1.FieldByName('H17').AsFloat ;
  adayhour[18] := form1.ibquery1.FieldByName('H18').AsFloat ;
  adayhour[19] := form1.ibquery1.FieldByName('H19').AsFloat ;
  adayhour[20] := form1.ibquery1.FieldByName('H20').AsFloat ;
  adayhour[21] := form1.ibquery1.FieldByName('H21').AsFloat ;
  adayhour[22] := form1.ibquery1.FieldByName('H22').AsFloat ;
  adayhour[23] := form1.ibquery1.FieldByName('H23').AsFloat ;
  adayhour[24] := form1.ibquery1.FieldByName('H24').AsFloat ;

使用 ibquery1.FieldByName('?').AsFloat 语句即可以float类型将字段名为“?”的数据取出,之后使用add命令将其加入到series1中。

  series1.Clear;//要先清空series,要不他会总add
  with series1 do
  begin
  add(0);//占了x=0,让显示看起来好看
    for i := 1 to 24 do
      add(adayhour[i]);
  end;
相关文章
取消 IDEA项目结构后 100% classes, 100% lines covered 的展示
在Idea,使用快捷键`Ctrl+Alt+F6` 去掉 `Choose Coverage Suite to Display`对话框的勾选项即可。
1008 6
取消 IDEA项目结构后 100% classes, 100% lines covered 的展示
|
存储 JavaScript 前端开发
掌握这34个知识点,助你快速入门TS
TypeScript现在几乎已经是所有前端程序员必备的技能了,现在的各大框架已经全部采用TS进行开发。本篇文章总结了TS中常用的知识点,希望能对你有所帮助。
1663 0
|
机器人 开发工具 Web App开发
干货满满!解密阿里云RPA (机器人流程自动化)的产品架构和商业化发展
阿里云RPA,作为阿里云自研8年的技术,在资本的热捧下,逐渐从幕后来到台前,成为企业服务市场的黑马。本文将从产品上全面剖析,阿里云RPA这款产品的现阶段情况,同时简单谈谈阿里云RPA的商业化进展。
9296 0
干货满满!解密阿里云RPA (机器人流程自动化)的产品架构和商业化发展
|
11月前
|
人工智能 开发框架 自然语言处理
智能体来了:AI教育与创业的新引擎|黎跃春谈智能体教育与产业融合
AI正从工具迈向“伙伴”时代,智能体(AI Agent)成为新引擎。它具备目标、逻辑与执行力,推动教育、产业与创业变革。黎跃春倡导“智能体IP操盘手”理念,阿里云等平台助力产教融合,大学生零基础也可参与开发,开启人人可创的AI新纪元。
|
12月前
|
存储 弹性计算 人工智能
阿里云服务器可以免费试用吗?云产品和解决方案免费试用活动及常见问题介绍
阿里云服务器可以免费试用吗?当然是可以试用的,完成实名认证的云服务器ECS新用户,可免费试用3个月。不仅云服务器可以试用,云数据库等其他热门云产品也可以试用,2025年阿里云还额外推出了解决方案免费试用活动,本文为大家介绍云产品和解决方案免费试用活动及常见问题,以供了解参考。
|
10月前
|
人工智能 自然语言处理 人机交互
《智能语》:十进制驱动的多模态人工语言系统构建与协同机制研究
《智能语》是全球首个融合十进制逻辑、多模态表达与东方哲学的人工语言系统,实现文字、语音、词汇、语法全链条协同。通过笔画-音素-数字三重绑定,构建“形音义理”统一的创新架构,具备语义精准、无限扩展、跨文化普适等优势,为语言学习、人机交互与文化传播提供全新范式。(238字)
521 4
|
运维 测试技术
当一个按键“摆烂”时,需要更换整个键盘吗?
键盘按键失灵时,别急着更换整个键盘!本文教你通过三步解决:诊断病因、对症下药、预防复发。首先进行“键盘体检”,包括跨设备验证、软件驱动测试、BIOS检测及硬件检查,找出是污垢、物理损坏还是电路故障。接着针对问题提供治疗方案,如更新驱动、清洁键槽或更换零件。最后提醒大家优先排查软件问题,温柔清洁,理性对待物理损坏,并建议选购可维护性强的键盘。记住,善待键盘,远离零食屑,让输入更顺畅!
1177 3
|
SQL 存储 监控
Navicat 面试题及答案整理,最新面试题
Navicat 面试题及答案整理,最新面试题
877 0
|
Ubuntu 数据安全/隐私保护
ubuntu 系统切换root用户
ubuntu 系统切换root用户
597 0
|
存储 缓存 监控
提升阿里云 RPA 性能的方法
随着企业对业务流程自动化的需求不断增长,阿里云 RPA(机器人流程自动化)的性能成为了关注的焦点。本文将介绍一些提升阿里云 RPA 性能的方法,帮助您充分发挥其潜力,实现更高效的业务流程自动化。