在污水厂或者自来水厂中每天需要生成日报表,对当日的数据进行统计分析计算,这个时候我们可以借助上位机安装SQL或者单独使用服务器安装SQL实现。在组态中通过每小时记录一次数据,将数据插入到SQL中。
一般需要插入的数据有:进水瞬时流量、进水累积流量、进水PH、进水COD、进水氨氮、进水总磷、进水总氮等,出水也包括以上数据。通过中控电脑或者服务器实现每小时存入SQL服务器中。然后我们可以通过EXCEL程序,使用VBA函数功能进行查询生成相应格式的报表
通过日报表我们能够查看一天中任意整点时候数据,也能查看一天进水的总进水量、总出水量。
部分代码如下:
Sheet1.Range("b6:ap29").ClearContents
'表格1的范围B7:AB30所在单元格之中的内容清除
Sheet1.Cells(1, 1) = Years1 & "年" & Months1 & "月" & Days1 & "日"
'表格1单元格2,17中填入日期
'cnstr = "Provider=SQLOLEDB.1;Data Source=" & ";DATABASE=" & "mydata" & ";UID=" & "sa" & ";pwd=" & "pwt"
cnstr = "DSN=DT_DSN;UID=sa;PWD=pwt"
Set conn = New ADODB.Connection
conn.Open cnstr
'------------------------------------------------------sheet1
'1A左1电厂直流电压
str1 = "Select Date,Time,hour,DTime,data2 from data1"
str1 = str1 & " where (Year(DTime)=" & Years1 & " And Month(DTime)="
str1 = str1 & Months1 & "And Day(DTime)=" & Days1 & " And datepart(minute,DTime)='0' and datepart(second,DTime)='0' ) order by DTime"
'上面3行意思是从表格FloatTable中筛选列名为DataAndTime,Tagindex,Val的数据,并且只从中筛选日期的年份,月份,日份分别等于Years1,Months1,Days1,并且Tagindex=0并Status=U
'(Status也是表格FloatTable中的一列列名),并且把查询出来的数据按DateAndTime值排序,实际上这里要查询的就是表格1中的第1列的数据,一天24小时的数据
Set rs = New ADODB.Recordset
rs.Open str1, conn, 1
rs.MoveFirst
'移动到查询结果的第1个数据
If rs.RecordCount > 0 Then 'rs.Record.Count:数据记录总数。
Hours1 = Hour(rs!DTime)
End If
'移动到查询结果的第1个数据
'如果查询结果不为空,那么从查询结果的的第1个数据的日期数值中取得小时数(上一句已经移动到第1个数据了)
Do While Not rs.EOF
If Hour(rs!DTime) = Hours1 Then
Sheet1.Cells(Hours1 + 6, 2) = rs!Data2