📄 daypowergraph.asp
字号:
<%
'**********以下数据由绘图程序动态确定***********************
'横纵坐标点数
Const xNum = 48
Const yNum = 10
'横纵坐标间距
Const xWidth = 12
Const yWidth = 20
'横,纵坐标单位
Const xUnit = "小时"
Const yUnit = "KW"
'横坐标最大值最小值
xMin = 0
xMax = 23
'坐标周围所留空白用以显示字符串
Const xLeft = 40
Const xRight = 60
Const yTop = 40
Const yButtom = 100
'定义三个坐标数组
Dim yArray1(48),yArray2(48),yArray3(48)
'定义用于显示的标题
Dim strTitle
'定义用于显示曲线标题的字符串
Dim strDate1,strDate2,strDate3
'定义纵坐标最大最小值
Dim yMax,yMin
'定义每一条曲线最大最小平均值
Dim max1,max2,max3,min1,min2,min3,avg1,avg2,avg3
'定义纵轴刻度单位
Dim yIncrement
'定义一些临时变量以供使用
Dim i,j,strTemp
%>
<!-- #include file="cnOpen.asp" -->
<%
'*****数据库查询及输出字符串定义部分***********************
Dim rsTerm,rsData
Dim strSQL
Set rsTerm = Server.CreateObject("ADODB.RecordSet")
Set rsData = Server.CreateObject("ADODB.RecordSet")
If Session("Type") = "Term" Then
strSQL = "SELECT TermNo FROM TermTable WHERE TermName='"&Session("Name")&"'"
ElseIf Session("Type") = "Buss" Then
strSQL = "SELECT TermNo FROM TermTable WHERE BussName='"&Session("Name")&"'"
ElseIf Session("Type") = "Line" Then
strSQL = "SELECT TermNo FROM TermTable WHERE LineName='"&Session("Name")&"'"
ElseIf Session("Type") = "All" Then
strSQL = "SELECT TermNo FROM TermTable"
End If
rsTerm.Open strSQL,cn
Do While Not rsTerm.Eof
'取第一日数据
rsData.Open "SELECT * FROM DayDataTable WHERE TermNo="&rsTerm(0)&_
" AND DataYear="&Session("dYear1")&" AND DataMonth="&_
Session("dMonth1")&" AND DataDay="&Session("dDay1"),cn
If Not rsData.Eof Then
For i = 1 to 48
strField = "Data"&Cstr(i)
If Not IsNull(rsData(strField)) Then
yArray1(i) = yArray1(i)+rsData(strField)
End if
Next
End if
rsData.Close
'取第二日数据
rsData.Open "SELECT * FROM DayDataTable WHERE TermNo="&rsTerm(0)&_
" AND DataYear="&Session("dYear2")&" AND DataMonth="&_
Session("dMonth2")&" AND DataDay="&Session("dDay2"),cn
If Not rsData.eof Then
For i = 1 to 48
strField = "Data"&Cstr(i)
If Not IsNull(rsData(strField)) Then
yArray2(i) = yArray2(i)+rsData(strField)
End if
Next
End if
rsData.Close
'取第三日数据
rsData.Open "SELECT * FROM DayDataTable WHERE TermNo="&rsTerm(0)&_
" AND DataYear="&Session("dYear3")&" AND DataMonth="&_
Session("dMonth3")&" AND DataDay="&Session("dDay3"),cn
If Not rsData.eof Then
For i = 1 to 48
strField = "Data"&Cstr(i)
If Not IsNull(rsData(strField)) Then
yArray3(i) = yArray3(i)+rsData(strField)
End if
Next
End if
rsData.close
rsTerm.MoveNext
Loop
rsTerm.Close
Set rsTerm = Nothing
Set rsData = Nothing
yMax=yArray1(1)
yMin=yArray1(1)
max1=yArray1(1)
min1=yArray1(1)
max2=yArray2(1)
min2=yArray2(1)
max3=yArray3(1)
min3=yArray3(1)
For i = 1 To 48
If yMin > yArray1(i) Then yMin = yArray1(i)
If yMax < yArray1(i) Then yMax = yArray1(i)
If min1 > yArray1(i) Then min1 = yArray1(i)
If max1 < yArray1(i) Then max1 = yArray1(i)
avg1 = avg1 + yArray1(i)
If yMin > yArray2(i) Then yMin = yArray2(i)
If yMax < yArray2(i) Then yMax = yArray2(i)
If min2 > yArray2(i) Then min2 = yArray2(i)
If max2 < yArray2(i) Then max2 = yArray2(i)
avg2 = avg2 + yArray1(i)
If yMin > yArray3(i) Then yMin = yArray3(i)
If yMax < yArray3(i) Then yMax = yArray3(i)
If min3 > yArray3(i) Then min3 = yArray3(i)
If max3 < yArray3(i) Then max3 = yArray3(i)
avg3 = avg3 + yArray3(i)
Next
avg1 = avg1\48
avg2 = avg2\48
avg3 = avg3\48
strDate1=Session("dMonth1")&"-"&Session("dDay1")
strDate2=Session("dMonth2")&"-"&Session("dDay2")
strDate3=Session("dMonth3")&"-"&Session("dDay3")
%>
<% '*****数据库查询及参数数组设置工作完成,进行画图工作*******
Dim img
Set img = Server.CreateObject("myImage.Image")
img.width = xLeft+xRight+xNum*xWidth '图形总宽=x轴总长+左部空白+右部空白
img.height = yTop+yNum*yWidth+yButtom '图形总高=y轴总长+上部空白+下部空白
img.Clear img.RGB(255,255,255) '设置图形颜色为白色
'设定画笔颜色
img.PenColor = img.clBlack
'建立Y轴
img.Line xLeft,yTop-20,xLeft,yTop+yNum*yWidth
'Y轴小箭头
img.Line xLeft-0.5,yTop-20,xleft-5.5,yTop-10
img.Line xLeft+0.5,yTop-20,xleft+5.5,yTop-10
'建立X轴
img.Line xLeft,yTop+yNum*yWidth,xLeft+xWidth*xNum+20,yTop+yNum*yWidth
'X轴小箭头
img.Line xLeft+xWidth*xNum+20,yTop+yNum*yWidth-0.5,xLeft+xWidth*xNum+10,_
yTop+yNum*yWidth-5.5
img.Line xLeft+xWidth*xNum+20,yTop+yNum*yWidth+0.5,xLeft+xWidth*xNum+10,_
yTop+yNum*yWidth+5.5
'间隔为yWidth在横向上画yNum条直线
For i = yTop To yTop+yNum*yWidth Step yWidth
img.Line xLeft,i,xLeft+xWidth*xNum,i
Next
'间隔为xWidth在纵向上画xNum条直线
For i = xLeft To xLeft+xNum*xWidth Step xWidth
img.Line i,yTop,i,yTop+yNum*yWidth
Next
'定义字体大小
img.FontSize = 8
img.FontColor = img.clBlack
'写入横坐标刻度
For i = xMin To xMax
If i < 10 Then
strTemp = "0"&i
Else
strTemp = i
End If
img.TextOut i*xWidth*2+XLeft-6,yTop+yNum*yWidth+5,strTemp
Next
'写入横坐标单位
img.TextOut xLeft+xWidth*xNum+2,yTop+yNum*yWidth-20,"单位:"&xUnit
'写入纵坐标刻度
yIncrement = (yMax*1.1-yMin*0.9)/yNum
for i=yTop+yWidth*yNum-6 to yTop-6 step -yWidth
strTemp = Clng(yMax*1.1-((i+6)-yTop)/yWidth*yIncrement)
img.DrawText 1,i,xLeft-10,i+15,strTemp,img.daRight
next
'防止零除
If yIncrement = 0 Then yIncrement = 1
'写入纵坐标单位
img.TextOut 1,1,"单位:"&yUnit
'定义三个曲线的说明字段
strDate1 = Session("dMonth1")&"-"&Session("dDay1")
strDate2 = Session("dMonth2")&"-"&Session("dDay2")
strDate3 = Session("dMonth3")&"-"&Session("dDay3")
'输出时间标志字符串
img.FontSize = 8
img.FontColor = img.clRed
img.TextOut xLeft+xNum*xWidth+4,yTop+10,strDate1
img.FontColor = img.clBlue
img.TextOut xLeft+xNum*xWidth+4,yTop+40,strDate2
img.FontColor = img.clGreen
img.TextOut xLeft+xNum*xWidth+4,yTop+70,strDate3
'输出图片标题
strTitle = Session("name")&"日48点数据曲线图"
img.FontColor = img.clBlack
img.FontSize = 12
img.DrawText xLeft,10,xLeft+xWidth*xNum,30,strTitle,img.daCenter
'设置第一条数据线为红色并输出
img.ClearPoint
For i = 1 To xNum
img.SetPoint xLeft+(i-1)*xWidth,_
yTop+yNum*yWidth-(yArray1(i)-yMin*0.9)*yWidth/yIncrement
Next
img.PenColor=img.clRed
img.PolyLine
'设置第二条数据线为蓝色并输出
img.ClearPoint
For i = 1 To xNum
img.SetPoint xLeft+(i-1)*xWidth,_
yTop+yNum*yWidth-(yArray2(i)-yMin*0.9)*yWidth/yIncrement
Next
img.PenColor = img.clBlue
img.PolyLine
'设置第三条数据线为绿色并输出
img.ClearPoint
For i = 1 To xNum
img.SetPoint xLeft+(i-1)*xWidth,_
yTop+yNum*yWidth-(yArray3(i)-yMin*0.9)*yWidth/yIncrement
Next
img.PenColor = img.clGreen
img.PolyLine
'*********************绘制分析结果表格*********************************
img.PenColor = img.clBlack
'横向四条曲线
img.Line xLeft,yTop+yWidth*yNum+30,xLeft+xWidth*xNum,yTop+yWidth*yNum+30
img.Line xLeft,yTop+yWidth*yNum+50,xLeft+xWidth*xNum,yTop+yWidth*yNum+50
img.Line xLeft,yTop+yWidth*yNum+70,xLeft+xWidth*xNum,yTop+yWidth*yNum+70
img.Line xLeft,yTop+yWidth*yNum+90,xLeft+xWidth*xNum,yTop+yWidth*yNum+90
'纵向两条曲线,位置分别在x轴三分之一长度初与三分之二长度处
img.Line xLeft+xWidth*xNum/3,yTop+yWidth*yNum+30,xLeft+xWidth*xNum/3,yTop+yWidth*yNum+90
img.Line xLeft+xWidth*xNum*2/3,yTop+yWidth*yNum+30,xLeft+xWidth*xNum*2/3,yTop+yWidth*yNum+90
'输出9个分析结果
img.FontSize = 10
img.FontColor = img.clRed
img.TextOut xLeft+1,yTop+yWidth*yNum+31,"最大值:"&max1
img.TextOut xLeft+xWidth*xNum/3+1,yTop+yWidth*yNum+31,"最小值:"&min1
img.TextOut xLeft+xWidth*xNum*2/3+1,yTop+yWidth*yNum+31,"平均值:"&avg1
img.FontColor = img.clBlue
img.TextOut xLeft+1,yTop+yWidth*yNum+51,"最大值:"&max2
img.TextOut xLeft+xWidth*xNum/3+1,yTop+yWidth*yNum+51,"最小值:"&min2
img.TextOut xLeft+xWidth*xNum*2/3+1,yTop+yWidth*yNum+51,"平均值:"&avg2
img.FontColor = img.clGreen
img.TextOut xLeft+1,yTop+yWidth*yNum+71,"最大值:"&max3
img.TextOut xLeft+xWidth*xNum/3+1,yTop+yWidth*yNum+71,"最小值:"&min3
img.TextOut xLeft+xWidth*xNum*2/3+1,yTop+yWidth*yNum+71,"平均值:"&avg3
img.JPEGQuality = 100
Response.BinaryWrite img.JPEGImage
Set img = Nothing
%><!-- #include file="cnClose.asp" -->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -