网站首页 > 知识剖析 正文
前面2课叙述了如何准备数据---将数据写入数据库,如何查询、导出和打印日报表。
对于月报表、年报表的操作其实同日报表一样,只是需要做一个系统后台程序,将数据库的每天/每月的数据进行计算,然后写入数据库的月表单和年表单即可。
对于月报表和日报表的界面可以参考设计如下:
对于后台运行程序设计代码如下:
Const g_conString = " Provider=MSDASQL.1;Persist Security Info=False;Data Source=SQL_KEP;Initial Catalog=SQL_KEP" '链接数据库
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Dim g_where As String
Dim g_where2 As String
Dim g_startDate As String
Dim g_mou As Boolean
Dim zou As Boolean
Dim yue As Boolean
Private Sub dayreport(i As Integer) '月报表数据
Dim strsql
Dim cn As ADODB.Connection
Dim record As ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open g_conString
Set record = New ADODB.Recordset
st = Str(Date)
g_where = "tt>='" + Str(DateAdd("d", -1, st)) + " 0:20:0' and tt<='" + st + " 0:30:50'"
strsql = "select avg(t1),avg(t2),avg(t3),avg(t4),avg(t5),avg(t6),avg(t7),avg(t8),avg(t9),avg(t10),avg(t11),avg(t12),avg(t13),avg(t14),avg(t15),avg(t16),avg(t17),avg(t18) from tt1 where " + g_where
'计算本月的平均值插入tt2
record.Open strsql, cn
If record.EOF = False Then
V1 = Format(record.Fields(0).Value, "0.00")
V2 = Format(record.Fields(1).Value, "0.00")
V3 = Format(record.Fields(2).Value, "0.00")
V4 = Format(record.Fields(3).Value, "0.00")
V5 = Format(record.Fields(4).Value, "0.00")
V6 = Format(record.Fields(5).Value, "0.00")
V7 = Format(record.Fields(6).Value, "0.00")
V8 = Format(record.Fields(7).Value, "0.00")
V9 = Format(record.Fields(8).Value, "0.00")
V10 = Format(record.Fields(9).Value, "0.00")
V11 = Format(record.Fields(10).Value, "0.00")
V12 = Format(record.Fields(11).Value, "0.00")
V13 = Format(record.Fields(12).Value, "0.00")
V14 = Format(record.Fields(13).Value, "0.00")
V15 = Format(record.Fields(14).Value, "0.00")
V16 = Format(record.Fields(15).Value, "0.00")
V17 = Format(record.Fields(16).Value, "0.00")
V18 = Format(record.Fields(17).Value, "0.00")
End If
Set record = Nothing
Set record = New ADODB.Recordset
strsql = "insert INTO tt2 (tt,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18 ) VALUES ('" + Str(DateAdd("d", -1, st)) + "','" + V1 + "','" + V2 + "','" + V3 + "','" + V4 + "','" + V5 + "','" + V6 + "','" + V7 + "','" + V8 + "','" + V9 + "','" + V10 + "','" + V11 + "','" + V12 + "','" + V13 + "','" + V14 + "','" + V15 + "','" + V16 + "','" + V17 + "','" + V18 + "')"
'MsgBox strsql
record.Open strsql, cn
'record.Close
Set record = Nothing
cn.Close
Set cn = Nothing
End Sub
Private Sub moureport(i As Integer) '年报表
Dim strsql
Dim cn As ADODB.Connection
Dim record As ADODB.Recordset
Set cn = New ADODB.Connection
cn.Open g_conString
Set record = New ADODB.Recordset
st = Str(Date)
g_where = "tt>='" + Str(DateAdd("m", -1, st)) + " 0:0:0' and tt<='" + st + " 0:30:50'"
strsql = "select avg(t1),avg(t2),avg(t3),avg(t4),avg(t5),avg(t6),avg(t7),avg(t8),avg(t9),avg(t10),avg(t11),avg(t12),avg(t13),avg(t14),avg(t15) ,avg(t16),avg(t17),avg(t18)from tt2 where " + g_where
'计算本年月度平均值插入到tt3
record.Open strsql, cn
If record.EOF = False Then
V1 = Format(record.Fields(0).Value, "0.00")
V2 = Format(record.Fields(1).Value, "0.00")
V3 = Format(record.Fields(2).Value, "0.00")
V4 = Format(record.Fields(3).Value, "0.00")
V5 = Format(record.Fields(4).Value, "0.00")
V6 = Format(record.Fields(5).Value, "0.00")
V7 = Format(record.Fields(6).Value, "0.00")
V8 = Format(record.Fields(7).Value, "0.00")
V9 = Format(record.Fields(8).Value, "0.00")
V10 = Format(record.Fields(9).Value, "0.00")
V11 = Format(record.Fields(10).Value, "0.00")
V12 = Format(record.Fields(11).Value, "0.00")
V13 = Format(record.Fields(12).Value, "0.00")
V14 = Format(record.Fields(13).Value, "0.00")
V15 = Format(record.Fields(14).Value, "0.00")
V16 = Format(record.Fields(15).Value, "0.00")
V17 = Format(record.Fields(16).Value, "0.00")
V18 = Format(record.Fields(17).Value, "0.00")
End If
Set record = Nothing
Set record = New ADODB.Recordset
strsql = "insert INTO tt3 (tt,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16,t17,t18 ) VALUES ('" + Str(DateAdd("d", -1, st)) + "','" + V1 + "','" + V2 + "','" + V3 + "','" + V4 + "','" + V5 + "','" + V6 + "','" + V7 + "','" + V8 + "','" + V9 + "','" + V10 + "','" + V11 + "','" + V12 + "','" + V13 + "','" + V14 + "','" + V15 + "','" + V16 + "','" + V17 + "','" + V18 + "')"
'MsgBox strsql
record.Open strsql, cn
'record.Close
Set record = Nothing
cn.Close
Set cn = Nothing
End Sub
Private Sub Timer1_Timer()
If Hour(Now()) = 0 And g_mou = False Then
dayreport (1) '调用月报表插入数据
g_mou = True
End If
If Hour(Now()) = 0 And Day(Now()) = 1 And yue = False Then
moureport (1) '调用年报表插入数据
yue = True
End If
If Hour(Now()) > 0 Then
g_mou = False
yue = False
zou = False
End If
End Sub
收录于合集 #数据库
5个
上一篇基于物联网关OPC软件采集数据并存入数据库下一篇上位机外挂报表第2课--日报表设计
- 上一篇: SQL语言包括哪几部分?每部分都有哪些操作关键字?
- 下一篇: 「干货」SQL分析函数,看这一篇就够了
猜你喜欢
- 2025-05-08 「干货」SQL分析函数,看这一篇就够了
- 2025-05-08 SQL语言包括哪几部分?每部分都有哪些操作关键字?
- 2025-05-08 SQL 高手必备!5 步拆解复杂 SQL 逻辑,轻松驾驭数据分析
- 2025-05-08 如何计算100万个数据的平均值?MySQL的AVG函数了解下
- 2025-05-08 SQL在数据分析中怎么使用(sql 进行数据分析实例)
- 2025-05-08 SQL的GROUP BY语句和聚合函数 详解
- 2025-05-08 如何使用 SQL 视图和子查询进行复杂查询
- 2025-05-08 PostgreSQL 内置函数详解(postgresql切换数据库)
- 2025-05-08 SQL之分组函数(sql分组函数做查询条件)
- 2025-05-08 SQL用了两年多,分享2个最常用的小技巧
- 06-30美国食品标签上的含义(美国食品标志)
- 06-305G 网络如何进行系统消息更新(5g系统升级)
- 06-30如何使用Bulk Product Update批量产品更新将产品信息提交给SAGE
- 06-30什么是VLAN? VLAN基本原理(什么是vlan 其作用是什么)
- 06-30隧道人员定位投屏操作说明(隧道人员定位系统)
- 06-30Grafana可视化平台面板之Gauge仪表和Bar Gauge条形仪表
- 06-30Web Components实践:如何搭建一个框架无关的AI组件库
- 06-30Dify「模板转换」节点终极指南:动态文本生成进阶技巧(附代码)Jinja2引擎解析|6大应用场景实战
- 最近发表
-
- 美国食品标签上的含义(美国食品标志)
- 5G 网络如何进行系统消息更新(5g系统升级)
- 如何使用Bulk Product Update批量产品更新将产品信息提交给SAGE
- 什么是VLAN? VLAN基本原理(什么是vlan 其作用是什么)
- 隧道人员定位投屏操作说明(隧道人员定位系统)
- Grafana可视化平台面板之Gauge仪表和Bar Gauge条形仪表
- Web Components实践:如何搭建一个框架无关的AI组件库
- Dify「模板转换」节点终极指南:动态文本生成进阶技巧(附代码)Jinja2引擎解析|6大应用场景实战
- 为警示“勇闯51区”的年轻人,美军方推特这个玩笑砸了自己的脚
- 威纶通触摸屏与西门子1200通讯符号寻址时,如何导入标签?
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)