macro 기능 추가 중. 엑세 업로드 양식 추가 예정

This commit is contained in:
ykh
2023-07-23 00:58:28 +09:00
parent 3eed3c6cd4
commit 48e3fecfc9
13 changed files with 3571 additions and 1925 deletions

View File

@@ -1,6 +1,7 @@
Public Class Frm_Upload
Dim fn As String = ""
Dim silentmode As Boolean = False
Public Sub New()
' 이 호출은 디자이너에 필요합니다.
@@ -9,14 +10,45 @@
' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오.
End Sub
Public Sub New(_file As String)
Public Sub New(_file As String, Optional silent As Boolean = False)
' 이 호출은 디자이너에 필요합니다.
InitializeComponent()
fn = _file
silentmode = silent
' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오.
End Sub
Private Sub Frm_Upload_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' Me.Hide()
Application.DoEvents()
LoadFile()
MakeData()
If fn <> "" Then
Try
If FpSpread1.SaveExcel(fn) Then
If silentmode = False Then
MsgBox("다음파일이 생성되었습니다" + vbCrLf + fn, MsgBoxStyle.Information, "확인")
End If
DialogResult = Windows.Forms.DialogResult.OK
Else
MsgBox("저장실패" + vbCrLf + fn, MsgBoxStyle.Critical, "확인")
Me.Close()
End If
Catch ex As Exception
MsgBox("저장실패" + vbCrLf + fn + vbCrLf + ex.Message, MsgBoxStyle.Critical, "확인")
Me.Close()
End Try
End If
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
LoadFile()
MakeData()
@@ -177,7 +209,7 @@
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 합계.ToString() : Row += 1 '//환기
'//평가결과값(report_pyonga 에서 가져옴)
항목별평가결과(DsReport)
Pub.항목별평가결과(DsReport)
If DsReport.Pyonga_YK.Rows.Count < 1 Then
MsgBox("구조체값이 생성되지 않았습니다", MsgBoxStyle.Critical, "확인")
Return
@@ -195,7 +227,7 @@
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = drYK.창호값.ToString("N3") : Row += 1 '//환기
'//창면적비 9개(?)
Dim 창및문면적비, 외벽열관류율 As Decimal
Dim 창및문면적비, 외벽열관류율_평균 As Decimal
Dim 외벽열관류율_남 As Decimal
Dim 외벽열관류율_남동 As Decimal
Dim 외벽열관류율_동 As Decimal
@@ -205,27 +237,48 @@
Dim 외벽열관류율_서 As Decimal
Dim 외벽열관류율_남서 As Decimal
calc_창및문면적비(창및문면적비, 외벽열관류율)
Dim 열관류율_평균 As Decimal
Dim 창열관류율_남 As Decimal
Dim 창열관류율_남동 As Decimal
Dim 창열관류율_동 As Decimal
Dim 창열관류율_북동 As Decimal
Dim 창열관류율_북 As Decimal
Dim 창열관류율_북서 As Decimal
Dim 창열관류율_서 As Decimal
Dim 창열관류율_남서 As Decimal
Dim 일사에너지투과율_평균 As Decimal
Dim 일사에너지투과율_남 As Decimal
Dim 일사에너지투과율_남동 As Decimal
Dim 일사에너지투과율_동 As Decimal
Dim 일사에너지투과율_북동 As Decimal
Dim 일사에너지투과율_북 As Decimal
Dim 일사에너지투과율_북서 As Decimal
Dim 일사에너지투과율_서 As Decimal
Dim 일사에너지투과율_남서 As Decimal
calc_창및문면적비(창및문면적비, 외벽열관류율_평균, 창열관류율_평균, 일사에너지투과율_평균)
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//난방
calc_창및문면적비(창및문면적비, 외벽열관류율_남, "")
calc_창및문면적비(창및문면적비, 외벽열관류율_남, 창열관류율_남, 일사에너지투과율_남, "")
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//냉방
calc_창및문면적비(창및문면적비, 외벽열관류율_남동, "남동")
calc_창및문면적비(창및문면적비, 외벽열관류율_남동, 창열관류율_남동, 일사에너지투과율_남동, "남동")
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//급탕
calc_창및문면적비(창및문면적비, 외벽열관류율_동, "")
calc_창및문면적비(창및문면적비, 외벽열관류율_동, 창열관류율_동, 일사에너지투과율_동, "")
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//조명
calc_창및문면적비(창및문면적비, 외벽열관류율_북동, "북동")
calc_창및문면적비(창및문면적비, 외벽열관류율_북동, 창열관류율_북동, 일사에너지투과율_북동, "북동")
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기
calc_창및문면적비(창및문면적비, 외벽열관류율_북, "")
calc_창및문면적비(창및문면적비, 외벽열관류율_북, 창열관류율_북, 일사에너지투과율_북, "")
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기
calc_창및문면적비(창및문면적비, 외벽열관류율_북서, "북서")
calc_창및문면적비(창및문면적비, 외벽열관류율_북서, 창열관류율_북서, 일사에너지투과율_북서, "북서")
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기
calc_창및문면적비(창및문면적비, 외벽열관류율_서, "")
calc_창및문면적비(창및문면적비, 외벽열관류율_서, 창열관류율_서, 일사에너지투과율_서, "")
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기
calc_창및문면적비(창및문면적비, 외벽열관류율_남서, "남서")
calc_창및문면적비(창및문면적비, 외벽열관류율_남서, 창열관류율_남서, 일사에너지투과율_남서, "남서")
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기
'//평균열관류율 11개(?)
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율.ToString("N3") : Row += 1 '//난방
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율_평균.ToString("N3") : Row += 1 '//난방
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율_남.ToString("N3") : Row += 1 '//냉방
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율_남동.ToString("N3") : Row += 1 '//급탕
FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율_동.ToString("N3") : Row += 1 '//조명
@@ -1064,786 +1117,10 @@
End Function
Private Sub 항목별평가결과(ByRef DSR As Eco2Ar.DSR)
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 = "외벽(벽체)" OrElse 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 = "외벽(지붕)" OrElse 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 = "외벽(바닥)" OrElse 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 = "외벽(벽체)" OrElse 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 = "외벽(지붕)" OrElse 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 = "외벽(바닥)" OrElse 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()
NDr.지열히트펌프용량 = Sum_지열히트펌프용량_난방.ToString()
'NDr.지열히트펌프용량냉방 = Sum_지열히트펌프용량_냉방.ToString() + "(" + Max_냉방.ToString() + ")"
'If Sum_지열히트펌프용량_난방 > 0 Then
' NDr.지열히트펌프용량 = Sum_지열히트펌프용량_난방.ToString()
' '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
Dim 창호그룹 As New Dictionary(Of String, Double)
For Each drmyoun As DS.tbl_myounRow In DSET1.tbl_myoun.Select("code <> '0'")
If drmyoun.열관류율2 = "" OrElse drmyoun.열관류율2 = "0" Then Continue For
For Each cdr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code= '" + drmyoun.열관류율2 + "'")
Dim 면코드 As String = cdr.면형태
If 면코드 = "" Then Continue For
Dim 면이름 As String = Get_CName("1088", 면코드)
If 면이름 = "" Then Continue For
If 면이름.IndexOf("외부창") <> -1 Then '//이름에 외부창이잇는것을 찾음
If Not 창호그룹.ContainsKey(cdr.code) Then
창호그룹.Add(cdr.code, TOSG(drmyoun.건축부위면적))
Else
창호그룹.Item(cdr.code) = 창호그룹.Item(cdr.code) + TOSG(drmyoun.건축부위면적)
End If
End If
Next
Next
Dim 최대면적 As Double = 0
Dim 최대면적면코드 As String = ""
For Each item As System.Collections.Generic.KeyValuePair(Of String, Double) In 창호그룹
If item.Value > 최대면적 Then
최대면적 = item.Value
최대면적면코드 = item.Key
End If
Next
For Each cdr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'")
Dim 면코드 As String = cdr.code
If 면코드 = 최대면적면코드 Then
NDr.창호종류 = cdr.창호세부설명
NDr.창호값 = TOSG(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
'//20160327
If Not IsNumeric(fndr.보일러대수) Then fndr.보일러대수 = "0"
If CInt(fndr.보일러대수) = 0 AndAlso (fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동") Then
MsgBox("다음 난방기기의 보일러 대수 가 입력되지 않았습니다" + vbCrLf + vbCrLf + _
"난방기기 : " + fndr.설명 + vbCrLf + _
"운전방식 : " + fndr.운전방식 + vbCrLf + _
"보일러대수 : " + fndr.보일러대수 + vbCrLf + vbCrLf + _
"단독가동이 아닌 경우에는 보일러 대수가 입력되어야 합니다", MsgBoxStyle.Critical, "확인")
End If
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 Sub Frm_Upload_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
' Me.Hide()
LoadFile()
MakeData()
If fn <> "" Then
Try
If FpSpread1.SaveExcel(fn) Then
MsgBox("다음파일이 생성되었습니다" + vbCrLf + fn, MsgBoxStyle.Information, "확인")
Me.Close()
Else
MsgBox("저장실패", MsgBoxStyle.Critical, "확인")
' Me.Show()
End If
Catch ex As Exception
MsgBox("저장실패" + vbCrLf + ex.Message, MsgBoxStyle.Critical, "확인")
Me.Close()
End Try
End If
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim sd As New SaveFileDialog()
sd.Filter = "Excel(*.xls)|*.xls"