initial commit

This commit is contained in:
Chikyun
2019-10-24 21:24:21 +09:00
commit 376f7d9de0
544 changed files with 295019 additions and 0 deletions

View File

@@ -0,0 +1,974 @@
Public Class Report_pyonga
#Region "data Base 변경여부및 적용방법"
'''변경된내용을적용한다.
Public Overrides Function AcceptChanged() As Boolean
Return True
End Function
'''변경된내용이있다면 취소한다.
Public Overrides Function RejectChanged() As Boolean
Return True
End Function
'''데이터에변형이있었는가?
Public Overrides Function HasChanged() As Boolean
Return False
End Function
#End Region
Private Sub Frm_v20091231_Result_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.DSR.TReqUse.Merge(DSETR1.TReqUse)
Me.DS.tbl_Desc.Merge(DSET1.tbl_Desc)
MakeGraphTable()
항목별평가결과()
'//주거용건축물?
Dim 건축물데이터 As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0)
Dim 주거용 As Integer = CInt(건축물데이터.isjugo)
Dim param As New Microsoft.Reporting.WinForms.ReportParameter("PTitle", Me.DS.tbl_Desc.Rows(0)("buildname").ToString())
Dim param2 As New Microsoft.Reporting.WinForms.ReportParameter("PGrade", 평가결과등급(주거용, 일차에너지소요량합계))
Dim param3 As New Microsoft.Reporting.WinForms.ReportParameter("PNewUse", Me.신재생에너지)
Dim param4 As New Microsoft.Reporting.WinForms.ReportParameter("PP2CO2SUM", Me.단위면적당CO2배출량합계)
Dim param5 As New Microsoft.Reporting.WinForms.ReportParameter("PCompany", DSET1.tbl_Desc.Rows(0)("인증기관").ToString())
Dim param11 As Microsoft.Reporting.WinForms.ReportParameter
Dim param12 As Microsoft.Reporting.WinForms.ReportParameter
Dim param13 As Microsoft.Reporting.WinForms.ReportParameter
Dim param14 As Microsoft.Reporting.WinForms.ReportParameter
Dim param15 As Microsoft.Reporting.WinForms.ReportParameter
Dim param16 As Microsoft.Reporting.WinForms.ReportParameter
Dim param17 As Microsoft.Reporting.WinForms.ReportParameter
Dim param18 As Microsoft.Reporting.WinForms.ReportParameter
Dim param19 As Microsoft.Reporting.WinForms.ReportParameter
Dim param20 As Microsoft.Reporting.WinForms.ReportParameter
'//평가범위(주거용/비
If 주거용 <= 10 Then
param11 = New Microsoft.Reporting.WinForms.ReportParameter("PG1", "60미만")
param12 = New Microsoft.Reporting.WinForms.ReportParameter("PG2", "60이상 90미만")
param13 = New Microsoft.Reporting.WinForms.ReportParameter("PG3", "90이상 120미만")
param14 = New Microsoft.Reporting.WinForms.ReportParameter("PG4", "120이상 150미만")
param15 = New Microsoft.Reporting.WinForms.ReportParameter("PG5", "150이상 190미만")
param16 = New Microsoft.Reporting.WinForms.ReportParameter("PG6", "190이상 230미만")
param17 = New Microsoft.Reporting.WinForms.ReportParameter("PG7", "230이상 270미만")
param18 = New Microsoft.Reporting.WinForms.ReportParameter("PG8", "270이상 320미만")
param19 = New Microsoft.Reporting.WinForms.ReportParameter("PG9", "320이상 370미만")
param20 = New Microsoft.Reporting.WinForms.ReportParameter("PG10", "370이상 420미만")
Else
param11 = New Microsoft.Reporting.WinForms.ReportParameter("PG1", "80미만")
param12 = New Microsoft.Reporting.WinForms.ReportParameter("PG2", "80이상 140미만")
param13 = New Microsoft.Reporting.WinForms.ReportParameter("PG3", "140이상 200미만")
param14 = New Microsoft.Reporting.WinForms.ReportParameter("PG4", "200이상 260미만")
param15 = New Microsoft.Reporting.WinForms.ReportParameter("PG5", "260이상 320미만")
param16 = New Microsoft.Reporting.WinForms.ReportParameter("PG6", "320이상 380미만")
param17 = New Microsoft.Reporting.WinForms.ReportParameter("PG7", "380이상 450미만")
param18 = New Microsoft.Reporting.WinForms.ReportParameter("PG8", "450이상 520미만")
param19 = New Microsoft.Reporting.WinForms.ReportParameter("PG9", "520이상 610미만")
param20 = New Microsoft.Reporting.WinForms.ReportParameter("PG10", "610이상 700미만")
End If
Dim params As New Microsoft.Reporting.WinForms.ReportParameterCollection()
params.Add(param)
params.Add(param2)
params.Add(param3)
params.Add(param4)
params.Add(param5)
params.Add(param11)
params.Add(param12)
params.Add(param13)
params.Add(param14)
params.Add(param15)
params.Add(param16)
params.Add(param17)
params.Add(param18)
params.Add(param19)
params.Add(param20)
Me.ReportViewer1.LocalReport.SetParameters(params)
Me.ReportViewer1.ZoomMode = Microsoft.Reporting.WinForms.ZoomMode.Percent
Me.ReportViewer1.ZoomPercent = 100
Me.ReportViewer1.RefreshReport()
End Sub
'//항목별평가결과
Private Sub 항목별평가결과()
Dim NDr As DSR.Pyonga_YKRow = DSR.Pyonga_YK.NewPyonga_YKRow
'//기준(*)데이터가없는경우에는 1번째데이터를 쓰도록한다.
Dim 외벽벽체찾음 As Boolean = False
Dim 외벽지붕찾음 As Boolean = False
Dim 외벽바닥찾음 As Boolean = False
For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'")
Dim gcode As String = dr.면형태.ToString()
Dim gname As String = Get_CName("1088", gcode)
If gname = "외벽(벽체)" Then
If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기
NDr.벽체값 = dr.열관류율
Dim 최대저항값 As Decimal = 0
'//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다
For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'")
If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다.
외벽벽체찾음 = True
NDr.벽체종류 = ddr.설명 + Space(1) + ddr.두께 + "mm"
최대저항값 = CDec(ddr.열저항)
End If
Next
End If
ElseIf gname = "외벽(지붕)" Then
If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기
NDr.지붕값 = dr.열관류율
Dim 최대저항값 As Decimal = 0
'//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다
For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'")
If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다.
외벽지붕찾음 = True
NDr.지붕종류 = ddr.설명 + Space(1) + ddr.두께 + "mm"
최대저항값 = CDec(ddr.열저항)
End If
Next
End If
ElseIf gname = "외벽(바닥)" Then
If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기
NDr.바닥값 = dr.열관류율
Dim 최대저항값 As Decimal = 0
'//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다
For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'")
If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다.
외벽바닥찾음 = True
NDr.바닥종류 = ddr.설명 + Space(1) + ddr.두께 + "mm"
최대저항값 = CDec(ddr.열저항)
End If
Next
End If
End If
Next
If Not 외벽벽체찾음 Then
For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'")
Dim gcode As String = dr.면형태.ToString()
Dim gname As String = Get_CName("1088", gcode)
If gname = "외벽(벽체)" Then
NDr.벽체값 = dr.열관류율
Dim 최대저항값 As Decimal = 0
'//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다
For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'")
If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다.
외벽벽체찾음 = True
NDr.벽체종류 = ddr.설명 + Space(1) + ddr.두께 + "mm"
최대저항값 = CDec(ddr.열저항)
End If
Next
If 외벽벽체찾음 Then Exit For
End If
Next
If Not 외벽벽체찾음 Then
NDr.벽체종류 = ""
NDr.벽체값 = 0
End If
End If
If Not 외벽지붕찾음 Then
For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'")
Dim gcode As String = dr.면형태.ToString()
Dim gname As String = Get_CName("1088", gcode)
If gname = "외벽(지붕)" Then
NDr.지붕값 = dr.열관류율
Dim 최대저항값 As Decimal = 0
'//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다
For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'")
If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다.
외벽지붕찾음 = True
NDr.지붕종류 = ddr.설명 + Space(1) + ddr.두께 + "mm"
최대저항값 = CDec(ddr.열저항)
End If
Next
If 외벽지붕찾음 Then Exit For
End If
Next
If Not 외벽지붕찾음 Then
NDr.지붕종류 = ""
NDr.지붕값 = 0
End If
End If
If Not 외벽바닥찾음 Then
For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'")
Dim gcode As String = dr.면형태.ToString()
Dim gname As String = Get_CName("1088", gcode)
If gname = "외벽(바닥)" Then
NDr.바닥값 = dr.열관류율
Dim 최대저항값 As Decimal = 0
'//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다
For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'")
If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다.
외벽바닥찾음 = True
NDr.바닥종류 = ddr.설명 + Space(1) + ddr.두께 + "mm"
최대저항값 = CDec(ddr.열저항)
End If
Next
If 외벽바닥찾음 Then Exit For
End If
Next
If Not 외벽바닥찾음 Then
NDr.바닥종류 = ""
NDr.바닥값 = 0
End If
End If
'//지열설비정보확인
Dim Sum_지열히트펌프용량_난방 As Single = 0
Dim Sum_지열히트펌프용량_냉방 As Single = 0
Dim Max_난방 As Single = 0
Dim Max_냉방 As Single = 0
Dim JDROW() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='지열'", "설명")
If JDROW.GetUpperBound(0) = -1 Then '//지열데이터가없는경우엔 빈값처리
NDr.지열히트펌프용량냉방 = ""
NDr.지열히트펌프용량 = ""
NDr.지열비고 = ""
NDr.지열난방COP = ""
NDr.지열냉방COP = ""
Else '//데이터가있다면 1번째 데이터를 이용한다.
Dim Max_Row_난방 As DS.tbl_newRow = Nothing
Dim MAx_Row_냉방 As DS.tbl_newRow = Nothing
NDr.지열비고 = JDROW(0).지열비고
For Each jdrowrow As DS.tbl_newRow In JDROW
Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & jdrowrow.code.ToString & "'").GetUpperBound(0) + 1)
Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & jdrowrow.code.ToString & "'").GetUpperBound(0) + 1)
Dim 난방값 As String = jdrowrow.열성능비난방
Dim 냉방값 As String = jdrowrow.열성능비냉방
If 난방연결수 > 0 AndAlso 난방값 <> "" AndAlso IsNumeric(난방값) AndAlso 난방값 <> "0" Then
Sum_지열히트펌프용량_난방 += jdrowrow.지열히트펌프용량
If TOSG(jdrowrow.지열히트펌프용량) > Max_난방 Then
Max_난방 = TOSG(jdrowrow.지열히트펌프용량)
Max_Row_난방 = jdrowrow
End If
End If
If 냉방연결수 > 0 AndAlso 냉방값 <> "" AndAlso IsNumeric(냉방값) AndAlso 냉방값 <> "0" Then
Sum_지열히트펌프용량_냉방 += jdrowrow.지열히트펌프용량
If TOSG(jdrowrow.지열히트펌프용량) > Max_냉방 Then
Max_냉방 = TOSG(jdrowrow.지열히트펌프용량)
MAx_Row_냉방 = jdrowrow
End If
End If
Next
NDr.지열히트펌프용량냉방 = Sum_지열히트펌프용량_냉방.ToString() + "(" + Max_냉방.ToString() + ")"
If Sum_지열히트펌프용량_난방 > 0 Then
NDr.지열히트펌프용량 = "난방: " + Sum_지열히트펌프용량_난방.ToString() + "(" + Max_난방.ToString() + ")"
Else
NDr.지열히트펌프용량 = ""
End If
If Sum_지열히트펌프용량_냉방 > 0 Then
NDr.지열히트펌프용량 += " / 냉방: " + NDr.지열히트펌프용량냉방
End If
If Max_난방 <> 0 Then
NDr.지열난방COP = Max_Row_난방.열성능비난방
Else
NDr.지열난방COP = ""
End If
If Max_냉방 <> 0 Then
NDr.지열냉방COP = MAx_Row_냉방.열성능비냉방
Else
NDr.지열냉방COP = ""
End If
End If
'//######################
'//13-12-08
'//######################
'//태양열시스템
Dim JDROW2() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='태양열'", "설명")
Dim Max_태양열면적 As Single = -999
Dim Max_집열기유형 As String = ""
Dim Max_집열판방위 As String = ""
Dim Sum_태양열면적 As Single = 0
For Each rowsun As DS.tbl_newRow In JDROW2
Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1)
Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1)
If 난방연결수 > 0 OrElse 냉방연결수 > 0 Then
Dim 태양면적 As String = rowsun.집열판면적
If 태양면적 <> "" AndAlso IsNumeric(태양면적) AndAlso 태양면적 <> "0" Then
Sum_태양열면적 += TOSG(태양면적)
If TOSG(태양면적) > Max_태양열면적 Then
Max_태양열면적 = TOSG(태양면적)
Max_집열기유형 = rowsun.집열기유형
Max_집열판방위 = rowsun.집열판방위
End If
End If
End If
Next
If Sum_태양열면적 > 0 Then
NDr.태양열집열판면적 = Sum_태양열면적.ToString() + "(" + Max_태양열면적.ToString + ")"
NDr.태양열집열기유형 = Max_집열기유형
NDr.태양열집열판방위 = Max_집열판방위
Else
NDr.태양열집열판면적 = ""
NDr.태양열집열기유형 = ""
NDr.태양열집열판방위 = ""
End If
'//태양광시스템
Dim JDROW3() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='태양광'", "설명")
Dim Max_태양광면적 As Single = -999
Dim Max_태양광종류 As String = ""
Dim Max_태양광방위 As String = ""
Dim Max_태양광기울기 As String = ""
Dim Max_태양광적용타입 As String = ""
Dim Sum_태양광면적 As Single = 0
For Each rowsun As DS.tbl_newRow In JDROW3
Dim 태양면적 As String = rowsun.태양광모듈면적
If 태양면적 <> "" AndAlso IsNumeric(태양면적) AndAlso 태양면적 <> "0" Then
Sum_태양광면적 += TOSG(태양면적)
If TOSG(태양면적) > Max_태양광면적 Then
Max_태양광면적 = TOSG(태양면적)
Max_태양광종류 = rowsun.태양광모듈종류
Max_태양광방위 = rowsun.태양광모듈방위
Max_태양광기울기 = rowsun.태양광모듈기울기
Max_태양광적용타입 = rowsun.태양광모듈적용타입
End If
End If
Next
If Sum_태양광면적 > 0 Then
NDr.태양광모듈면적 = Sum_태양광면적.ToString() + "(" + Max_태양광면적.ToString + ")"
NDr.태양광모듈종류 = Max_태양광종류
NDr.태양광모듈방위 = Max_태양광방위
NDr.태양광모듈기울기 = Max_태양광기울기
NDr.태양광모듈적용타입 = Max_태양광적용타입
If NDr.태양광모듈방위 = "(없음)" Then
NDr.태양광모듈방위 = ""
End If
Else
NDr.태양광모듈면적 = ""
NDr.태양광모듈종류 = ""
NDr.태양광모듈방위 = ""
NDr.태양광모듈기울기 = ""
NDr.태양광모듈적용타입 = ""
End If
'//열병합시스템
Dim JDROW4() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='열병합'", "설명")
Dim Max_열병합능력 As Single = -999
Dim Max_열병합생산효율 As String = ""
Dim Max_열병합발전효율 As String = ""
Dim Max_열병합가동연료 As String = ""
Dim Sum_열병합능력 As Single = 0
For Each rowsun As DS.tbl_newRow In JDROW4
Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1)
Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1)
If 난방연결수 > 0 OrElse 냉방연결수 > 0 Then
Dim As String = rowsun.열생산능력
If <> "" AndAlso IsNumeric() AndAlso <> "0" Then
Sum_열병합능력 += TOSG()
If TOSG() > Max_열병합능력 Then
Max_열병합능력 = TOSG()
Max_열병합생산효율 = rowsun.열생산효율.ToString
Max_열병합발전효율 = rowsun.발전효율.ToString
Max_열병합가동연료 = rowsun.가동연료
End If
End If
End If
Next
If Sum_열병합능력 > 0 Then
NDr.열병합열생산능력 = Sum_열병합능력.ToString() + "(" + Max_열병합능력.ToString + ")"
NDr.열병합열생산효율 = Max_열병합생산효율
NDr.열병합발전효율 = Max_열병합발전효율
NDr.열병합가동연료 = Max_열병합가동연료
Else
NDr.열병합열생산능력 = ""
NDr.열병합열생산효율 = ""
NDr.열병합발전효율 = ""
NDr.열병합가동연료 = ""
End If
'//창호종류 및 창호값확인
Dim 창호종류찾음 As Boolean = False
For Each cdr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'")
Dim 면코드 As String = cdr.면형태
If 면코드 = "" Then Continue For
Dim 면이름 As String = Get_CName("1088", 면코드)
If 면이름 = "" Then Continue For
If 면이름.IndexOf("외부창") <> -1 Then '//이름에 외부창이잇는것을 찾음
NDr.창호종류 = cdr.창호세부설명
NDr.창호값 = cdr.열관류율
Exit For
End If
Next
'//조명설비값(모든존 ; sum(면적*조명에너지부하율) / sum(면적)
Dim 존면적합 As Decimal = 0
Dim 존면적부하율 As Decimal = 0
For Each drz As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'")
If drz.조명부하산출방법 = "계산치" Then
존면적합 += TOSG(drz.면적)
존면적부하율 += TOSG(drz.면적) * TOSG(drz.조명에너지부하율계산치)
ElseIf drz.조명부하산출방법 = "입력치" Then
존면적합 += TOSG(drz.면적)
존면적부하율 += TOSG(drz.면적) * TOSG(drz.조명에너지부하율입력치)
End If
Next
If 존면적합 <> 0 Then
NDr.주거실조명전력 = Math.Round(존면적부하율 / 존면적합, 2)
End If
'//주조명광원값()
NDr.주조명광원 = DSET1.tbl_Desc.Rows(0)("주조명").ToString
'///#################################################################################
'///#################################################################################
'//설비방식및사용연료
'//난방(입력존에서 가장많이 사용한놈)
Dim fndr As DS.tbl_nanbangkikiRow = Nothing
Dim fndrcnt As Integer = 0
Dim sum_보일러 As Single = 0
Dim sum_히트펌프 As Single = 0
Dim sum_지역난방 As Single = 0
Dim sum_전기보일러 As Single = 0
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0'")
Dim cnt As Integer = 0
Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산난방생산기기='" & dr.code & "' or 공조난방생산기기='" & dr.code & "'")
'//131207
If zDR.Length > 0 Then
Select Case dr.열생산기기방식
Case "보일러"
sum_보일러 += TOSG(dr.보일러정격출력)
Case "히트펌프"
sum_히트펌프 += TOSG(dr.히트난방용량)
Case "지역난방"
sum_지역난방 += TOSG(dr.열교환기정격출력)
Case "전기보일러"
sum_전기보일러 += TOSG(dr.보일러정격출력)
End Select
End If
Next
'//합이 가장 큰 그룹을 검색
Dim maxvalue As Single = 0
' Dim maxindex As Integer = 0
maxvalue = Math.Max(sum_보일러, sum_히트펌프)
maxvalue = Math.Max(maxvalue, sum_지역난방)
maxvalue = Math.Max(maxvalue, sum_전기보일러)
Dim searchfilter As String = ""
If maxvalue = 0 Then
searchfilter = ""
' maxindex = 0 '//없음
ElseIf maxvalue = sum_보일러 Then
' maxindex = 1
searchfilter = "열생산기기방식='보일러'"
ElseIf maxvalue = sum_히트펌프 Then
'maxindex = 2
searchfilter = "열생산기기방식='히트펌프'"
ElseIf maxvalue = sum_지역난방 Then
' maxindex = 3
searchfilter = "열생산기기방식='지역난방'"
ElseIf maxvalue = sum_전기보일러 Then
' maxindex = 4
searchfilter = "열생산기기방식='전기보일러'"
End If
'//가장큰 그룹내의 개별 대표값 찾기
If searchfilter <> "" Then
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and " + searchfilter)
Dim cnt As Integer = 0
Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산난방생산기기='" & dr.code & "' or 공조난방생산기기='" & dr.code & "'")
'///
For Each drow As DS.tbl_zoneRow In zDR
Dim 입력존수문자 As Integer = drow.입력존의수
If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1"
cnt += CInt(입력존수문자)
Next
If cnt > fndrcnt Then '//최대값찾기
fndr = dr
fndrcnt = cnt
End If
If Not fndr Is Nothing Then
NDr.온열원설비방식 = fndr.열생산기기방식
Select Case fndr.열생산기기방식
Case "보일러"
NDr.온열원설비연료 = fndr.사용연료
If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then
NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")"
Else
NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")"
End If
NDr.온열원효율 = fndr.정격보일러효율 + "%"
Case "히트펌프"
NDr.온열원설비연료 = fndr.히트연료
If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then
NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")"
Else
NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")"
End If
NDr.온열원효율 = fndr.히트난방정격7
Case "지역난방"
NDr.온열원설비연료 = "지역난방" 'fndr.사용연료
If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then
NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")"
Else
NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")"
End If
NDr.온열원효율 = fndr.정격보일러효율 + "%"
Case "전기보일러"
NDr.온열원설비연료 = "전기" ' fndr.사용연료
If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then
NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")"
Else
NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")"
End If
NDr.온열원효율 = fndr.정격보일러효율 + "%"
End Select
End If
Next
Else
NDr.온열원설비연료 = ""
NDr.온열원용량 = ""
NDr.온열원효율 = ""
End If
'///#################################################################################
'///#################################################################################
'//급탕(입력존에서 가장많이 사용한놈)
fndr = Nothing
fndrcnt = 0
sum_보일러 = 0
sum_히트펌프 = 0
sum_지역난방 = 0
sum_전기보일러 = 0
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0'")
Dim cnt As Integer = 0
Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산급탕생산기기='" & dr.code & "'")
'//131207
If zDR.Length > 0 Then
Select Case dr.열생산기기방식
Case "보일러"
sum_보일러 += TOSG(dr.보일러정격출력)
Case "히트펌프"
sum_히트펌프 += TOSG(dr.히트난방용량)
Case "지역난방"
sum_지역난방 += TOSG(dr.열교환기정격출력)
Case "전기보일러"
sum_전기보일러 += TOSG(dr.보일러정격출력)
End Select
End If
Next
'//합이 가장 큰 그룹을 검색
maxvalue = 0
maxvalue = Math.Max(sum_보일러, sum_히트펌프)
maxvalue = Math.Max(maxvalue, sum_지역난방)
maxvalue = Math.Max(maxvalue, sum_전기보일러)
searchfilter = ""
If maxvalue = 0 Then
searchfilter = ""
ElseIf maxvalue = sum_보일러 Then
searchfilter = "열생산기기방식='보일러'"
ElseIf maxvalue = sum_히트펌프 Then
searchfilter = "열생산기기방식='히트펌프'"
ElseIf maxvalue = sum_지역난방 Then
searchfilter = "열생산기기방식='지역난방'"
ElseIf maxvalue = sum_전기보일러 Then
searchfilter = "열생산기기방식='전기보일러'"
End If
'//가장큰 그룹내의 개별 대표값 찾기
NDr.급탕설비방식 = ""
NDr.급탕설비연료 = ""
NDr.급탕용량 = ""
NDr.급탕효율 = ""
If searchfilter <> "" Then
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and " + searchfilter)
Dim cnt As Integer = 0
Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산급탕생산기기='" & dr.code + "'")
For Each drow As DS.tbl_zoneRow In zDR
Dim 입력존수문자 As Integer = drow.입력존의수
If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1"
cnt += CInt(입력존수문자)
Next
If cnt > fndrcnt Then '//최대값찾기
fndr = dr
fndrcnt = cnt
End If
If Not fndr Is Nothing Then
NDr.급탕설비방식 = fndr.열생산기기방식
Select Case fndr.열생산기기방식
Case "보일러"
NDr.급탕설비연료 = fndr.사용연료
NDr.급탕용량 = maxvalue.ToString() + "(" + fndr.보일러정격출력 + ")"
NDr.급탕효율 = fndr.정격보일러효율 + "%"
Case "히트펌프"
NDr.급탕설비연료 = fndr.히트연료
NDr.급탕용량 = maxvalue.ToString() + "(" + fndr.히트난방용량 + ")"
NDr.급탕효율 = fndr.히트난방정격7
Case "지역난방"
NDr.급탕설비연료 = "지역난방" ' fndr.사용연료
NDr.급탕용량 = maxvalue.ToString() + "(" + fndr.열교환기정격출력 + ")"
NDr.급탕효율 = fndr.정격보일러효율 + "%"
Case "전기보일러"
NDr.급탕설비연료 = "전기" ' fndr.사용연료
NDr.급탕용량 = maxvalue.ToString() + "(" + fndr.보일러정격출력 + ")"
NDr.급탕효율 = fndr.정격보일러효율 + "%"
End Select
End If
Next
End If
'///#################################################################################
'///#################################################################################
'//냉방(입력존에서 가장많이 사용한놈)
Dim fndr2 As DS.tbl_nangbangkikiRow = Nothing
Dim fndr2cnt As Integer = 0
Dim sum_압축식 As Single = 0
Dim sum_압축식_LNG As Single = 0
Dim sum_지역냉방 As Single = 0
Dim sum_흡수식 As Single = 0
For Each dr As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0'")
Dim cnt2 As Integer = 0
Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("열생산냉방생산기기='" & dr.code & "' or 공조냉방생산기기='" & dr.code & "'")
'//131207
If zDR.Length > 0 Then
Select Case dr.냉동기방식
Case "압축식"
sum_압축식 += TOSG(dr.냉동기용량)
Case "압축식(LNG)"
sum_압축식_LNG += TOSG(dr.냉동기용량)
Case "지역냉방"
sum_지역냉방 += TOSG(dr.냉동기용량)
Case "흡수식"
sum_흡수식 += TOSG(dr.냉동기용량)
End Select
End If
Next
'//합이 가장 큰 그룹을 검색
maxvalue = 0
maxvalue = Math.Max(sum_압축식, sum_압축식_LNG)
maxvalue = Math.Max(maxvalue, sum_지역냉방)
maxvalue = Math.Max(maxvalue, sum_흡수식)
searchfilter = ""
If maxvalue = 0 Then
searchfilter = ""
ElseIf maxvalue = sum_압축식 Then
searchfilter = "냉동기방식='압축식'"
ElseIf maxvalue = sum_압축식_LNG Then
searchfilter = "냉동기방식='압축식(LNG)'"
ElseIf maxvalue = sum_지역냉방 Then
searchfilter = "냉동기방식='지역냉방'"
ElseIf maxvalue = sum_흡수식 Then
searchfilter = "냉동기방식='흡수식'"
End If
'//가장큰 그룹내의 개별 대표값 찾기
If searchfilter <> "" Then
For Each dr As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0' and " + searchfilter)
Dim cnt2 As Integer = 0
Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("열생산냉방생산기기='" & dr.code & "' or 공조냉방생산기기='" & dr.code & "'")
For Each drow As DS.tbl_zoneRow In zDR
Dim 입력존수문자 As Integer = drow.입력존의수
If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1"
cnt2 += CInt(입력존수문자)
Next
If cnt2 > fndr2cnt Then '//최대값찾기
fndr2 = dr
fndr2cnt = cnt2
End If
If Not fndr2 Is Nothing Then
NDr.냉열원설비방식 = fndr2.냉동기방식
NDr.냉열원용량 = maxvalue.ToString() + "(" + fndr2.냉동기용량 + ")"
NDr.냉열원효율 = fndr2.열성능비
Select Case fndr2.냉동기방식
Case "압축식"
NDr.냉열원설비연료 = "전기"
Case "압축식(LNG)"
NDr.냉열원설비연료 = "천연가스"
Case "지역냉방"
NDr.냉열원설비연료 = "지역냉방"
Case "흡수식"
If fndr2.열생산연결방식 = "직화식" Then
NDr.냉열원설비연료 = fndr2.사용연료
ElseIf fndr2.열생산연결방식 = "외부연결" Then
Dim 온수열생산기기코드 As String = fndr2.온수열생산기기
If 온수열생산기기코드 <> "" Then
Dim 난방기기() As DS.tbl_nanbangkikiRow = DSET1.tbl_nanbangkiki.Select("code='" + 온수열생산기기코드 + "'")
If 난방기기.GetUpperBound(0) = 0 Then
NDr.냉열원설비연료 = fndr2.사용연료
End If
End If
End If
End Select
End If
Next
Else
NDr.냉열원설비방식 = ""
NDr.냉열원용량 = ""
NDr.냉열원효율 = ""
End If
DSR.Pyonga_YK.Rows.Add(NDr)
DSR.Pyonga_YK.AcceptChanges()
End Sub
Private 일차에너지소요량합계 As Decimal = 0
Private Sub MakeGraphTable()
If DSR.TReqUse.Rows.Count < 1 Then Return '//요구&사용량이 계산된경우에만 사용한다.
'//1차에너지소요량값 구분별로기록한다.
Dim DrE1 As DSR.Pyonga_1USERow
DrE1 = Me.DSR.Pyonga_1USE.NewPyonga_1USERow
DrE1.종류 = "난방" : DrE1. = Result1.일차E소요량(0).난방면적
DSR.Pyonga_1USE.AddPyonga_1USERow(DrE1)
DrE1 = Me.DSR.Pyonga_1USE.NewPyonga_1USERow
DrE1.종류 = "냉방" : DrE1. = Result1.일차E소요량(0).냉방면적
DSR.Pyonga_1USE.AddPyonga_1USERow(DrE1)
DrE1 = Me.DSR.Pyonga_1USE.NewPyonga_1USERow
DrE1.종류 = "급탕" : DrE1. = Result1.일차E소요량(0).급탕면적
DSR.Pyonga_1USE.AddPyonga_1USERow(DrE1)
DrE1 = Me.DSR.Pyonga_1USE.NewPyonga_1USERow
DrE1.종류 = "조명" : DrE1. = Result1.일차E소요량(0).조명면적
DSR.Pyonga_1USE.AddPyonga_1USERow(DrE1)
DrE1 = Me.DSR.Pyonga_1USE.NewPyonga_1USERow
DrE1.종류 = "환기" : DrE1. = Result1.일차E소요량(0).환기면적
DSR.Pyonga_1USE.AddPyonga_1USERow(DrE1)
'//등급용-131021
Dim 난방에너지, 냉방에너지, 급탕에너지, 조명에너지, 환기에너지 As Single
If (Result1.사용면적.H_WF = 0) Then
난방에너지 = 0
Else
난방에너지 = Result1.일차E소요량(0).난방면적2 * Result1.사용면적.H / Result1.사용면적.H_WF
End If
If (Result1.사용면적.C_WF = 0) Then
냉방에너지 = 0
Else
냉방에너지 = TOSG(Result1.일차E소요량(0).냉방면적 * Result1.사용면적.C / Result1.사용면적.C_WF)
End If
If (Result1.사용면적.W_WF = 0) Then
급탕에너지 = 0
Else
급탕에너지 = Result1.일차E소요량(0).급탕면적2 * Result1.사용면적.W / Result1.사용면적.W_WF
End If
If (Result1.사용면적.L_WF = 0) Then
조명에너지 = 0
Else
조명에너지 = Result1.일차E소요량(0).조명면적 * Result1.사용면적.L / Result1.사용면적.L_WF
End If
If (Result1.사용면적.V_WF = 0) Then
환기에너지 = 0
Else
환기에너지 = Result1.일차E소요량(0).환기면적 * Result1.사용면적.V / Result1.사용면적.V_WF
End If
일차에너지소요량합계 = 냉방에너지 + 난방에너지 + 급탕에너지 + 조명에너지 + 환기에너지
'일차에너지소요량합계 = Result1.일차E소요량(0).난방면적 + Result1.일차E소요량(0).냉방면적 _
' + Result1.일차E소요량(0).급탕면적 + Result1.일차E소요량(0).조명면적 _
' + Result1.일차E소요량(0).환기면적
'//연간에너지소요량값 구분별로기록한다.
Dim DrU1 As DSR.Pyonga_USERow
DrU1 = Me.DSR.Pyonga_USE.NewPyonga_USERow
DrU1.종류 = "난방" : DrU1. = Result1.E소요량(0).난방면적
DSR.Pyonga_USE.AddPyonga_USERow(DrU1)
DrU1 = Me.DSR.Pyonga_USE.NewPyonga_USERow
DrU1.종류 = "냉방" : DrU1. = Result1.E소요량(0).냉방면적
DSR.Pyonga_USE.AddPyonga_USERow(DrU1)
DrU1 = Me.DSR.Pyonga_USE.NewPyonga_USERow
DrU1.종류 = "급탕" : DrU1. = Result1.E소요량(0).급탕면적
DSR.Pyonga_USE.AddPyonga_USERow(DrU1)
DrU1 = Me.DSR.Pyonga_USE.NewPyonga_USERow
DrU1.종류 = "조명" : DrU1. = Result1.E소요량(0).조명면적
DSR.Pyonga_USE.AddPyonga_USERow(DrU1)
DrU1 = Me.DSR.Pyonga_USE.NewPyonga_USERow
DrU1.종류 = "환기" : DrU1. = Result1.E소요량(0).환기면적
DSR.Pyonga_USE.AddPyonga_USERow(DrU1)
DrU1 = Me.DSR.Pyonga_USE.NewPyonga_USERow
DrU1.종류 = "신재생" : DrU1. = Me.신재생에너지
DSR.Pyonga_USE.AddPyonga_USERow(DrU1)
'//소요량 총합에는 신재생은 제거한다.
'//연간에너지요구량값 구분별로기록한다.
Dim DrR1 As DSR.Pyonga_REQRow
DrR1 = Me.DSR.Pyonga_REQ.NewPyonga_REQRow
DrR1.종류 = "난방" : DrR1. = Result1.E요구량(0).난방면적
DSR.Pyonga_REQ.AddPyonga_REQRow(DrR1)
DrR1 = Me.DSR.Pyonga_REQ.NewPyonga_REQRow
DrR1.종류 = "냉방" : DrR1. = Result1.E요구량(0).냉방면적
DSR.Pyonga_REQ.AddPyonga_REQRow(DrR1)
DrR1 = Me.DSR.Pyonga_REQ.NewPyonga_REQRow
DrR1.종류 = "급탕" : DrR1. = Result1.E요구량(0).급탕면적
DSR.Pyonga_REQ.AddPyonga_REQRow(DrR1)
DrR1 = Me.DSR.Pyonga_REQ.NewPyonga_REQRow
DrR1.종류 = "조명" : DrR1. = Result1.E요구량(0).조명면적
DSR.Pyonga_REQ.AddPyonga_REQRow(DrR1)
'//변경사항을저장
DSR.AcceptChanges()
End Sub
Function 단위면적당CO2배출량합계() As Decimal
Dim DR() As DSR.TReqUseRow = DSR.TReqUse.Select("GRP='400' and DESC='단위면적당 CO2 배출량'")
If DR.GetUpperBound(0) = -1 Then Return 0
Return DR(0).M00
End Function
Function 신재생에너지() As Decimal
Dim Sum As Decimal = (Result1.생산E(0).태양광전력생산량 + Result1.생산E(0).신재생열병합전력생산량) / (Result1.일차E소요량(0).난방전력 + Result1.일차E소요량(0).냉방전력 + Result1.일차E소요량(0).급탕전력 + Result1.일차E소요량(0).조명전력 + Result1.일차E소요량(0).환기전력)
Dim 난방 As Decimal = Sum * Result1.일차E소요량(0).난방전력 '//아마게산이안도잇으니 여기값들이 0이잇을거에요.
Dim 냉방 As Decimal = Sum * Result1.일차E소요량(0).냉방전력
Dim 조명 As Decimal = Sum * Result1.일차E소요량(0).조명전력
Dim 급탕 As Decimal = Sum * Result1.일차E소요량(0).급탕전력
Dim 환기 As Decimal = Sum * Result1.일차E소요량(0).환기전력
Dim 난방면적 As Decimal = 0
Dim 냉방면적 As Decimal = 0
Dim 조명면적 As Decimal = 0
Dim 급탕면적 As Decimal = 0
Dim 환기면적 As Decimal = 0
If Result1.사용면적.H <> 0 Then 난방면적 = TOSG(IIf(난방 = 0, 0, 난방 / Result1.사용면적.H))
If Result1.사용면적.C <> 0 Then 냉방면적 = TOSG(IIf(냉방 = 0, 0, 냉방 / Result1.사용면적.C))
If Result1.사용면적.L <> 0 Then 조명면적 = TOSG(IIf(조명 = 0, 0, 조명 / Result1.사용면적.L))
If Result1.사용면적.W <> 0 Then 급탕면적 = TOSG(IIf(급탕 = 0, 0, 급탕 / Result1.사용면적.W))
If Result1.사용면적.V <> 0 Then 환기면적 = TOSG(IIf(환기 = 0, 0, 환기 / Result1.사용면적.V))
Dim 면적 As Decimal = 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적
'=-SUM(계산결과!G108:G109)-계산결과!F42-계산결과!F48-계산결과!F51-계산결과!F56-계산결과!F59
'F42=IF($G$15=0,0,F38/$G$15)
'f38=(G104)/(SUM(H76:S76)+SUM(H85:S85)+SUM(H93:S93)+SUM(H97:S97)+SUM(H101:S101))*SUM(H76:S76)
'g15=난방면적
'f48=IF($G$20=0,0,F44/$G$20)
'f44=(G104)/(SUM(H76:S76)+SUM(H85:S85)+SUM(H93:S93)+SUM(H97:S97)+SUM(H101:S101))*SUM(H85:S85)
'g20=냉방면적
신재생에너지 = -1 * (Result1.생산E(0).면적당생산량태양열 + Result1.생산E(0).면적당생산량지열 + Result1.생산E(0).신재생면적당열생산량) - 면적
Return 신재생에너지
End Function
End Class