Files
ECO2/ArinWarev1/Forms_Report/Frm_Macro2.vb
2025-09-29 23:34:43 +09:00

841 lines
44 KiB
VB.net

Public Class Frm_Macro2
Dim fn As String = ""
Dim 단위면적당신재생1차에너지합 As Decimal = 0
Dim 단위면적당1차에너소비량합 As Decimal = 0
Dim 에너지자립률 As Double = 0
Public Sub New()
' 이 호출은 디자이너에 필요합니다.
InitializeComponent()
fn = ""
' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오.
End Sub
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
LoadFile()
End Sub
Private Sub LoadFile()
Dim od As New OpenFileDialog
od.Filter = "excel|*.xls|*.*|*.*"
od.FilterIndex = 1
If (od.ShowDialog() <> Windows.Forms.DialogResult.OK) Then Return
fn = od.FileName
If Not System.IO.File.Exists(fn) Then
MsgBox("업로드샘플파일(" + fn + ")가 존재하지 않습니다", MsgBoxStyle.Critical, "확인")
Return
End If
Try
If Me.FpSpread1.OpenExcel(fn) Then
'// MakeData()
'//첫줄에 열 번호를 넣는다.
For col As Integer = 1 To 108
Dim oldvalue As Object = FpSpread1_Sheet1.Cells(0, col - 1).Value
If oldvalue Is Nothing Then
FpSpread1_Sheet1.Cells(0, col - 1).Value = "(" + col.ToString() + ")"
Else
FpSpread1_Sheet1.Cells(0, col - 1).Value = oldvalue.ToString() + "(" + col.ToString() + ")"
End If
Next
'//0번째열에서 1의 값을 찾고 그 이후의 값을 찾아서 번호를 설정한다.
Dim StartIndex As Integer = 0
Dim EndIndex As Integer = 0
ProgressBar1.Minimum = 0
ProgressBar1.Maximum = 10000
ProgressBar1.Value = 0
For i As Integer = 0 To 65535
If i >= ProgressBar1.Maximum - 1 Then
ProgressBar1.Value = ProgressBar1.Maximum
Else
ProgressBar1.Value += 1
End If
Dim curval As Object = FpSpread1_Sheet1.Cells(i, 0).Value
If curval Is Nothing Then
If StartIndex <> 0 Then
EndIndex = i - 1
Exit For
Else
Continue For
End If
End If
If curval.ToString() = "1" Then
StartIndex = i
ElseIf StartIndex <> 0 Then
If curval.ToString() = "" Then
EndIndex = i - 1
Exit For
End If
End If
Next
tbStart.Text = (StartIndex + 1).ToString()
tbEnd.Text = (EndIndex + 1).ToString()
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "파일 불러오기 오류")
End Try
End Sub
Private Function RData(grp As String, code As Integer) As Decimal
Dim filter As String = String.Format("GRP='{0}' and code={1}", grp, code.ToString("000"))
Dim DR() As DSR.TReqUseRow = DSETR1.TReqUse.Select(filter)
If DR.GetUpperBound(0) = -1 Then Return 0
Return DR(0).M00
End Function
Private Sub Frm_Upload_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
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"
sd.FilterIndex = 0
If sd.ShowDialog = Windows.Forms.DialogResult.OK Then
Try
If FpSpread1.SaveExcel(sd.FileName, FarPoint.Excel.ExcelSaveFlags.NoFlagsSet) Then
MsgBox("저장완료", MsgBoxStyle.Information, "확인")
End If
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "error")
End Try
End If
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'//기본홤녀은 건물개요로
MdiMain.Menu_건물개요()
Dim StartNo As Integer = CInt(tbStart.Text)
Dim EndNo As Integer = CInt(tbEnd.Text)
Me.ProgressBar1.Value = 0
Me.ProgressBar1.Minimum = 0
Me.ProgressBar1.Maximum = EndNo - StartNo + 1
If MsgBox("전체 실행전에 1건에대해서 테스트실행을 하시겠습니까?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "확인") = MsgBoxResult.Yes Then
EndNo = StartNo
ElseIf MsgBox("전체 " + Me.ProgressBar1.Maximum.ToString() + "건의 자료를 실행하시겠습니까?" + vbCrLf + "이 작업은 중단할 수 없습니다", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "확인") <> MsgBoxResult.Yes Then
Return
End If
For RowNum As Integer = StartNo To EndNo
Me.ProgressBar1.Value += 1
Dim Row = RowNum - 1
Dim ColIDX As Integer = 1
'//건물개요
'//DSET1.tbl_Desc.Clear()
Dim NewDesc As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0)
NewDesc.cname = FpSpread1_Sheet1.Cells(Row, 1).Value.ToString()
NewDesc.buildname = NewDesc.cname
NewDesc.builds1 = 1 '//지하(층수)
NewDesc.builds2 = 1 '//지상(층수)
'//지역(해당하는이름의 코드를 가져와서 설정해야함)
Dim 지역명 As String = FpSpread1_Sheet1.Cells(Row, 5).Value
Dim 지역목록() As DataRow = DSET1.weather_group.Select(String.Format("name = '{0}'", 지역명))
If 지역목록.Length <> 1 Then
MsgBox(String.Format("{0}번줄 지역({1})에 해당하는 데이터가 {2}건 있습니다", Row, 지역명, 지역목록.Length))
Return
End If
NewDesc.buildarea = 지역목록(0)("code")
NewDesc.EndEdit()
'DSET1.tbl_Desc.Addtbl_DescRow(NewDesc)
Dim Drows() As DataRow
'//건물용도
Dim 건물용도명 As String = FpSpread1_Sheet1.Cells(Row, 6).Value.ToString().Replace(vbLf, "").Replace(vbCr, "") '//건물용도
Drows = DSET1.tbl_common.Select(String.Format("gubun='1201' and name = '{0}'", 건물용도명))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 건물용도({1})에 해당하는 데이터가 {2}건 있습니다", Row, 건물용도명, Drows.Length))
Return
End If
NewDesc.isjugo = Drows(0)("valn1")
NewDesc.EndEdit()
'//입력존
DSET1.tbl_zone.Clear()
'/없음데이터도 생성해야한다.
Dim drZoneNull As DS.tbl_zoneRow = DSET1.tbl_zone.Newtbl_zoneRow
drZoneNull.code = "0"
drZoneNull.설명 = "(없음)"
DSET1.tbl_zone.Addtbl_zoneRow(drZoneNull)
Dim DrZone As DS.tbl_zoneRow = DSET1.tbl_zone.Newtbl_zoneRow
DrZone.code = "00001"
DrZone.조명부하산출방법 = "입력치"
DrZone.설명 = "입력존(매크로)"
DrZone.그룹 = "0"
DrZone.sortkey = DrZone.code
DrZone.열생산난방생산기기 = "00001" '//난방기기 임시로 적용처리함()
DrZone.열생산급탕생산기기 = "00001" '//급탕기기 임시로 적용처리함()
DrZone.냉난방열공급시스템 = "00001" '//열공급시스템연결
DrZone.냉난방열공급시스템수 = "1"
DrZone.냉난방공조처리시스템 = "00001"
DrZone.인공광원 = "(없음)"
DrZone.조명방식 = "(없음)"
DrZone.외기부하처리여부 = "아니오"
DrZone.설명 = FpSpread1_Sheet1.Cells(Row, 7).Value
Dim 사용프로필 As String = FpSpread1_Sheet1.Cells(Row, 8).Value
Drows = DSET1.tbl_profile.Select(String.Format("설명 like '%{0}'", 사용프로필))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 입력존-사용프로필({1})에 해당하는 데이터가 {2}건 있습니다", Row, 사용프로필, Drows.Length))
Return
End If
DrZone.프로필 = Drows(0)("code")
DrZone.면적 = FpSpread1_Sheet1.Cells(Row, 9).Value
DrZone.천장고p = FpSpread1_Sheet1.Cells(Row, 10).Value
DrZone.순실체적 = FpSpread1_Sheet1.Cells(Row, 11).Value
Dim 열저장능력 As String = FpSpread1_Sheet1.Cells(Row, 12).Value
Drows = DSET1.tbl_common.Select(String.Format("gubun='1023' and name = '{0}'", 열저장능력))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 입력존-열저장능력({1})에 해당하는 데이터가 {2}건 있습니다", Row, 열저장능력, Drows.Length))
Return
End If
DrZone.열저장능력 = Drows(0)("Name")
Dim 열교가산치 As String = FpSpread1_Sheet1.Cells(Row, 13).Value
Drows = DSET1.tbl_common.Select(String.Format("gubun='1022' and name = '{0}'", 열교가산치))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 입력존-열교가산치({1})에 해당하는 데이터가 {2}건 있습니다", Row, 열교가산치, Drows.Length))
Return
End If
DrZone.열교가산치 = Drows(0)("Name")
DrZone.침기율 = FpSpread1_Sheet1.Cells(Row, 14).Value
Dim 냉난방방식 As String = FpSpread1_Sheet1.Cells(Row, 15).Value
If 냉난방방식 = "없음" Then 냉난방방식 = "기능없음"
Drows = DSET1.tbl_common.Select(String.Format("gubun='1000' and name = '{0}'", 냉난방방식))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 입력존-냉난방방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 냉난방방식, Drows.Length))
Return
End If
DrZone.냉난방방식 = Drows(0)("name")
Dim 냉난방공조 As String = FpSpread1_Sheet1.Cells(Row, 16).Value
If 냉난방공조 = "없음" Then 냉난방공조 = "기능없음"
Drows = DSET1.tbl_common.Select(String.Format("gubun='1001' and name = '{0}'", 냉난방공조))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 입력존-냉난방공조({1})에 해당하는 데이터가 {2}건 있습니다", Row, 냉난방공조, Drows.Length))
Return
End If
DrZone.냉난방공조 = Drows(0)("name")
Dim 조명부하산출방법 As String = FpSpread1_Sheet1.Cells(Row, 17).Value
Drows = DSET1.tbl_common.Select(String.Format("gubun='1031' and name = '{0}'", 조명부하산출방법))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 입력존-조명부하산출방법({1})에 해당하는 데이터가 {2}건 있습니다", Row, 조명부하산출방법, Drows.Length))
Return
End If
DrZone.조명부하산출방법 = Drows(0)("name")
DrZone.조명에너지부하율입력치 = FpSpread1_Sheet1.Cells(Row, 18).Value
DSET1.tbl_zone.Addtbl_zoneRow(DrZone)
'//입력면
Dim 방위목록 As New List(Of String)
방위목록.AddRange({"북서", "", "남서", "", "남동", "", "북동", "", "수평", "일사없음", "(없음)"})
Dim 제목1 As String = ""
Dim 제목2 As String = ""
DSET1.tbl_myoun.Clear()
For i As Integer = 0 To 12
Dim NewMyoun As DS.tbl_myounRow = DSET1.tbl_myoun.Newtbl_myounRow
NewMyoun.존분류 = DrZone.code
NewMyoun.code = String.Format("{0:00000}", i + 1)
NewMyoun.sortkey = NewMyoun.code
Dim t1 As String = FpSpread1_Sheet1.Cells(2, 19 + (i * 2)).Value '//타이틀
Dim t2 As String = FpSpread1_Sheet1.Cells(3, 19 + (i * 2)).Value '//타이틀
If Not String.IsNullOrEmpty(t1) Then 제목1 = t1
If Not String.IsNullOrEmpty(t2) Then 제목2 = t2
NewMyoun.설명 = 제목1 + ":" + 제목2
'//공용코드 1067에서 name 이 일치하는 데이터가 있어야한다.
'//(없음),외벽,외부창,내벽,간벽,내부창
If i = 0 Then
NewMyoun.건축부위방식 = "외벽"
ElseIf i = 1 Then
NewMyoun.건축부위방식 = "외벽"
ElseIf i = 2 Then
NewMyoun.건축부위방식 = "내벽"
ElseIf i = 3 Then
NewMyoun.건축부위방식 = "내벽"
ElseIf i = 4 Then
NewMyoun.건축부위방식 = "외벽"
ElseIf i = 5 Then '//코어
NewMyoun.건축부위방식 = "내벽"
ElseIf i = 6 Then '//쎼떄깐뼊(쪠외)
NewMyoun.건축부위방식 = "간벽"
ElseIf i = 7 Or i = 8 Then
NewMyoun.건축부위방식 = "외부창"
ElseIf i = 9 Or i = 10 Or i = 11 Or i = 12 Then
NewMyoun.건축부위방식 = "내부창"
End If
Dim 방위1 As String = FpSpread1_Sheet1.Cells(Row, 19 + (i * 2)).Value '//타이틀
방위1 = 방위1.ToString().Replace(vbLf, "").Replace(vbCr, "")
If 방위목록.IndexOf(방위1) = -1 Then
MsgBox(String.Format("{0}번줄 입력면-방위1({1})에 해당하는 데이터가 없습니다.", Row, 방위1))
Return
End If
NewMyoun.방위 = 방위1
NewMyoun.건축부위면적 = FpSpread1_Sheet1.Cells(Row, 20 + (i * 2)).Value
DSET1.tbl_myoun.Addtbl_myounRow(NewMyoun)
Next
'//지붕 (45)
Dim NewM지붕 As DS.tbl_myounRow = DSET1.tbl_myoun.Newtbl_myounRow
NewM지붕.존분류 = DrZone.code
NewM지붕.code = String.Format("{0:00000}", 14)
NewM지붕.sortkey = NewM지붕.code
NewM지붕.방위 = "수평"
NewM지붕.건축부위방식 = "외벽"
NewM지붕.건축부위면적 = FpSpread1_Sheet1.Cells(Row, 45).Value
DSET1.tbl_myoun.Addtbl_myounRow(NewM지붕)
'//바닥 (46)
Dim NewM바닥 As DS.tbl_myounRow = DSET1.tbl_myoun.Newtbl_myounRow
NewM바닥.존분류 = DrZone.code
NewM바닥.code = String.Format("{0:00000}", 15)
NewM바닥.sortkey = NewM지붕.code
NewM바닥.방위 = "일사없음"
NewM바닥.건축부위방식 = "외벽"
NewM바닥.건축부위면적 = FpSpread1_Sheet1.Cells(Row, 46).Value
DSET1.tbl_myoun.Addtbl_myounRow(NewM바닥)
'//공조처리
DSET1.tbl_kongjo.Clear()
Dim New공조 As DS.tbl_kongjoRow = DSET1.tbl_kongjo.Newtbl_kongjoRow
New공조.code = "00001"
New공조.팬효율산출방식 = "계산치"
New공조.설명 = "공조기기"
New공조.설정치난방 = "0"
New공조.설정치냉방 = "0"
New공조.최대풍량 = "0"
New공조.리턴공기혼합여부 = "아니오"
New공조.가습기유형 = "(없음)"
New공조.외기냉방제어유무 = ""
New공조.열교환기유형 = "(없음)"
New공조.열회수율 = "0"
New공조.열회수율냉 = "공조기기"
New공조.급기풍량 = "0"
New공조.배기풍량 = "0"
New공조.급기팬동력 = "0"
New공조.배기팬동력 = "0"
New공조.총압력손실급기팬 = "0"
New공조.총압력손실배기팬 = "0"
New공조.총효율급기팬 = "0"
New공조.총효율배기팬 = "0"
Dim 공조방식 As String = FpSpread1_Sheet1.Cells(Row, 47).Value
If 공조방식 = "없음" Then 공조방식 = "(없음)"
Drows = DSET1.tbl_common.Select(String.Format("gubun='1026' and name = '{0}'", 공조방식))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 공조처리-공조방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 공조방식, Drows.Length))
Return
End If
New공조.공조방식 = Drows(0)("name")
DSET1.tbl_kongjo.Addtbl_kongjoRow(New공조)
'//난방기기
DSET1.tbl_nanbangkiki.Clear()
ColIDX = 48
Dim New난방 As DS.tbl_nanbangkikiRow = DSET1.tbl_nanbangkiki.Newtbl_nanbangkikiRow
New난방.code = "00001"
New난방.설명 = "보일러"
New난방.신재생연결여부 = "연결없음"
New난방.보일러대수 = "1"
Dim 난방_열생산기기방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1020' and name = '{0}'", 난방_열생산기기방식))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-열생산기기방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_열생산기기방식, Drows.Length))
Return
End If
New난방.열생산기기방식 = Drows(0)("name")
Dim 난방_사용연료 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1021' and name = '{0}'", 난방_사용연료))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-사용연료({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_사용연료, Drows.Length))
Return
End If
New난방.사용연료 = Drows(0)("name")
New난방.보일러정격출력 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
New난방.급수온도 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
New난방.환수온도 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Dim 난방생산기기운전방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1035' and name = '{0}'", 난방생산기기운전방식))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-난방생산기기운전방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방생산기기운전방식, Drows.Length))
Return
End If
New난방.운전방식 = Drows(0)("name")
Dim 난방_열원기기_보일러방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
If 난방_열원기기_보일러방식.IndexOf("보일러") = -1 Then 난방_열원기기_보일러방식 += "보일러"
Drows = DSET1.tbl_common.Select(String.Format("gubun='1036' and name = '{0}'", 난방_열원기기_보일러방식))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-열원기기_보일러방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_열원기기_보일러방식, Drows.Length))
Return
End If
New난방.보일러방식 = Drows(0)("name")
New난방.정격보일러효율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Dim 난방_축열탱크방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1039' and name = '{0}'", 난방_축열탱크방식))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-급탕축열탱크방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_축열탱크방식, Drows.Length))
Return
End If
New난방.축열탱크방식 = Drows(0)("name")
Dim 난방_급탕_시스템방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1042' and name = '{0}'", 난방_급탕_시스템방식))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-급탕_시스템방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_급탕_시스템방식, Drows.Length))
Return
End If
New난방.분배시스템방식 = Drows(0)("name")
'//입력존에서 열생산기기 급탕이 연결되지 않았다.
'//순환무우를 비롯 급탕기기를 사용하려면 급탕기기가 연결되어야한다.
Dim 난방_급탕_순환유무 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1032' and name = '{0}'", 난방_급탕_순환유무))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-급탕_순환유무({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_급탕_순환유무, Drows.Length))
Return
End If
New난방.순환유무 = Drows(0)("name")
Dim 난방_급탕_펌프제어 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1043' and name = '{0}'", 난방_급탕_펌프제어))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-급탕_펌프제어({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_급탕_펌프제어, Drows.Length))
Return
End If
New난방.펌프제어 = Drows(0)("name")
New난방.펌프동력급탕 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Dim 난방_배관망유형 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1040' and name = '{0}'", 난방_배관망유형))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-배관망유형({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_배관망유형, Drows.Length))
Return
End If
New난방.배관망유형 = Drows(0)("name")
Dim 난방_펌프감소계수 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1002' and name = '{0}'", 난방_펌프감소계수))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-펌프감소계수({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_펌프감소계수, Drows.Length))
Return
End If
New난방.펌프교정계수 = Drows(0)("name")
Dim 난방_펌프제어유형 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1041' and name = '{0}'", 난방_펌프제어유형))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방기기-펌프제어유형({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방_펌프제어유형, Drows.Length))
Return
End If
New난방.펌프제어유형 = Drows(0)("name")
New난방.펌프동력급탕 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
DSET1.tbl_nanbangkiki.Addtbl_nanbangkikiRow(New난방)
'//난방공급시스템
DSET1.tbl_kongkub.Clear()
Dim New공급 As DS.tbl_kongkubRow = DSET1.tbl_kongkub.Newtbl_kongkubRow
New공급.code = "00001"
New공급.설명 = "난방공급"
New공급.제어기의정격전력 = "0"
New공급.팬송풍기정격전력 = "0"
New공급.펌프정격전력 = "0"
New공급.팬송풍기수 = "0"
New공급.추가펌프수 = "0"
Dim 난방공급시스템 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1045' and name = '{0}'", 난방공급시스템))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방공급-시스템({1})에 해당하는 데이터가 {2}건 있습니다", Row, 난방공급시스템, Drows.Length))
Return
End If
New공급.열공급시스템 = Drows(0)("name")
Dim 열공급생산기기 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_nanbangkiki.Select(String.Format("설명 = '{0}'", 열공급생산기기))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방공급-열공급생산시기({1})에 해당하는 데이터가 {2}건 있습니다", Row, 열공급생산기기, Drows.Length))
Return
End If
New공급.열공급생산기기 = Drows(0)("code")
Dim 바닥난방열제어 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1033' and name = '{0}'", 바닥난방열제어))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방공급-바닥난방열제어({1})에 해당하는 데이터가 {2}건 있습니다", Row, 바닥난방열제어, Drows.Length))
Return
End If
New공급.바닥난방열제어 = Drows(0)("name")
Dim 바닥난방열건축부위 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
Drows = DSET1.tbl_common.Select(String.Format("gubun='1034' and name = '{0}'", 바닥난방열건축부위))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 난방공급-바닥난방열건축부위({1})에 해당하는 데이터가 {2}건 있습니다", Row, 바닥난방열건축부위, Drows.Length))
Return
End If
New공급.바닥난방열건축부위 = Drows(0)("name")
DSET1.tbl_kongkub.Addtbl_kongkubRow(New공급)
'//냉방기기
DSET1.tbl_nangbangkiki.Clear()
Dim New냉방 As DS.tbl_nangbangkikiRow = DSET1.tbl_nangbangkiki.Newtbl_nangbangkikiRow
New냉방.code = "00001"
New냉방.설명 = "냉방기기"
New냉방.신재생연결여부 = "연결없음"
Dim 냉동기방식 As String = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
If 냉동기방식 = "없음" Then 냉동기방식 = "(없음)"
Drows = DSET1.tbl_common.Select(String.Format("gubun='1046' and name = '{0}'", 냉동기방식))
If Drows.Length <> 1 Then
MsgBox(String.Format("{0}번줄 냉방기기-냉동기방식({1})에 해당하는 데이터가 {2}건 있습니다", Row, 냉동기방식, Drows.Length))
Return
End If
New냉방.냉동기방식 = Drows(0)("name")
New냉방.냉동기용량 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
New냉방.열성능비 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value : ColIDX += 1
If Not IsNumeric(New냉방.냉동기용량) Then New냉방.냉동기용량 = "0"
If Not IsNumeric(New냉방.열성능비) Then New냉방.열성능비 = "0"
DSET1.tbl_nangbangkiki.Addtbl_nangbangkikiRow(New냉방)
'//열관류율
'//면형태를 입력해야함 이것은 공용코드 1088에 들어있으며 코드형태로 들어간다
'//외벽(벽체),외벽(지붕),외벽(바닥),내벽(벽체),내벽(지붕),내벽(바닥),간벽,외부창,내부창,지중벽
DSET1.tbl_yk.Clear()
'//직접면하는
For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외벽'")
dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value
Next : ColIDX += 1
'//간접면하는
For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='내벽'")
dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value
Next : ColIDX += 1
'//바닥
For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외벽' and 방위='일사없음'") '//2018.04.24 수정
dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value
Next : ColIDX += 1
'//지붕벽체
For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외벽' and 방위='수평'") '//2018.04.24 수정
dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value
Next : ColIDX += 1
'//현관문
For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='내부창' and 방위='일사없음'") '//2018.04.24 수정
dr면.투과율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value
dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX + 1).Value
Next : ColIDX += 2
'//확장창
For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외부창'")
dr면.투과율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value
dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX + 1).Value
Next : ColIDX += 2
'//세대창
For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='내부창' and 방위<>'일사없음'") '//2018.04.24 수정
dr면.투과율 = FpSpread1_Sheet1.Cells(Row, ColIDX).Value
dr면.열관류율 = FpSpread1_Sheet1.Cells(Row, ColIDX + 1).Value
Next : ColIDX += 2
'//입력면의 자료를 업데이트해준다.
DSET1.AcceptChanges()
'//계산실행
Run_Calc(Row)
Next
If Not msgf Is Nothing Then
msgf.Close()
msgf.Dispose()
msgf = Nothing
End If
If StartNo = EndNo Then
Report_그래프.Visible = False
Report_그래프.Show()
End If
End Sub
Sub Run_Calc(Row As Integer)
'//현재데이터상태를 저장
DSET1.AcceptChanges()
DSETR1.AcceptChanges()
Dim Type As Calculator.ECalc = Calculator.ECalc.All '//요구량+소요량
Dim showmsg As String = "" '//추가표시메세지
Dim St As Date = Now '//계산시작
pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
pLog.Add(String.Format("계산실행({0})", Type.ToString()))
pLog.Add(String.Format("시작시간 : {0}", St.ToString()))
pLog.Add("----------------------------------")
Dim Result As Boolean = Calc.Start(showmsg, Type, LogSB, 0)
Dim Ts As TimeSpan = Now - St '//계산경과시간을 표시해준다.
Dim calc_ok As Integer = 0
If Result Then '//파라미터 True 라면 소요량이 추가로 게산된다.
Calc.Summary.All()
If LogSB.ToString <> "" Then
FpSpread1_Sheet1.Cells(Row, 97).Value = LogSB.ToString
Else
FpSpread1_Sheet1.Cells(Row, 97).Value = "시간:" + Ts.ToString()
calc_ok = 1 '================================2014.04.17 계산이 완료되면 그래프를 보여줌
End If
Else
FpSpread1_Sheet1.Cells(Row, 97).Value = LogSB.ToString
End If
'//상태메세지창이 열려있다면 제거해준다.
If calc_ok = 1 Then
'//해당값을 기록한다.
Extract_Data(Row)
Else
'//빈값으로 기록을 한다.
Dim StartIDX As Integer = 100
For idx As Integer = StartIDX To StartIDX + 13
FpSpread1_Sheet1.Cells(Row, idx).Value = "--"
Next
End If
End Sub
Sub Extract_Data(Row As Integer)
Dim 신재생에너지 As Decimal
Dim 난방에너지 As Decimal
Dim 냉방에너지 As Decimal
Dim 급탕에너지 As Decimal
Dim 조명에너지 As Decimal
Dim 환기에너지 As Decimal
'Dim 합계 As Decimal
Dim BaseIndex As Integer = 90
Dim Dr2 As DSR.Graph_ReqUseRow
For Gubun As Short = 0 To 4
Select Case Gubun
Case 0 '//1차에너지소요량
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))
End If
If Result1.사용면적.C <> 0 Then
냉방면적 = TOSG(IIf(냉방 = 0, 0, 냉방 / Result1.사용면적.C))
End If
If Result1.사용면적.L <> 0 Then
조명면적 = TOSG(IIf(조명 = 0, 0, 조명 / Result1.사용면적.L))
End If
If Result1.사용면적.W <> 0 Then
급탕면적 = TOSG(IIf(급탕 = 0, 0, 급탕 / Result1.사용면적.W))
End If
If Result1.사용면적.V <> 0 Then
환기면적 = TOSG(IIf(환기 = 0, 0, 환기 / Result1.사용면적.V))
End If
Dim 전기 As Decimal = 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적
'//열병합신재생에너지추가 130831 arin
신재생에너지 = -1 * (Result1.생산E(0).면적당생산량태양열 + Result1.생산E(0).신재생면적당열생산량 + Result1.생산E(0).면적당생산량지열 + 전기 * 2.75)
'//1차에너지소요량
난방에너지 = Result1.일차E소요량(0).난방면적
냉방에너지 = Result1.일차E소요량(0).냉방면적
급탕에너지 = Result1.일차E소요량(0).급탕면적
조명에너지 = Result1.일차E소요량(0).조명면적
환기에너지 = Result1.일차E소요량(0).환기면적
FpSpread1_Sheet1.Cells(Row, BaseIndex).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 8).Value = 난방에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 9).Value = 냉방에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 10).Value = 급탕에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 11).Value = 조명에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 12).Value = 환기에너지
Case 1 '//에너지소요량
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))
End If
If Result1.사용면적.C <> 0 Then
냉방면적 = TOSG(IIf(냉방 = 0, 0, 냉방 / Result1.사용면적.C))
End If
If Result1.사용면적.L <> 0 Then
조명면적 = TOSG(IIf(조명 = 0, 0, 조명 / Result1.사용면적.L))
End If
If Result1.사용면적.W <> 0 Then
급탕면적 = TOSG(IIf(급탕 = 0, 0, 급탕 / Result1.사용면적.W))
End If
If Result1.사용면적.V <> 0 Then
환기면적 = TOSG(IIf(환기 = 0, 0, 환기 / Result1.사용면적.V))
End If
Dim 면적 As Decimal = 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적
'//열병합신재생에너지추가 130831 arin
신재생에너지 = -1 * (Result1.생산E(0).면적당생산량태양열 + Result1.생산E(0).신재생면적당열생산량 + Result1.생산E(0).면적당생산량지열) - 면적
난방에너지 = Result1.E소요량(0).난방면적
냉방에너지 = Result1.E소요량(0).냉방면적
급탕에너지 = Result1.E소요량(0).급탕면적
조명에너지 = Result1.E소요량(0).조명면적
환기에너지 = Result1.E소요량(0).환기면적
FpSpread1_Sheet1.Cells(Row, BaseIndex - 1).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex - 8).Value = 난방에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex - 7).Value = 냉방에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex - 6).Value = 급탕에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex - 5).Value = 조명에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex - 4).Value = 환기에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex - 3).Value = 신재생에너지
Case 2 '//에너지요구량
신재생에너지 = 0
난방에너지 = Result1.E요구량(0).난방면적
냉방에너지 = Result1.E요구량(0).냉방면적
급탕에너지 = Result1.E요구량(0).급탕면적
조명에너지 = Result1.E요구량(0).조명면적
환기에너지 = 0
FpSpread1_Sheet1.Cells(Row, BaseIndex - 2).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 3).Value = 난방에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 4).Value = 냉방에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 5).Value = 급탕에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 6).Value = 조명에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 7).Value = 환기에너지
Case 3 '//co2발생량
신재생에너지 = 0
난방에너지 = Result1.Co2발생량(0).난방면적
냉방에너지 = Result1.Co2발생량(0).냉방면적
급탕에너지 = Result1.Co2발생량(0).급탕면적
조명에너지 = Result1.Co2발생량(0).조명면적
환기에너지 = Result1.Co2발생량(0).환기면적
FpSpread1_Sheet1.Cells(Row, BaseIndex + 1).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지
Case 4 '//1차에너지소요량(+계수) + 131020
신재생에너지 = 0
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
FpSpread1_Sheet1.Cells(Row, BaseIndex + 2).Value = 난방에너지 + 냉방에너지 + 급탕에너지 + 조명에너지 + 환기에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 13).Value = 난방에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 14).Value = 냉방에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 15).Value = 급탕에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 16).Value = 조명에너지
FpSpread1_Sheet1.Cells(Row, BaseIndex + 17).Value = 환기에너지
End Select
Next
End Sub
End Class