4529 lines
189 KiB
VB.net
4529 lines
189 KiB
VB.net
Imports C1.Win.C1Ribbon
|
|
Imports Microsoft.VisualBasic
|
|
|
|
Public Class MdiMain
|
|
|
|
Dim T As String = "메인화면"
|
|
|
|
Enum E_MenuIdx
|
|
NONE = 0
|
|
월별에너지사용량
|
|
Form1 = 50
|
|
Form2
|
|
Form3
|
|
Form4
|
|
Form5
|
|
End Enum
|
|
|
|
Dim FileExt As String = "ECL2"
|
|
|
|
'''현재열려있는폼의 이름을 변경한다.
|
|
Public OpenedForm As E_MenuIdx = E_MenuIdx.NONE
|
|
|
|
Private Sub MdiMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
|
|
|
|
If Not Prj.Opened Then
|
|
If MsgBox(CLang.종료할래, MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, CLang.확인) = MsgBoxResult.Ok Then
|
|
'Me.Close()
|
|
Else
|
|
e.Cancel = True
|
|
End If
|
|
Else
|
|
Dim dlg As DialogResult = MsgBox(CLang.종료할래2, MsgBoxStyle.Information Or MsgBoxStyle.YesNoCancel, CLang.확인)
|
|
If dlg = MsgBoxResult.Yes Then
|
|
|
|
'//열려잇는 폼이 있다면 저장하도록한다.
|
|
For Each ChildForm As CForm In Me.MdiChildren
|
|
If ChildForm.HasChanged Then ChildForm.AcceptChanged()
|
|
Next
|
|
|
|
'//파일을 저장한다.
|
|
Func_Save_OD(Prj.FileName)
|
|
ElseIf dlg = DialogResult.Cancel Then '//사용자가 취소를 했다.
|
|
e.Cancel = True
|
|
End If
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub MdiMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
|
|
Select Case e.KeyCode
|
|
Case Keys.F1
|
|
If e.Control AndAlso e.Shift Then
|
|
If ribbonGroup4.Visible Then
|
|
ribbonGroup4.Visible = Not ribbonGroup4.Visible
|
|
Else
|
|
Dim f As New LoginForm1()
|
|
If f.ShowDialog() = Windows.Forms.DialogResult.OK Then
|
|
ribbonGroup4.Visible = Not ribbonGroup4.Visible
|
|
End If
|
|
End If
|
|
|
|
Else
|
|
Read_PreFile(0)
|
|
End If
|
|
Case Keys.F2
|
|
Read_PreFile(1)
|
|
Case Keys.F3
|
|
Read_PreFile(2)
|
|
Case Keys.F4
|
|
Read_PreFile(3)
|
|
|
|
Case Keys.F5
|
|
Show_Menu(1)
|
|
Case Keys.F6
|
|
Show_Menu(2)
|
|
Case Keys.F7
|
|
Show_Menu(3)
|
|
Case Keys.F8
|
|
Show_Menu(4)
|
|
Case Keys.F9
|
|
Show_Menu(5)
|
|
|
|
Case Keys.F11
|
|
If e.Control Then
|
|
ExportCSV()
|
|
End If
|
|
|
|
Case Keys.F12
|
|
Dim tblname As String = InputBox("", "")
|
|
If tblname = "" Then Return
|
|
Dim f As New Frm_Debug(tblname) With {
|
|
.TopMost = True
|
|
}
|
|
f.Show()
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub CreateAppMenu()
|
|
|
|
'//각버튼의 이벤트를 할당한다.
|
|
AddHandler abt_exit.Click, Sub()
|
|
Me.Close()
|
|
End Sub
|
|
|
|
AddHandler abt_new.Click, Sub()
|
|
Menu_New()
|
|
End Sub
|
|
|
|
AddHandler abt_open.Click, Sub()
|
|
Menu_Open()
|
|
End Sub
|
|
|
|
AddHandler abt_save.Click, Sub()
|
|
Menu_Save()
|
|
End Sub
|
|
|
|
AddHandler abt_saveas.Click, Sub()
|
|
Menu_SaveAs()
|
|
End Sub
|
|
|
|
End Sub
|
|
|
|
|
|
Private Sub pinButton_Click(ByVal sender As Object, ByVal e As EventArgs)
|
|
Dim pin As RibbonToggleButton = CType(sender, RibbonToggleButton)
|
|
If pin.Pressed Then
|
|
MsgBox("cli")
|
|
'/ pin.SmallImage = My.Resources.pinned
|
|
Else
|
|
MsgBox("ncli")
|
|
' pin.SmallImage = My.Resources.unpinned
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub MdiMain_Load(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.Load
|
|
'//프로그램이 켜질떄
|
|
|
|
ribbonGroup4.Visible = False
|
|
Me.Text = "총량 에너지평가 프로그램"
|
|
Me.mbt_save.Enabled = False '//저장버튼비활성
|
|
Me.mbt_save2.Enabled = mbt_save.Enabled
|
|
|
|
Me.Show()
|
|
My.Application.DoEvents() '//화면에 표시
|
|
|
|
Try
|
|
Refresh_StatusInfo()
|
|
|
|
Read_SEtting() '//환경설정을 가져온다. Splah를 변경했따.
|
|
bt5.Visible = False
|
|
|
|
Dim Param As String = Command.ToString
|
|
Param = Param.Replace(Chr(34), "")
|
|
|
|
If Param.ToLower().LastIndexOf(".ecl2") <> -1 Then
|
|
Program = EProgram.총량평가
|
|
FileExt = "ECL2"
|
|
ElseIf Param.ToLower().LastIndexOf(".ecl3") <> -1 Then
|
|
Program = EProgram.친환경평가
|
|
FileExt = "ECL3"
|
|
Else
|
|
Dim F As New Frm_Intro '//로그인화면을 표시
|
|
If F.ShowDialog <> Windows.Forms.DialogResult.OK Then End
|
|
If F.RadioButton1.Checked Then '//eco2는 로그인해야함
|
|
Program = EProgram.총량평가
|
|
FileExt = "ECL2"
|
|
Else
|
|
bt5.Visible = True
|
|
Program = EProgram.친환경평가
|
|
FileExt = "ECL3"
|
|
End If
|
|
End If
|
|
|
|
If Program = EProgram.총량평가 Then
|
|
Me.Text = "건축물 에너지 소비 총량제"
|
|
Else
|
|
Me.Text = "에너지 절약형 친환경주택"
|
|
End If
|
|
|
|
|
|
Me.Text &= " Ver " & _
|
|
My.Application.Info.Version.Minor & "." & _
|
|
My.Application.Info.Version.Build & "." & _
|
|
My.Application.Info.Version.Revision ' & "(Beta)"
|
|
|
|
'//기존사용한 파일목록
|
|
Read_FilHistory()
|
|
|
|
Me.lb_program.Text = "[" + Program.ToString() + "]"
|
|
|
|
'//Version 정보를 확인
|
|
'//170514 other button - btvercheck
|
|
Work_msg("")
|
|
|
|
|
|
|
|
|
|
CreateAppMenu()
|
|
|
|
'//파라미터확인
|
|
If Param <> "" Then
|
|
If System.IO.File.Exists(Param) Then '//해당파일이 존재하면
|
|
Select Case Program
|
|
Case EProgram.친환경평가
|
|
Me.Func_Open_OD(Param)
|
|
Case EProgram.총량평가
|
|
Me.Func_Open_OD(Param)
|
|
End Select
|
|
End If
|
|
End If
|
|
|
|
|
|
Catch ex As Exception
|
|
Dim sb As New System.Text.StringBuilder
|
|
Dim st As New StackTrace(True)
|
|
sb.AppendLine("(Load) 프레임 수: " + st.FrameCount.ToString())
|
|
sb.AppendLine("현 재 메서드: " + st.GetFrame(0).GetMethod().Name)
|
|
sb.AppendLine("호출한 메서드: " + st.GetFrame(1).GetMethod().Name)
|
|
sb.AppendLine("진 입 메서드: " + st.GetFrame(st.FrameCount - 1).GetMethod().Name)
|
|
sb.AppendLine()
|
|
|
|
sb.AppendLine("-- 호출 스택 --")
|
|
For Each sf As StackFrame In st.GetFrames()
|
|
sb.AppendLine(
|
|
" 파 일: " + sf.GetFileName() +
|
|
" 행: " + sf.GetFileLineNumber().ToString() +
|
|
" 열: " + sf.GetFileColumnNumber().ToString() +
|
|
" 오프셋: " + sf.GetILOffset().ToString() +
|
|
" 메서드: " + sf.GetMethod().Name)
|
|
Next
|
|
MsgBox(sb.ToString(), MsgBoxStyle.Critical, "File Open Error")
|
|
End Try
|
|
|
|
|
|
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' 하단 상태표시창의 정보를 갱신합니다.
|
|
''' </summary>
|
|
Public Sub Refresh_StatusInfo()
|
|
Try
|
|
'If Prj.Admin Then
|
|
' Me.lb_usermode.Text = "[관리자]"
|
|
'Else
|
|
' Me.lb_usermode.Text = "[일반]"
|
|
'End If
|
|
'//템플릿 정보파일
|
|
If Prj.EditTime = "" Then
|
|
Me.lbl_lastedit.Text = "[최종변경]"
|
|
Else
|
|
Me.lbl_lastedit.Text = "[" & Prj.EditTime.Trim & "]"
|
|
End If
|
|
If Prj.Name = "" Then
|
|
Me.lbl_prjname.Text = "[이름]"
|
|
Me.lbl_prjname.ToolTip = ""
|
|
Else
|
|
Me.lbl_prjname.Text = "[" & Prj.Name.Trim.Replace(Space(1), "") & "]"
|
|
Me.lbl_prjname.ToolTip = Prj.Desc
|
|
End If
|
|
If Prj.SFType = "" Then
|
|
Me.lbl_FileInfo.Text = "[버젼]"
|
|
Else
|
|
Me.lbl_FileInfo.Text = "[" & Prj.LGVersino.Trim & "]"
|
|
End If
|
|
|
|
'If Prj.Password = "" Then
|
|
' Me.lbl_password.Text = "[비보호]"
|
|
'Else
|
|
' Me.lbl_password.Text = "[보호]"
|
|
'End If
|
|
|
|
'Me.lbl_user.Text = "[" & Prj.UserId & "]"
|
|
Me.lbl_mac.Text = "[" & Prj.CUrMac & "]"
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
|
|
End Try
|
|
|
|
|
|
End Sub
|
|
|
|
Public Sub Func_Open_OD(ByVal FileName As String, Optional ByVal SyncServer As Boolean = False)
|
|
'//파일을 열어서 템플릿이름을 가져온다
|
|
If Not System.IO.File.Exists(FileName) Then
|
|
Return
|
|
End If
|
|
|
|
'//열려잇는화면 닫는다.
|
|
RibbonButton3_Click(Nothing, Nothing)
|
|
|
|
Try
|
|
Dim fi As New System.IO.FileInfo(FileName)
|
|
Dim FS As System.IO.Stream
|
|
Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(FileName)
|
|
Dim Desbuf() As Byte = {} '//구버젼은 암호화를 해제해야한다
|
|
|
|
If Source.Length < 4 Then
|
|
MsgBox("알수없거나 손상된 파일입니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
|
|
'//데이터가 암호화되었는지 체크한다.(구버젼 OD용)
|
|
Dim isEnc As Boolean = False
|
|
If (fi.Extension.ToLower() = (".ecl")) Then isEnc = True
|
|
If isEnc Then
|
|
Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42})
|
|
FS = New IO.MemoryStream(Desbuf, True)
|
|
Else
|
|
FS = New IO.MemoryStream(Source, True)
|
|
End If
|
|
|
|
'//불러온기록 추가
|
|
Setting.Data("presetting", "filename") = Prj.FileName
|
|
|
|
Dim Br As New IO.BinaryReader(FS, System.Text.Encoding.Default)
|
|
Prj.FileName = FileName
|
|
Prj.Opened = False
|
|
Prj.SFType = STB(Br.ReadBytes(2)) '//세이브파일구조(2)
|
|
|
|
'If CInt(Prj.SFType) <> 9 Then
|
|
' If MsgBox("현재프로그램과 일치하지 않는 버젼입니다" + vbCrLf + "계속 진행하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
|
|
'End If
|
|
'SyncServer = True ' 2011.06.15 추가 공개버전은 자동적으로 공용코드와 기상코드를 동기화
|
|
|
|
Try
|
|
|
|
'//버젼확인
|
|
Prj.UIVersion = STB(Br.ReadBytes(10))
|
|
Prj.LGVersino = STB(Br.ReadBytes(10))
|
|
|
|
'//추가정보확인
|
|
Prj.Name = STB(Br.ReadBytes(100))
|
|
Prj.Desc = STB(Br.ReadBytes(256))
|
|
Prj.MakeTime = STB(Br.ReadBytes(19))
|
|
Prj.EditTime = STB(Br.ReadBytes(19))
|
|
|
|
'//DS1 데이터초기화 및 오픈
|
|
DSET1 = New DS()
|
|
DSET1.AcceptChanges()
|
|
Dim DS1Len As Int64 = Br.ReadInt64
|
|
Dim DS1() As Byte = Br.ReadBytes(CInt(DS1Len))
|
|
|
|
'System.IO.File.WriteAllBytes("c:\intel\a.xml", DS1)
|
|
|
|
Dim Ms As New IO.MemoryStream(DS1)
|
|
Ms.Position = 0
|
|
Try
|
|
|
|
DSET1.ReadXml(Ms)
|
|
DSET1.AcceptChanges()
|
|
Ms.Close()
|
|
Catch ex As Exception
|
|
MsgBox("파일이 손상되었습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error")
|
|
End Try
|
|
|
|
'//DS1가 있다면 게속 한다
|
|
If String.Compare(Prj.UIVersion, "2014041400") >= 0 Then
|
|
DSETR1 = New DSR()
|
|
DSETR1.AcceptChanges()
|
|
DS1Len = Br.ReadInt64
|
|
DS1 = Br.ReadBytes(CInt(DS1Len))
|
|
Ms = New IO.MemoryStream(DS1)
|
|
Try
|
|
DSETR1.ExtReport.ReadXml(Ms)
|
|
DSETR1.AcceptChanges()
|
|
Ms.Close()
|
|
Catch ex As Exception
|
|
MsgBox("기존 버전의 계산결과를 가져올 수 없습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error")
|
|
End Try
|
|
End If
|
|
|
|
|
|
Prj.IsError = False
|
|
Catch ex As Exception
|
|
MsgBox("파일의 저장형태를 알 수 없습니다" + vbCrLf + ex.Message.ToString, MsgBoxStyle.Critical, "불러오기실패")
|
|
Prj.IsError = True
|
|
End Try
|
|
|
|
Br.Close()
|
|
FS.Close()
|
|
|
|
If Not Prj.IsError Then
|
|
Prj.Opened = True
|
|
Frm_Work.Label1.Text = "데이터를 확인하고 있습니다"
|
|
Frm_Work.Show()
|
|
|
|
If DSET1.tbl_buha.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_buha.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_bunbae.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_bunbae.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_kongjo.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_kongjo.Rows.Add(New String() {"0", "(없음)"})
|
|
'If DSET1.tbl_kongkub.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_kongkub.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_myoun.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_myoun.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_nanbangkiki.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_nanbangkiki.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_nangbangkiki.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_nangbangkiki.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_nbunbae.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_nbunbae.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_new.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_new.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_profile_od.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_profile_od.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_weather_od.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_weather_od.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_yk.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_yk.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_ReqInfo.Rows.Count < 1 Then
|
|
Dim newdreq As DS.tbl_ReqInfoRow = DSET1.tbl_ReqInfo.Newtbl_ReqInfoRow()
|
|
DSET1.tbl_ReqInfo.Addtbl_ReqInfoRow(newdreq)
|
|
End If
|
|
|
|
If DSETR1.ExtReport.Rows.Count < 1 Then
|
|
Dim newdr As DSR.ExtReportRow = DSETR1.ExtReport.NewExtReportRow
|
|
For i As Integer = 1 To 82
|
|
newdr("c" + i.ToString("000")) = "-"
|
|
Next
|
|
DSETR1.ExtReport.AddExtReportRow(newdr)
|
|
End If
|
|
|
|
For Each Drow As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Rows
|
|
If Drow.냉동기방식 = "0" Then Drow.냉동기방식 = "압축식"
|
|
Next
|
|
For Each Drow As DS.tbl_kongjoRow In DSET1.tbl_kongjo.Rows
|
|
If Drow.공조방식 = "0" Then Drow.공조방식 = "정풍량"
|
|
Next
|
|
|
|
For Each drow As DS.tbl_newRow In DSET1.tbl_new.Rows
|
|
If drow.신재생냉난방구분 = "" Then drow.신재생냉난방구분 = drow.지열냉난방구분
|
|
Next
|
|
|
|
|
|
'//save file (weather, profile)
|
|
DSET1.tbl_common_od.Clear()
|
|
DSET1.tbl_profile_od.Clear()
|
|
DSET1.tbl_weather_od.Clear()
|
|
DSET1.weather_cha_od.Clear()
|
|
DSET1.weather_group.Clear()
|
|
DSET1.weather_ilsa_od.Clear()
|
|
DSET1.weather_supdo_od.Clear()
|
|
DSET1.weather_temp_od.Clear()
|
|
DSET1.weather_water.Clear() '//230324
|
|
DSET1.weather_wind.Clear()
|
|
DSET1.weather_river.Clear()
|
|
|
|
Dim fn0 As String = AppDomain.CurrentDomain.BaseDirectory + "\common.dat"
|
|
Dim fn1 As String = AppDomain.CurrentDomain.BaseDirectory + "\profile.dat"
|
|
Dim fn2 As String = AppDomain.CurrentDomain.BaseDirectory + "\weather{0}.dat"
|
|
|
|
If System.IO.File.Exists(fn0) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn0, ""))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.tbl_common_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.tbl_common_od.ReadXml(String.Format(fn0, ""))
|
|
End If
|
|
End If
|
|
|
|
If System.IO.File.Exists(fn1) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn1, ""))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.tbl_profile_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.tbl_profile_od.ReadXml(String.Format(fn1, ""))
|
|
End If
|
|
End If
|
|
If System.IO.File.Exists(String.Format(fn2, "")) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, ""))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.tbl_weather_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.tbl_weather_od.ReadXml(String.Format(fn2, ""))
|
|
End If
|
|
|
|
End If
|
|
If System.IO.File.Exists(String.Format(fn2, "_ch")) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_ch"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_cha_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_cha_od.ReadXml(String.Format(fn2, "_ch"))
|
|
End If
|
|
|
|
|
|
End If
|
|
If System.IO.File.Exists(String.Format(fn2, "_gr")) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_gr"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_group.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_group.ReadXml(String.Format(fn2, "_gr"))
|
|
End If
|
|
End If
|
|
|
|
If System.IO.File.Exists(String.Format(fn2, "_is")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_is"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_ilsa_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_ilsa_od.ReadXml(String.Format(fn2, "_is"))
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
If System.IO.File.Exists(String.Format(fn2, "_sd")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_sd"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_supdo_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_supdo_od.ReadXml(String.Format(fn2, "_sd"))
|
|
End If
|
|
|
|
End If
|
|
If System.IO.File.Exists(String.Format(fn2, "_tp")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_tp"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_temp_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_temp_od.ReadXml(String.Format(fn2, "_tp"))
|
|
End If
|
|
|
|
End If
|
|
|
|
If System.IO.File.Exists(String.Format(fn2, "_water")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_water"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_water.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_water.ReadXml(String.Format(fn2, "_water"))
|
|
End If
|
|
|
|
End If
|
|
|
|
If System.IO.File.Exists(String.Format(fn2, "_wind")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_wind"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_wind.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_wind.ReadXml(String.Format(fn2, "_wind"))
|
|
End If
|
|
|
|
End If
|
|
|
|
If System.IO.File.Exists(String.Format(fn2, "_river")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_river"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_river.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_river.ReadXml(String.Format(fn2, "_river"))
|
|
End If
|
|
|
|
End If
|
|
|
|
DSET1.tbl_common_od.AcceptChanges()
|
|
DSET1.tbl_profile_od.AcceptChanges()
|
|
DSET1.tbl_weather_od.AcceptChanges()
|
|
DSET1.weather_cha_od.AcceptChanges()
|
|
DSET1.weather_group.AcceptChanges()
|
|
DSET1.weather_ilsa_od.AcceptChanges()
|
|
DSET1.weather_supdo_od.AcceptChanges()
|
|
DSET1.weather_temp_od.AcceptChanges()
|
|
|
|
DSET1.weather_water.AcceptChanges() '//230324
|
|
DSET1.weather_wind.AcceptChanges()
|
|
DSET1.weather_river.AcceptChanges()
|
|
|
|
DSET1.AcceptChanges()
|
|
|
|
Frm_Work.Close()
|
|
|
|
|
|
|
|
'//모든자료는 내장된 자료만을 사용한다
|
|
SyncServer = False
|
|
|
|
'//구버젼파일이고 인터넷이 연결되었을경우 업데이트를 한다.
|
|
If isEnc AndAlso Pub.CheckInternet() Then
|
|
Read_Profile_OD()
|
|
If SyncServer Then '//공용및 기상데이터 자동싱크
|
|
'Read_WeatherData_OD() '//disable 230324
|
|
Read_CommonCode_OD()
|
|
Read_Profile_OD()
|
|
'Read_WatherGroup() '//disable 230324
|
|
End If
|
|
End If
|
|
|
|
CalcO = New CalculatorOD(Prj.LGVersino) '//계삭식클래스 초기화
|
|
Me.mbt_save.Enabled = True
|
|
Me.mbt_save2.Enabled = Me.mbt_save.Enabled
|
|
Refresh_StatusInfo() '//화면하단의 정보창표시
|
|
|
|
Menu_시작화면()
|
|
|
|
'//현재 연 파일명을 기록해준다.
|
|
Me.Save_FilHistory(Prj.FileName)
|
|
Me.Read_FilHistory()
|
|
|
|
CalcO.Validation() '//null보정
|
|
|
|
'//팡리명이 너무길면안되니 경로를 뺴고 딱 파일명만 보여줍니다.
|
|
'Me.lbl_filename.Text = Prj.FileName.Substring(Prj.FileName.LastIndexOf("\") + 1)
|
|
|
|
'//Version 정보를 확인
|
|
'Work_msg("데이터 버젼확인중")
|
|
'Dim MyVersion As String '= Format(My.Application.Info.Version.Minor, "0000") & Format(My.Application.Info.Version.Build, "0000")
|
|
'Dim L As New ArinLogin.ArinLOgin
|
|
'Dim VersionInfo As ArinLogin.ArinLOgin.sVersionInfo = Nothing
|
|
''/공용코드버젼확인
|
|
'Try
|
|
' MyVersion = DSET1.tbl_Desc.Rows(0)("versionc").ToString
|
|
' If MyVersion = "" Then MyVersion = "20100101"
|
|
'Catch ex As Exception
|
|
' MyVersion = "20100101"
|
|
'End Try
|
|
'Try
|
|
|
|
' VersionInfo = L.Get_LastVersion("CO") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷!
|
|
' If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0은 없거나 관리안함의 뜻이므로 넘어간다.
|
|
' Dim Msg As New System.Text.StringBuilder
|
|
' Msg.AppendLine("새로운 버젼이 확인되었습니다" & vbCrLf)
|
|
' Msg.AppendLine("현재버젼:" & MyVersion & " 신규버젼:" & VersionInfo.Ver)
|
|
' Msg.AppendLine("----------------------------------")
|
|
' Msg.AppendLine(VersionInfo.Desc)
|
|
' Msg.AppendLine("----------------------------------")
|
|
' If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소"
|
|
' ' Msg.AppendLine("신규버젼을 확인하기위한 페이지를 여시겠습니까?")
|
|
' If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then
|
|
' SyncServer = True
|
|
' 'Shell("explorer " & VersionInfo.Link, AppWinStyle.NormalFocus)
|
|
' ' End
|
|
' End If
|
|
' End If
|
|
'Catch ex As Exception
|
|
' MsgBox("공용코드 에러" & ex.Message.ToString)
|
|
'End Try
|
|
|
|
|
|
'//프로파일버젼업체크 140420
|
|
'Try
|
|
' MyVersion = DSET1.tbl_Desc.Rows(0)("versionp").ToString
|
|
' If MyVersion = "" Then MyVersion = "20100101"
|
|
'Catch ex As Exception
|
|
' MyVersion = "20100101"
|
|
'End Try
|
|
'Try
|
|
|
|
' VersionInfo = L.Get_LastVersion("PO") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷!
|
|
' If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0은 없거나 관리안함의 뜻이므로 넘어간다.
|
|
' Dim Msg As New System.Text.StringBuilder
|
|
' Msg.AppendLine("새로운 버젼이 확인되었습니다" & vbCrLf)
|
|
' Msg.AppendLine("현재버젼:" & MyVersion & " 신규버젼:" & VersionInfo.Ver)
|
|
' Msg.AppendLine("----------------------------------")
|
|
' Msg.AppendLine(VersionInfo.Desc)
|
|
' Msg.AppendLine("----------------------------------")
|
|
' If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소"
|
|
' ' Msg.AppendLine("신규버젼을 확인하기위한 페이지를 여시겠습니까?")
|
|
' If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then
|
|
' SyncServer = True
|
|
' 'Shell("explorer " & VersionInfo.Link, AppWinStyle.NormalFocus)
|
|
' ' End
|
|
' End If
|
|
' End If
|
|
'Catch ex As Exception
|
|
' MsgBox("표준프로파일(OD) 에러" & ex.Message.ToString)
|
|
'End Try
|
|
|
|
'/기상데이터버젼확인
|
|
'Try
|
|
' MyVersion = DSET1.tbl_Desc.Rows(0)("versionw").ToString
|
|
' If MyVersion = "" Then MyVersion = "20100101"
|
|
'Catch ex As Exception
|
|
' MyVersion = "20100101"
|
|
'End Try
|
|
'Try
|
|
' 'MyVersion = dset1.tbl_Desc.Rows(0)("versionw").ToString
|
|
' VersionInfo = L.Get_LastVersion("W") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷!
|
|
' If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0은 없거나 관리안함의 뜻이므로 넘어간다.
|
|
' Dim Msg As New System.Text.StringBuilder
|
|
' Msg.AppendLine("새로운 버젼이 확인되었습니다" & vbCrLf)
|
|
' Msg.AppendLine("현재버젼:" & MyVersion & " 신규버젼:" & VersionInfo.Ver)
|
|
' Msg.AppendLine("----------------------------------")
|
|
' Msg.AppendLine(VersionInfo.Desc)
|
|
' Msg.AppendLine("----------------------------------")
|
|
' If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소"
|
|
' ' Msg.AppendLine("신규버젼을 확인하기위한 페이지를 여시겠습니까?")
|
|
' If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then
|
|
' SyncServer = True
|
|
' 'Shell("explorer " & VersionInfo.Link, AppWinStyle.NormalFocus)
|
|
' ' End
|
|
' End If
|
|
' End If
|
|
'Catch ex As Exception
|
|
|
|
'End Try
|
|
|
|
'Me.Refresh_MenuItems("")
|
|
|
|
'/Dim fi As New System.IO.FileInfo(Prj.FileName)
|
|
lbl_filename.Text = "[" + fi.Name + "]"
|
|
Work_msg("")
|
|
Else
|
|
'//파일불러오기 실패로인해서 다음처리를 하지않는다.
|
|
lbl_filename.Text = "[ERROR]"
|
|
End If
|
|
Catch ex As Exception
|
|
Dim sb As New System.Text.StringBuilder
|
|
Dim st As New StackTrace(True)
|
|
sb.AppendLine(" 프레임 수: " + st.FrameCount.ToString())
|
|
sb.AppendLine("현 재 메서드: " + st.GetFrame(0).GetMethod().Name)
|
|
sb.AppendLine("호출한 메서드: " + st.GetFrame(1).GetMethod().Name)
|
|
sb.AppendLine("진 입 메서드: " + st.GetFrame(st.FrameCount - 1).GetMethod().Name)
|
|
sb.AppendLine()
|
|
|
|
sb.AppendLine("-- 호출 스택 --")
|
|
For Each sf As StackFrame In st.GetFrames()
|
|
sb.AppendLine(
|
|
" 파 일: " + sf.GetFileName() +
|
|
" 행: " + sf.GetFileLineNumber().ToString() +
|
|
" 열: " + sf.GetFileColumnNumber().ToString() +
|
|
" 오프셋: " + sf.GetILOffset().ToString() +
|
|
" 메서드: " + sf.GetMethod().Name)
|
|
Next
|
|
MsgBox(sb.ToString(), MsgBoxStyle.Critical, "File Open Error")
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
Private GroupList_Zone As ArrayList
|
|
Private GroupList_nanbangkiki As ArrayList
|
|
Private GroupList_NanbangKongkub As ArrayList
|
|
Private GroupList_Kongjo As ArrayList
|
|
Private GroupList_NanbangBunbae As ArrayList
|
|
Private GroupList_Naengbankiki As ArrayList
|
|
Private GroupList_New As ArrayList
|
|
Private GroupList_Yk As ArrayList
|
|
Private GroupList_Bunbae As ArrayList
|
|
|
|
Private Sub Save_FilHistory(ByVal filename As String)
|
|
Dim Path As String = filename.Substring(0, filename.LastIndexOf("\"))
|
|
Dim Name As String = filename.Substring(filename.LastIndexOf("\"))
|
|
Path = Path.ToUpper.Replace(My.Application.Info.DirectoryPath.ToUpper, ".\")
|
|
Path = Path.Replace("\\", "\")
|
|
Name = Name.Trim(CChar("\"))
|
|
|
|
'//현재 리스트가 존재하는지확인
|
|
Dim Exist As Boolean = False
|
|
For i As Integer = 0 To 4
|
|
If PreFile(i).ToLower.Trim = filename.ToLower.Trim Then
|
|
PreFile(i) = Path & "\" & Name
|
|
Exist = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If Exist = False Then '//미뤄서 1번에 넣도록 한다.
|
|
PreFile(4) = PreFile(3)
|
|
PreFile(3) = PreFile(2)
|
|
PreFile(2) = PreFile(1)
|
|
PreFile(1) = PreFile(0)
|
|
PreFile(0) = filename
|
|
End If
|
|
For i As Integer = 1 To 5
|
|
Setting.Data("presetting2", "filename" & i) = PreFile(i - 1)
|
|
Next
|
|
Read_FilHistory() '//저장한후에는 다시 읽어오도록한다.
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' 기존에 사용한 파일 목록을 가져온다.
|
|
''' </summary>
|
|
''' <remarks></remarks>
|
|
Private Sub Read_FilHistory()
|
|
|
|
Dim listItem As RibbonListItem = New RibbonListItem(New RibbonLabel("최근 사용한 파일"))
|
|
listItem.AllowSelection = False
|
|
c1Ribbon1.ApplicationMenu.RightPaneItems.Clear()
|
|
c1Ribbon1.ApplicationMenu.RightPaneItems.Add(listItem)
|
|
c1Ribbon1.ApplicationMenu.RightPaneItems.Add(New RibbonListItem(New RibbonSeparator()))
|
|
|
|
|
|
|
|
Dim Path As String
|
|
Dim Name As String
|
|
'//현재 리스트가 존재하는지확인
|
|
|
|
Dim filelist As New List(Of String)
|
|
For i As Integer = 1 To 10
|
|
Dim Filename As String = ""
|
|
|
|
Filename = Setting.Read("presetting2", "filename" & i, "")
|
|
|
|
Filename = Filename.Replace(".\", My.Application.Info.DirectoryPath & "\")
|
|
PreFile(i - 1) = Filename
|
|
|
|
Path = "" : Name = ""
|
|
If Filename.Trim <> "" Then
|
|
Path = Filename.Substring(0, Filename.LastIndexOf("\")) & "\"
|
|
Path = Path.Replace("\\", "\")
|
|
Name = Filename.Substring(Filename.LastIndexOf("\"))
|
|
Name = Name.Trim(CChar("\"))
|
|
End If
|
|
|
|
If (String.IsNullOrEmpty(Name)) Then Continue For
|
|
|
|
|
|
listItem = New RibbonListItem()
|
|
listItem.AllowSelection = True
|
|
|
|
If filelist.IndexOf(Path + Name) = -1 Then
|
|
filelist.Add(Path + Name)
|
|
Else
|
|
Continue For
|
|
End If
|
|
|
|
Dim but As New RibbonButton(Name)
|
|
but.Tag = Path + Name
|
|
but.Enabled = True
|
|
but.Visible = True
|
|
but.SelectableInListItem = True
|
|
but.ToolTip = Path + Name
|
|
|
|
'c1Ribbon1.ApplicationMenu.LeftPaneItems.Add(but)
|
|
|
|
If but.Text.Length > 15 Then
|
|
but.Text = but.Text.Substring(0, 15) + "..."
|
|
End If
|
|
AddHandler but.Click, AddressOf clickHistitem
|
|
|
|
listItem.Items.Add(but)
|
|
c1Ribbon1.ApplicationMenu.RightPaneItems.Add(listItem)
|
|
Next
|
|
|
|
End Sub
|
|
|
|
Sub clickHistitem(sender As Object, e As System.EventArgs)
|
|
Dim but As RibbonButton = sender
|
|
Dim filename As String = but.Tag.ToString()
|
|
|
|
If MsgBox("다음 파일을 불러오겠습니까?" + vbCrLf + filename, MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "확인") <> MsgBoxResult.Yes Then Return
|
|
|
|
Func_Open_OD(filename)
|
|
End Sub
|
|
|
|
|
|
''' <summary>
|
|
''' 이 메뉴를 단독으로 호출하려면 우선 열려있는 폼의 데이터를 완료시켜주세요 menu 에서 호출하는 경우 미리 작동됩니다.
|
|
''' </summary>
|
|
''' <param name="FileName"></param>
|
|
Private Sub Func_Save_OD(ByVal FileName As String, Optional msg As Boolean = True)
|
|
|
|
DSET1.AcceptChanges()
|
|
DSETR1.AcceptChanges()
|
|
|
|
'//파일을 열어서 템플릿이름을 가져온다
|
|
Dim Fs As New IO.FileStream(FileName, IO.FileMode.Create)
|
|
Dim Bw As New IO.BinaryWriter(Fs, System.Text.Encoding.Default)
|
|
|
|
Prj.SFType = "10" '// EcoODNew 버전
|
|
|
|
'//세이브파일구조번호저장(2)
|
|
Bw.Write(System.Text.Encoding.Default.GetBytes(Prj.SFType))
|
|
|
|
'//저장순서는 ReadMe.txt 참조
|
|
Dim UIVer() As Byte = System.Text.Encoding.Default.GetBytes("2017062000")
|
|
Bw.Write(UIVer)
|
|
|
|
Dim LGVer() As Byte = System.Text.Encoding.Default.GetBytes("2017062000")
|
|
Bw.Write(LGVer)
|
|
|
|
'//템플릿 이름 저장(100한글 50자)
|
|
Dim Name() As Byte = System.Text.Encoding.Default.GetBytes(Prj.Name)
|
|
ReDim Preserve Name(99)
|
|
Bw.Write(Name)
|
|
|
|
'//템플릿 설명 저장(256 한글 128자)
|
|
Dim Desc() As Byte = System.Text.Encoding.Default.GetBytes(Prj.Desc)
|
|
ReDim Preserve Desc(255)
|
|
Bw.Write(Desc)
|
|
|
|
'//템플릿 생성시간
|
|
Bw.Write(System.Text.Encoding.Default.GetBytes(Prj.MakeTime))
|
|
|
|
'//템플릿 최종변경시간(항상현재시간을 저장한다)
|
|
Bw.Write(System.Text.Encoding.Default.GetBytes(CStr(Format(Now, "yyyy-MM-dd HH:mm:ss"))))
|
|
|
|
'Select Case Prj.SFType
|
|
' Case "01" '//암호 8바이트추가한다.
|
|
' If Prj.Password.Length > 8 Then
|
|
' MsgBox("암호의길이가 8을 초과합니다" & vbCrLf & "암호는 저장되지않습니다", MsgBoxStyle.Information, "확인")
|
|
' Prj.Password = ""
|
|
' End If
|
|
' Dim Pass() As Byte = System.Text.Encoding.Default.GetBytes(Prj.Password)
|
|
' ReDim Preserve Pass(7)
|
|
' Bw.Write(Pass)
|
|
|
|
'End Select
|
|
|
|
'//1번쨰 데이터소스를 저장합니다.
|
|
Dim Pos1 As Int64 = Bw.BaseStream.Position
|
|
DSET1.WriteXml(Fs)
|
|
Dim Pos1e As Int64 = Bw.BaseStream.Position
|
|
Dim Dse1Len As Int64 = Pos1e - Pos1 '//데이터셋의 길이
|
|
Bw.BaseStream.Position = Pos1 '//처음위치로이동
|
|
Bw.Write(Dse1Len) '//데이터셋길이저장
|
|
DSET1.WriteXml(Fs) '//데이터셋다시저장
|
|
|
|
'//계산결과를 저장한다(ExtReport) - 170414
|
|
Dim Pos2 As Int64 = Bw.BaseStream.Position
|
|
DSETR1.ExtReport.WriteXml(Fs)
|
|
Dim Pos2e As Int64 = Bw.BaseStream.Position
|
|
Dim Dse2Len As Int64 = Pos2e - Pos2 '//데이터셋의 길이
|
|
Bw.BaseStream.Position = Pos2 '//처음위치로이동
|
|
Bw.Write(Dse2Len) '//데이터셋길이저장
|
|
DSETR1.ExtReport.WriteXml(Fs) '//데이터셋다시저장
|
|
|
|
ENDSTAT: '//오류발생시 강제종료를 위한 분기문
|
|
Bw.Flush()
|
|
Bw.Close()
|
|
Fs.Close()
|
|
|
|
'//파일열때랑 저장할때(새이름포함) 이름이 바뀔수잇으므로 해당 이벤트에만 화면을 갱신할거에요~
|
|
'Me.lbl_filename.Text = Prj.FileName.Substring(Prj.FileName.LastIndexOf("\") + 1)
|
|
|
|
'Dim 암호화 As Boolean = False
|
|
'If 암호화 Then
|
|
' Dim Desbuf() As Byte = {}
|
|
' Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(Prj.FileName)
|
|
' Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42})
|
|
' My.Computer.FileSystem.WriteAllBytes(Prj.FileName, Desbuf, False)
|
|
'End If
|
|
|
|
If msg Then
|
|
MsgBox("파일이 저장되었습니다", MsgBoxStyle.Information, "확인")
|
|
End If
|
|
|
|
|
|
'Me.bt_desc.PerformClick()
|
|
|
|
'Bw.Write(CStr(Prj.UIVersion))
|
|
'Bw.Write(CStr(Prj.LGVersino))
|
|
'Bw.Write(CStr(IIf(Prj.Name = "", "프로젝트이름", Prj.Name)))
|
|
'Bw.Write(CStr(IIf(Prj.Desc = "", "프로젝트설명", Prj.Desc)))
|
|
''//템플릿 생성시간
|
|
'Bw.Write(CStr(Format(Now, "yyyy-MM-dd HH:mm:ss")))
|
|
'DSET.WriteXml(Fs)
|
|
End Sub
|
|
|
|
|
|
|
|
#Region "Show_Menu"
|
|
|
|
Private Sub Menu_시작화면()
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
Show_Menu(1)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
Private Sub Read_SEtting()
|
|
Work_msg("설정을 확인하는중")
|
|
|
|
'프로젝트 버젼정보
|
|
Prj.MaxUI = "20091231"
|
|
Prj.MaxLG = "20091231"
|
|
Prj.Admin = True
|
|
Prj.Password = "" '//암호는 기본해제되어있음
|
|
|
|
Try
|
|
For Each A As Net.NetworkInformation.NetworkInterface In ArinNet.MyNet.GetMacArray
|
|
If A.NetworkInterfaceType <> Net.NetworkInformation.NetworkInterfaceType.Loopback Then
|
|
Prj.CUrMac = A.GetPhysicalAddress.ToString
|
|
End If
|
|
Next
|
|
|
|
Dim ipentry As Net.IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName)
|
|
For Each C As Net.IPAddress In ipentry.AddressList
|
|
If C.ToString.Length <= 15 AndAlso C.ToString.Length > 4 Then
|
|
Prj.CUrIP = C.ToString
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error - Network")
|
|
End Try
|
|
|
|
|
|
'//데이터디렉토리정보를 확인한다 이곳에서 데이터베이스및 기타 설정파일을 저장하게한다
|
|
'//이는 인터넷설치버젼의경우 사용자폴더로 들어가기떄문이다
|
|
Work_msg("데이터폴더를 확인합니다")
|
|
Try
|
|
If DataDir.Exists = False Then DataDir.Create() '//데이터폴더가없다면 생성
|
|
If TemplateDir.Exists = False Then
|
|
TemplateDir.Create()
|
|
'If System.IO.File.Exists(My.Application.Info.DirectoryPath & "\template\sample.tpl") = True Then
|
|
' My.Computer.FileSystem.CopyFile(My.Application.Info.DirectoryPath & "\template\sample.tpl", TemplateDir.FullName & "\sample.tpl", True)
|
|
'End If
|
|
End If
|
|
|
|
Work_msg("기본정보를 설정합니다")
|
|
Setting = New arUtil.Setting() ' CEnergy.MyINI(DataDir.FullName & "\arinwaret4.ini")
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error - Setting")
|
|
End Try
|
|
|
|
Work_msg("")
|
|
Me.Activate()
|
|
End Sub
|
|
|
|
Private Sub Read_PreFile(ByVal i As Short)
|
|
'If Prj.LoginTime = "" Then
|
|
' MsgBox("먼저 로그인을 하세요", MsgBoxStyle.Information, "확인")
|
|
' Return
|
|
'End If
|
|
If PreFile(i).Trim <> "" Then
|
|
If MsgBox(PreFile(i) & "파일을 불러오시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "불러오기") <> MsgBoxResult.Ok Then Return
|
|
Dim Filename As String = PreFile(i)
|
|
If System.IO.File.Exists(Filename) = True Then
|
|
Me.Func_Open_OD(Filename)
|
|
Else
|
|
MsgBox("해당 파일이 존재하지 않습니다." + vbCrLf + PreFile(i), MsgBoxStyle.Critical, "확인")
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
#Region "Top Menu"
|
|
|
|
Private Sub Menu_Open()
|
|
'.Filter = "템플릿파일(*.ecl;*.ecl2)|*.ecl;*.ecl2|모든파일(*.*)|*.*",
|
|
'Od.InitialDirectory = TemplteDir.FullName
|
|
Dim Od As New OpenFileDialog With {
|
|
.FileName = Prj.FileName,
|
|
.Filter = "템플릿파일(*." + FileExt + ")|*." + FileExt + "|모든파일(*.*)|*.*",
|
|
.FilterIndex = 0
|
|
}
|
|
|
|
|
|
If Od.ShowDialog <> Windows.Forms.DialogResult.OK Then Return
|
|
|
|
|
|
Func_Open_OD(Od.FileName)
|
|
End Sub
|
|
|
|
Private Sub Menu_New()
|
|
'물어야하니 if
|
|
If MsgBox("새파일을 작성하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return '//ok 안하면 빠져나가기
|
|
Dim new_string As String = ""
|
|
|
|
new_string = "\basefile\new." + FileExt
|
|
|
|
'//원본샘플파일
|
|
Dim Srcfile As New System.IO.FileInfo(My.Application.Info.DirectoryPath & new_string)
|
|
If Srcfile.Exists = False Then
|
|
MsgBox("원본샘플파일(" + new_string + ")이 존재하지않습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
|
|
Dim SD As New SaveFileDialog With {
|
|
.FileName = "new" & Format(Now, "mmdd") & "." + FileExt,
|
|
.Filter = "데이터파일(*." + FileExt + ")|*." + FileExt
|
|
}
|
|
|
|
'//저장할 파일명을 입력안하면 빠져나가기
|
|
If SD.ShowDialog <> Windows.Forms.DialogResult.OK Then Return
|
|
|
|
'//복사해서 열어주기
|
|
If System.IO.File.Exists(SD.FileName) Then System.IO.File.Delete(SD.FileName)
|
|
Srcfile.CopyTo(SD.FileName)
|
|
Me.Func_Open_OD(SD.FileName, True)
|
|
End Sub
|
|
|
|
#End Region
|
|
|
|
|
|
'''현재열려있는 메뉴를 닫습니다.
|
|
Private Sub Close_menu()
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
|
|
If Me.OpenedForm <> E_MenuIdx.NONE Then
|
|
MsgBox("현재열려있는폼 :" + Me.OpenedForm.ToString())
|
|
|
|
End If
|
|
End Sub
|
|
|
|
'''메뉴인덱스에해당하는 폼을 반환합니다.
|
|
Private Function GetFormfromMenuIDX(nidx As E_MenuIdx) As CForm
|
|
Dim f As CForm
|
|
Select Case nidx
|
|
Case E_MenuIdx.Form1
|
|
f = Frm_1_Basic
|
|
Case E_MenuIdx.Form2
|
|
f = Frm_2_Build
|
|
Case E_MenuIdx.Form3
|
|
f = Frm_3_Mach
|
|
Case E_MenuIdx.Form5
|
|
f = Frm_5_New
|
|
Case Else
|
|
f = Nothing
|
|
End Select
|
|
Return f
|
|
End Function
|
|
Private Function GetMenuIDX(tagstring As String) As E_MenuIdx
|
|
Dim v As Array = [Enum].GetValues(GetType(E_MenuIdx))
|
|
For i As Integer = 0 To v.Length - 1
|
|
Dim val As Integer = v(i)
|
|
Dim str As String = [Enum].GetName(GetType(E_MenuIdx), val)
|
|
If str = tagstring Then
|
|
Return val
|
|
End If
|
|
Next
|
|
Return E_MenuIdx.NONE
|
|
End Function
|
|
|
|
Dim CurFormName As String = "Nothing" '//2011.06.03 신규추가
|
|
|
|
Public Sub Func_Calc_OD()
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
DSET1.AcceptChanges()
|
|
DSETR1.AcceptChanges()
|
|
|
|
|
|
If DSET1.tbl_Desc.Rows.Count < 1 Then
|
|
MsgBox("일반사항정보가 입력되지 않았습니다", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인")
|
|
Return
|
|
End If
|
|
|
|
Dim drArea As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0)
|
|
If drArea.IsbuildareaNull() OrElse drArea.buildarea = "0" Then
|
|
MsgBox("지역정보가 입력되지 않았습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
|
|
'//
|
|
If DSET1.tbl_type.Select("code <> '0'").Length < 1 Then
|
|
MsgBox("층별개요가 입력되지 않았습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
If DSET1.tbl_yk.Select("code <> '0'").Length < 1 Then
|
|
MsgBox("열관류율이 입력되지 않았습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
If DSET1.tbl_myoun.Select("code <> '0'").Length < 1 Then
|
|
MsgBox("입력면 정보가 입력되지 않았습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
If DSET1.tbl_nanbangkiki.Select("code <> '0'").Length + DSET1.tbl_nangbangkiki.Select("code <> '0'").Length < 1 Then
|
|
MsgBox("냉난방기기 정보가 입력되지 않았습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
|
|
'//난방기기데이터검사 170628 0005
|
|
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0'")
|
|
If dr.열생산기기방식 = "히트펌프" Then
|
|
Dim 정격보일러COP As String = dr.정격보일러COP
|
|
If 정격보일러COP = "" Then 정격보일러COP = "0"
|
|
Dim fcop As Decimal = TOSG(정격보일러COP)
|
|
If fcop <= 0 Then
|
|
MsgBox("히트펌프의 성적계수가 입력되지 않았습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
Else
|
|
'정격보일러효율
|
|
Dim 정격보일러효율 As String = dr.정격보일러효율
|
|
If 정격보일러효율 = "" Then 정격보일러효율 = "0"
|
|
Dim fcop As Decimal = TOSG(정격보일러효율)
|
|
If fcop <= 0 AndAlso dr.열생산기기방식 <> "지역난방" Then
|
|
MsgBox(dr.열생산기기방식 + "의 기기효율이 입력되지 않았습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
'If Frm_Calc.ShowDialog <> Windows.Forms.DialogResult.OK Then Return
|
|
Dim Type As CalculatorOD.ECalc = CalculatorOD.ECalc.All
|
|
|
|
If MsgBox("계산을 시작하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
|
|
|
|
Work_msg("준비중...")
|
|
Frm_Work.ProgressBar1.Visible = True
|
|
Frm_Work.ProgressBar1.Maximum = 12
|
|
Frm_Work.ProgressBar1.Minimum = 0
|
|
Frm_Work.ProgressBar1.Value = 0
|
|
'Frm_Work.TopMost = True
|
|
Frm_Work.Show()
|
|
|
|
|
|
CalcO = New CalculatorOD(Prj.LGVersino) '//계삭식클래스 초기화
|
|
|
|
Dim St As Date = Now '//계산시작
|
|
Dim calcOK As Boolean = False
|
|
|
|
Try
|
|
calcOK = CalcO.Start(Type, Log)
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
|
|
Log.AppendLine(ex.Message + ex.StackTrace)
|
|
calcOK = False
|
|
End Try
|
|
|
|
If calcOK Then '//파라미터 True 라면 소요량이 추가로 게산된다.
|
|
CalcO.Summary.All()
|
|
Else
|
|
Frm_Work.Dispose()
|
|
MsgBox("계산이 완료되지 않았습니다", MsgBoxStyle.Information, "확인")
|
|
If Log.ToString <> "" Then
|
|
Dim fn As String = AppDomain.CurrentDomain.BaseDirectory + "\\Error.txt"
|
|
My.Computer.FileSystem.WriteAllText(fn, Log.ToString, False)
|
|
Shell("notepad " + fn, AppWinStyle.NormalFocus)
|
|
End If
|
|
Return '/리턴문에의해서 밑에 줄은 실행이 되지않습니다.
|
|
End If
|
|
|
|
Dim Et As Date = Now '//게산종료
|
|
Frm_Work.Dispose()
|
|
If Log.ToString <> "" Then '//이건 오류발생시 로그를 기록하게한건데..작동안한거보니 어딘가에서 사용이 꺼져잇나보네요. 그리중요한건 아님.
|
|
Dim fn As String = AppDomain.CurrentDomain.BaseDirectory + "\\Error.txt"
|
|
My.Computer.FileSystem.WriteAllText(fn, Log.ToString, False)
|
|
Shell("notepad " + fn, AppWinStyle.NormalFocus)
|
|
Else
|
|
|
|
Func_Calc_OD_ExtReport()
|
|
|
|
Frm_v20091231_Report.Visible = False
|
|
Frm_v20091231_Report.Show()
|
|
Frm_v20091231_Report.Visible = False
|
|
'MsgBox("계산완료" & vbCrLf & CType(Et - St, System.TimeSpan).ToString, MsgBoxStyle.Information, "경과시간")
|
|
Frm_v20091231_Report.Visible = True
|
|
End If
|
|
End Sub
|
|
|
|
|
|
''' <summary>
|
|
''' 17-05-14 소요량 평가서 값 계산
|
|
''' </summary>
|
|
''' <remarks></remarks>
|
|
Public Sub Func_Calc_OD_ExtReport()
|
|
|
|
Dim IDX As Integer = 0
|
|
|
|
Dim Total2 As Double = 0.0
|
|
Dim Total1 As Double = 0.0
|
|
For Each Dr0 As DS.tbl_typeRow In DSET1.tbl_type.Rows
|
|
Dim multi As Double = 1.0
|
|
Select Case Dr0.시설용도
|
|
Case "0011" '교육연구시설(초중고)"
|
|
multi = 1.12
|
|
Case "0012" '교육연구시설(etc)
|
|
multi = 0.98
|
|
End Select
|
|
Total1 += Dr0.면적 * multi
|
|
Total2 += Dr0.면적
|
|
Next
|
|
Dim addmulti As Double = 0
|
|
If Total2 <> 0 Then
|
|
addmulti = Total1 / Total2
|
|
Else
|
|
addmulti = 1.0
|
|
End If
|
|
|
|
|
|
DSETR1.ExtReport.Clear()
|
|
Dim NewDR As DSR.ExtReportRow = DSETR1.ExtReport.NewExtReportRow
|
|
|
|
'//c001 = 냉.난방면적 => 2.층별개요 - 비주거면적 합
|
|
Dim P(100) As String
|
|
For i As Integer = 0 To P.GetUpperBound(0)
|
|
P(i) = ""
|
|
Next
|
|
|
|
|
|
Dim _C001 As Single = 0
|
|
For Each dr As DS.tbl_typeRow In DSET1.tbl_type.Rows
|
|
If Not dr.Is면적Null Then _C001 += dr.면적
|
|
Next
|
|
|
|
P(0) = _C001.ToString("N2") + "(㎡)"
|
|
|
|
|
|
|
|
'//C002 = 지상층연면적 = 2.연면적- 지상층
|
|
'//C003 = 지상층연면적 = 2.연면적- 지하층
|
|
'//c004 = 층고
|
|
'//c005 = 천장고
|
|
'//c006 = 지상층수
|
|
'//c007 = 지하층수
|
|
Dim _C002 As Single = 0
|
|
Dim _C003 As Single = 0
|
|
'Dim C004 As String = ""
|
|
'Dim C005 As String = ""
|
|
'Dim C006 As String = ""
|
|
'Dim C007 As String = ""
|
|
If DSET1.tbl_Desc.Rows.Count > 0 Then
|
|
Dim drDesc As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0)
|
|
If IsNumeric(drDesc.buildm23) Then _C002 = TOSG(T, drDesc.buildm23)
|
|
If IsNumeric(drDesc.buildm21) Then _C003 = TOSG(T, drDesc.buildm21)
|
|
If Not drDesc.Is층고Null() Then P(3) = drDesc.층고 + "(m)"
|
|
If Not drDesc.Is천장고Null() Then P(4) = drDesc.천장고 + "(m)"
|
|
If Not drDesc.Isbuilds2Null() Then P(5) = drDesc.builds2 + "층"
|
|
If Not drDesc.Isbuilds1Null() Then P(6) = drDesc.builds1 + "층"
|
|
End If
|
|
|
|
P(1) = _C002.ToString("N2") + "(㎡)"
|
|
P(2) = _C003.ToString("N2") + "(㎡)"
|
|
|
|
'//C008 ~ C0015 ( 입력면의 면적 합 및 열관류율)
|
|
'Dim C008, C009, C010, C011, C012, C013, C014, C015 As String
|
|
'C008 = ""
|
|
'C009 = ""
|
|
'C010 = ""
|
|
'C011 = ""
|
|
'C012 = ""
|
|
'C013 = ""
|
|
'C014 = ""
|
|
'C015 = ""
|
|
Dim 벽체면적합 As Single = 0
|
|
Dim 창문면적합 As Single = 0
|
|
Dim 지붕면적합 As Single = 0
|
|
Dim 바닥면적합 As Single = 0
|
|
Dim 벽체열관류율합 As Single = 0
|
|
Dim 창문열관류율합 As Single = 0
|
|
Dim 지붕열관류율합 As Single = 0
|
|
Dim 바닥열관류율합 As Single = 0
|
|
For Each dr면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("code <> '0' and isnull(열관류율2,'') <> ''")
|
|
Dim 열관류코드 As String = dr면.열관류율2
|
|
|
|
For Each dr열 As DS.tbl_ykRow In DSET1.tbl_yk.Select("code='" + 열관류코드 + "'")
|
|
Select Case CInt(dr열.면형태)
|
|
Case 0 '//외벽,벽체
|
|
벽체면적합 += TOSG(T, dr면.건축부위면적)
|
|
벽체열관류율합 += TOSG(T, dr면.열관류율) * TOSG(T, dr면.건축부위면적)
|
|
Case 3 '//내벽,벽체
|
|
벽체면적합 += TOSG(T, dr면.건축부위면적)
|
|
벽체열관류율합 += TOSG(T, dr면.열관류율) * TOSG(T, dr면.건축부위면적) * 0.7
|
|
Case 1 '//외벽,지붕
|
|
지붕면적합 += TOSG(T, dr면.건축부위면적)
|
|
지붕열관류율합 += TOSG(T, dr면.열관류율) * TOSG(T, dr면.건축부위면적)
|
|
Case 4 '//내벽,지붕
|
|
지붕면적합 += TOSG(T, dr면.건축부위면적)
|
|
지붕열관류율합 += TOSG(T, dr면.열관류율) * TOSG(T, dr면.건축부위면적) * 0.7
|
|
Case 2 '//외벽,바닥
|
|
바닥면적합 += TOSG(T, dr면.건축부위면적)
|
|
바닥열관류율합 += TOSG(T, dr면.열관류율) * TOSG(T, dr면.건축부위면적)
|
|
Case 5 '//내벽,바닥
|
|
바닥면적합 += TOSG(T, dr면.건축부위면적)
|
|
바닥열관류율합 += TOSG(T, dr면.열관류율) * TOSG(T, dr면.건축부위면적) * 0.7
|
|
Case 7, 10, 12 '//외부창
|
|
창문면적합 += TOSG(T, dr면.건축부위면적)
|
|
창문열관류율합 += TOSG(T, dr면.열관류율) * TOSG(T, dr면.건축부위면적)
|
|
Case 8, 11, 13 '//내부창
|
|
창문면적합 += TOSG(T, dr면.건축부위면적)
|
|
창문열관류율합 += TOSG(T, dr면.열관류율) * TOSG(T, dr면.건축부위면적) * 0.8
|
|
End Select
|
|
Next
|
|
Next
|
|
|
|
P(7) = 벽체면적합.ToString("N2")
|
|
P(8) = 창문면적합.ToString("N2")
|
|
P(9) = 지붕면적합.ToString("N2")
|
|
P(10) = 바닥면적합.ToString("N2")
|
|
|
|
If 벽체면적합 > 0 Then
|
|
P(11) = (벽체열관류율합 / 벽체면적합).ToString("N3")
|
|
End If
|
|
|
|
If 창문면적합 > 0 Then
|
|
P(12) = (창문열관류율합 / 창문면적합).ToString("N3")
|
|
End If
|
|
|
|
If 지붕면적합 > 0 Then
|
|
P(13) = (지붕열관류율합 / 지붕면적합).ToString("N3")
|
|
End If
|
|
|
|
If 바닥면적합 > 0 Then
|
|
P(14) = (바닥열관류율합 / 바닥면적합).ToString("N3")
|
|
End If
|
|
|
|
|
|
'//기계 - 난방
|
|
Dim 난방_MAX_기기용량합 As Single = 0
|
|
Dim 난방_MAX_기기명칭 As String = ""
|
|
Dim 난방_MAX_기기방식 As String = ""
|
|
Dim 난방_MAX_연료방식 As String = ""
|
|
Dim 난방_SUM_기기용량합 As Single = 0
|
|
|
|
Dim 난방_용량가중효율 As Single = 0
|
|
Dim 난방_용량가중COP As Single = 0
|
|
|
|
Dim 난방_용량가중효율_MAX_기기용량 As String = 0
|
|
Dim 난방_SUM_펌프동력 As Single = 0
|
|
Dim 난방_SUM_전기_기기용량 As Single = 0
|
|
Dim 난방_SUM_전체_기기용량 As Single = 0
|
|
|
|
Dim 급탕_MAX_기기용량합 As Single = 0
|
|
Dim 급탕_MAX_기기명칭 As String = ""
|
|
Dim 급탕_MAX_기기방식 As String = ""
|
|
Dim 급탕_MAX_연료방식 As String = ""
|
|
|
|
Dim 급탕_SUM_기기용량합 As Single = 0
|
|
|
|
Dim 급탕_용량가중효율 As Single = 0
|
|
Dim 급탕_용량가중COP As Single = 0
|
|
|
|
Dim 급탕_용량가중효율_MAX_기기용량 As String = 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'")
|
|
|
|
난방_SUM_전체_기기용량 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
급탕_SUM_전체_기기용량 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
|
|
'//보일러,지역난방,전기보일러,히트펌프
|
|
Dim 난방기기용량합 As Single = 0
|
|
Dim 급탕기기용량합 As Single = 0
|
|
|
|
If dr.난방급탕구분 = "난방용" Then
|
|
난방_SUM_기기용량합 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
난방_SUM_펌프동력 += TOSG(T, dr.펌프동력)
|
|
난방기기용량합 = TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
|
|
If 난방기기용량합 > 난방_MAX_기기용량합 Then
|
|
난방_MAX_기기용량합 = 난방기기용량합
|
|
난방_MAX_기기명칭 = dr.설명
|
|
난방_MAX_기기방식 = dr.열생산기기방식
|
|
난방_MAX_연료방식 = dr.사용연료
|
|
End If
|
|
|
|
|
|
|
|
Select Case dr.열생산기기방식
|
|
Case "히트펌프"
|
|
|
|
If dr.사용연료 = "전기" Then
|
|
난방_SUM_전기_기기용량 += 난방기기용량합
|
|
End If
|
|
|
|
If 난방기기용량합 > 난방_용량가중효율_MAX_기기용량 Then
|
|
난방_용량가중효율_MAX_기기용량 = 난방기기용량합
|
|
난방_용량가중COP = dr.정격보일러COP
|
|
End If
|
|
Case "지역난방"
|
|
If 난방기기용량합 > 난방_용량가중효율_MAX_기기용량 Then
|
|
난방_용량가중효율_MAX_기기용량 = 난방기기용량합
|
|
난방_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
Case "전기보일러"
|
|
|
|
If dr.사용연료 = "전기" Then
|
|
난방_SUM_전기_기기용량 += 난방기기용량합
|
|
End If
|
|
|
|
If 난방기기용량합 > 난방_용량가중효율_MAX_기기용량 Then
|
|
난방_용량가중효율_MAX_기기용량 = 난방기기용량합
|
|
난방_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
Case "보일러"
|
|
If 난방기기용량합 > 난방_용량가중효율_MAX_기기용량 Then
|
|
난방_용량가중효율_MAX_기기용량 = 난방기기용량합
|
|
난방_용량가중COP = dr.정격보일러COP
|
|
End If
|
|
End Select
|
|
|
|
ElseIf dr.난방급탕구분 = "급탕용" Then
|
|
|
|
급탕_SUM_기기용량합 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
급탕_SUM_펌프동력 += TOSG(T, dr.펌프동력)
|
|
급탕기기용량합 = TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
If 급탕기기용량합 > 급탕_MAX_기기용량합 Then
|
|
급탕_MAX_기기용량합 = 급탕기기용량합
|
|
급탕_MAX_기기명칭 = dr.설명
|
|
급탕_MAX_기기방식 = dr.열생산기기방식
|
|
급탕_MAX_연료방식 = dr.사용연료
|
|
End If
|
|
|
|
Select Case dr.열생산기기방식
|
|
Case "히트펌프"
|
|
|
|
If dr.사용연료 = "전기" Then
|
|
급탕_SUM_전기_기기용량 += 급탕기기용량합
|
|
End If
|
|
|
|
If 급탕기기용량합 > 급탕_용량가중효율_MAX_기기용량 Then
|
|
급탕_용량가중효율_MAX_기기용량 = 급탕기기용량합
|
|
급탕_용량가중COP = dr.정격보일러COP
|
|
End If
|
|
Case "지역난방"
|
|
If 급탕기기용량합 > 급탕_용량가중효율_MAX_기기용량 Then
|
|
급탕_용량가중효율_MAX_기기용량 = 급탕기기용량합
|
|
급탕_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
Case "전기보일러"
|
|
|
|
If dr.사용연료 = "전기" Then
|
|
급탕_SUM_전기_기기용량 += 급탕기기용량합
|
|
End If
|
|
|
|
If 급탕기기용량합 > 급탕_용량가중효율_MAX_기기용량 Then
|
|
급탕_용량가중효율_MAX_기기용량 = 급탕기기용량합
|
|
급탕_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
Case "보일러"
|
|
If 급탕기기용량합 > 급탕_용량가중효율_MAX_기기용량 Then
|
|
급탕_용량가중효율_MAX_기기용량 = 급탕기기용량합
|
|
급탕_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
End Select
|
|
|
|
ElseIf dr.난방급탕구분 = "난방급탕용" Then
|
|
난방_SUM_기기용량합 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
난방_SUM_펌프동력 += TOSG(T, dr.펌프동력)
|
|
난방기기용량합 = TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
|
|
급탕_SUM_기기용량합 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
급탕_SUM_펌프동력 += TOSG(T, dr.펌프동력)
|
|
급탕기기용량합 = TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
|
|
If 난방기기용량합 > 난방_MAX_기기용량합 Then
|
|
난방_MAX_기기용량합 = 난방기기용량합
|
|
난방_MAX_기기명칭 = dr.설명
|
|
난방_MAX_기기방식 = dr.열생산기기방식
|
|
난방_MAX_연료방식 = dr.사용연료
|
|
|
|
|
|
End If
|
|
|
|
If 급탕기기용량합 > 급탕_MAX_기기용량합 Then
|
|
급탕_MAX_기기용량합 = 급탕기기용량합
|
|
급탕_MAX_기기명칭 = dr.설명
|
|
급탕_MAX_기기방식 = dr.열생산기기방식
|
|
급탕_MAX_연료방식 = dr.사용연료
|
|
End If
|
|
|
|
Select Case dr.열생산기기방식
|
|
Case "히트펌프"
|
|
|
|
If dr.사용연료 = "전기" Then
|
|
급탕_SUM_전기_기기용량 += 급탕기기용량합
|
|
난방_SUM_전기_기기용량 += 난방기기용량합
|
|
End If
|
|
|
|
If 난방기기용량합 > 난방_용량가중효율_MAX_기기용량 Then
|
|
난방_용량가중효율_MAX_기기용량 = 난방기기용량합
|
|
난방_용량가중COP = dr.정격보일러COP
|
|
End If
|
|
If 급탕기기용량합 > 급탕_용량가중효율_MAX_기기용량 Then
|
|
급탕_용량가중효율_MAX_기기용량 = 급탕기기용량합
|
|
급탕_용량가중COP = dr.정격보일러COP
|
|
End If
|
|
Case "지역난방"
|
|
If 난방기기용량합 > 난방_용량가중효율_MAX_기기용량 Then
|
|
난방_용량가중효율_MAX_기기용량 = 난방기기용량합
|
|
난방_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
If 급탕기기용량합 > 급탕_용량가중효율_MAX_기기용량 Then
|
|
급탕_용량가중효율_MAX_기기용량 = 급탕기기용량합
|
|
급탕_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
|
|
Case "전기보일러"
|
|
|
|
If dr.사용연료 = "전기" Then
|
|
급탕_SUM_전기_기기용량 += 급탕기기용량합
|
|
난방_SUM_전기_기기용량 += 난방기기용량합
|
|
End If
|
|
|
|
If 난방기기용량합 > 난방_용량가중효율_MAX_기기용량 Then
|
|
난방_용량가중효율_MAX_기기용량 = 난방기기용량합
|
|
난방_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
If 급탕기기용량합 > 급탕_용량가중효율_MAX_기기용량 Then
|
|
급탕_용량가중효율_MAX_기기용량 = 급탕기기용량합
|
|
급탕_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
|
|
Case "보일러"
|
|
|
|
If 난방기기용량합 > 난방_용량가중효율_MAX_기기용량 Then
|
|
난방_용량가중효율_MAX_기기용량 = 난방기기용량합
|
|
난방_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
If 급탕기기용량합 > 급탕_용량가중효율_MAX_기기용량 Then
|
|
급탕_용량가중효율_MAX_기기용량 = 급탕기기용량합
|
|
급탕_용량가중효율 = dr.정격보일러효율
|
|
End If
|
|
|
|
End Select
|
|
|
|
End If
|
|
Next
|
|
|
|
P(82) = 난방_MAX_기기명칭
|
|
P(15) = 난방_SUM_기기용량합.ToString("N2") + "(㎾)"
|
|
If 난방_MAX_기기방식 = "히트펌프" Then
|
|
'//동일연룍방식 찾기
|
|
Dim SUM_가중_분자 As Double = 0
|
|
Dim SUM_가중_분모 As Double = 0
|
|
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and 열생산기기방식='" + 난방_MAX_기기방식 + "' and 사용연료='" + 난방_MAX_연료방식 + "'")
|
|
SUM_가중_분자 += dr.정격보일러COP * TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
SUM_가중_분모 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
Next
|
|
|
|
If SUM_가중_분모 <= 0 Then
|
|
P(16) = "(COP)"
|
|
Else
|
|
P(16) = (SUM_가중_분자 / SUM_가중_분모).ToString("N2") + "(COP)" ' 난방_용량가중COP.ToString("N2") + "(COP)"
|
|
End If
|
|
|
|
Else
|
|
'//동일연룍방식 찾기
|
|
Dim SUM_가중_분자 As Double = 0
|
|
Dim SUM_가중_분모 As Double = 0
|
|
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and 열생산기기방식='" + 난방_MAX_기기방식 + "' and 사용연료='" + 난방_MAX_연료방식 + "'")
|
|
SUM_가중_분자 += dr.정격보일러효율 * TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
SUM_가중_분모 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
Next
|
|
If SUM_가중_분모 <= 0 Then
|
|
P(16) = "(%)"
|
|
Else
|
|
P(16) = (SUM_가중_분자 / SUM_가중_분모).ToString("N2") + "(%)" 'P(16) = 난방_용량가중효율.ToString("N2") + "(%)"
|
|
End If
|
|
End If
|
|
|
|
'P(17) = "" '//??
|
|
P(17) = 난방_SUM_펌프동력.ToString("N2") + "(㎾)"
|
|
P(18) = ((난방_SUM_전기_기기용량 / 난방_SUM_기기용량합) * 100).ToString("N2") + "(%)"
|
|
|
|
P(83) = 급탕_MAX_기기명칭
|
|
P(20) = 급탕_SUM_기기용량합.ToString("N2") + "(㎾)"
|
|
If 급탕_MAX_기기방식 = "히트펌프" Then
|
|
'//동일연룍방식 찾기
|
|
Dim SUM_가중_분자 As Double = 0
|
|
Dim SUM_가중_분모 As Double = 0
|
|
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and 열생산기기방식='" + 급탕_MAX_기기방식 + "' and 사용연료='" + 급탕_MAX_연료방식 + "'")
|
|
SUM_가중_분자 += dr.정격보일러COP * TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
SUM_가중_분모 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
Next
|
|
|
|
If SUM_가중_분모 <= 0 Then
|
|
P(22) = "(COP)"
|
|
Else
|
|
P(22) = (SUM_가중_분자 / SUM_가중_분모).ToString("N2") + "(COP)" 'P(22) = 급탕_용량가중COP.ToString("N2") + "(COP)"
|
|
End If
|
|
|
|
|
|
Else
|
|
'//동일연룍방식 찾기
|
|
'//동일연룍방식 찾기
|
|
Dim SUM_가중_분자 As Double = 0
|
|
Dim SUM_가중_분모 As Double = 0
|
|
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and 열생산기기방식='" + 급탕_MAX_기기방식 + "' and 사용연료='" + 급탕_MAX_연료방식 + "'")
|
|
SUM_가중_분자 += dr.정격보일러효율 * TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
SUM_가중_분모 += TOSG(T, dr.보일러정격출력) * TOSG(T, dr.보일러대수)
|
|
Next
|
|
|
|
If SUM_가중_분모 <= 0 Then
|
|
P(22) = "(%)"
|
|
Else
|
|
P(22) = (SUM_가중_분자 / SUM_가중_분모).ToString("N2") + "(%)" 'P(22) = 급탕_용량가중효율.ToString("N2") + "(%)""
|
|
End If
|
|
|
|
|
|
|
|
End If
|
|
P(23) = "" '//??
|
|
P(24) = 급탕_SUM_펌프동력.ToString("N2") + "(㎾)"
|
|
P(25) = ((급탕_SUM_전기_기기용량 / 급탕_SUM_기기용량합) * 100).ToString("N2") + "(%)"
|
|
|
|
|
|
'//냉방설비
|
|
Dim 냉방_MAX_기기용량합방식 As String = ""
|
|
Dim 냉방_MAX_기기용량합 As Single = 0
|
|
Dim 냉방_MAX_연료방식 As String = 0
|
|
Dim 냉방_SUM_기기용량합 As Single = 0
|
|
Dim 냉방_용량가중_열성능비 As String = ""
|
|
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_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0'")
|
|
Dim 기기용량합 As Single = TOSG(dr.냉동기용량) * TOSG(dr.대수)
|
|
If 기기용량합 > 냉방_MAX_기기용량합 Then
|
|
냉방_MAX_기기용량합 = 기기용량합
|
|
냉방_MAX_기기용량합방식 = dr.냉동기방식
|
|
냉방_MAX_연료방식 = dr.사용연료
|
|
End If
|
|
냉방_SUM_기기용량합 += 기기용량합 'TOSG(T, dr.냉동기용량)
|
|
냉방_용량가중_열성능비 = dr.열성능비 '//오류있음
|
|
냉방_SUM_냉수펌프 += TOSG(T, dr.냉수펌프동력)
|
|
냉방_SUM_냉각수펌프 += TOSG(T, dr.냉각수펌프동력)
|
|
If dr.냉동기방식 = "압축식" Then
|
|
냉방_SUM_압축식 += 기기용량합
|
|
End If
|
|
냉방_SUM_냉동기방식 += 기기용량합
|
|
Next
|
|
P(84) = 냉방_MAX_기기용량합방식
|
|
P(26) = 냉방_SUM_기기용량합.ToString("N2") + "(㎾)"
|
|
|
|
Dim 냉방_용량가중_분자 As Double = 0
|
|
Dim 냉방_용량가중_분모 As Double = 0
|
|
For Each dr As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0' and 냉동기방식='" + 냉방_MAX_기기용량합방식 + "' and 사용연료='" + 냉방_MAX_연료방식 + "'")
|
|
냉방_용량가중_분자 += TOSG(dr.열성능비) * TOSG(dr.냉동기용량) * TOSG(dr.대수)
|
|
냉방_용량가중_분모 += TOSG(dr.냉동기용량) * TOSG(dr.대수)
|
|
Next
|
|
If (냉방_용량가중_분자 < 0) Then
|
|
P(27) = "(COP)"
|
|
Else
|
|
P(27) = (냉방_용량가중_분자 / 냉방_용량가중_분모).ToString("N2") + "(COP)" ' 냉방_용량가중_열성능비 + "(COP)"
|
|
End If
|
|
|
|
|
|
P(28) = "" '//??
|
|
P(29) = 냉방_SUM_냉수펌프.ToString("N2") + "(㎾)"
|
|
P(30) = 냉방_SUM_냉각수펌프.ToString("N2") + "(㎾)"
|
|
P(31) = ((냉방_SUM_압축식 / 냉방_SUM_냉동기방식) * 100).ToString("N2") + "(%)"
|
|
|
|
'//공조설비
|
|
Dim 공조_MAX_급기풍량 As Single = 0
|
|
Dim 공조_MAX_급기풍량방식 As String = ""
|
|
Dim 공조_SUM_급기풍량 As Single = 0
|
|
Dim 공조_SUM_배기풍량 As Single = 0
|
|
Dim 공조_용량가중효율_급기 As Single = 0
|
|
Dim 공조_용량가중효율_배기 As Single = 0
|
|
Dim 공조_SUM_급기팬동력 As Single = 0
|
|
Dim 공조_SUM_배기팬동력 As Single = 0
|
|
Dim 공조_열회수율_난방 As Single = 0
|
|
Dim 공조_열회수율_냉방 As Single = 0
|
|
|
|
'급기 : 급기팬동력이 0 이 아닐때에 (급기풍량*급기정압/9.8) / (급기팬동력*102*3600)의 효율을 산출하여 급기풍량가중평균값
|
|
'배기 : 배기팬동력이 0 이 아닐때에 (배기풍량*배기정압/9.8) / (배기팬동력*102*3600)의 효율을 산출하여 배기풍량가중평균값"
|
|
|
|
Dim K1 As Single = 0
|
|
Dim K2 As Single = 0
|
|
Dim N1 As Single = 0
|
|
Dim N2 As Single = 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_kongjoRow In DSET1.tbl_kongjo.Select("code <> '0'")
|
|
Dim 급기풍량 As Single = TOSG(T, dr.급기풍량) * TOSG(T, dr.대수)
|
|
Dim 급기정압 As Single = TOSG(T, dr.총압력손실급기팬)
|
|
Dim 급기팬동력 As Single = TOSG(T, dr.급기팬동력) * TOSG(T, dr.대수)
|
|
|
|
Dim 배기풍량 As Single = TOSG(T, dr.배기풍량) * TOSG(T, dr.대수)
|
|
Dim 배기정압 As Single = TOSG(T, dr.총압력손실배기팬)
|
|
Dim 배기팬동력 As Single = TOSG(T, dr.배기팬동력) * TOSG(T, dr.대수)
|
|
|
|
Dim 난방회수율 As Single = TOSG(T, dr.열회수율)
|
|
Dim 냉방회수율 As Single = TOSG(T, dr.열회수율_냉방)
|
|
|
|
'//열교환기유형이 없는경우 회수율값 초기화
|
|
If dr.열교환기유형 = "0" OrElse dr.열교환기유형 = "열회수불가" Then
|
|
난방회수율 = 0
|
|
냉방회수율 = 0
|
|
End If
|
|
|
|
N1 += 난방회수율 * 급기풍량
|
|
N2 += 냉방회수율 * 급기풍량
|
|
|
|
If 급기팬동력 > 0 Then
|
|
K1 += ((급기풍량 * 급기정압 / 9.8) / (급기팬동력 * 102 * 3600)) * 급기풍량
|
|
End If
|
|
|
|
If 배기팬동력 > 0 Then
|
|
K2 += ((배기풍량 * 배기정압 / 9.8) / (배기팬동력 * 102 * 3600)) * 배기풍량
|
|
End If
|
|
|
|
If 급기풍량 > 공조_MAX_급기풍량 Then
|
|
공조_MAX_급기풍량 = 급기풍량
|
|
공조_MAX_급기풍량방식 = dr.공조방식
|
|
End If
|
|
공조_SUM_급기풍량 += TOSG(T, dr.급기풍량) * TOSG(T, dr.대수)
|
|
공조_SUM_배기풍량 += TOSG(T, dr.배기풍량) * TOSG(T, dr.대수)
|
|
공조_SUM_급기팬동력 += TOSG(T, dr.급기팬동력) * TOSG(T, dr.대수)
|
|
공조_SUM_배기팬동력 += TOSG(T, dr.배기팬동력) * TOSG(T, dr.대수)
|
|
|
|
If dr.열교환기유형 <> "0" OrElse dr.열교환기유형 <> "열회수불가" Then
|
|
Sum_급기풍량 += 급기풍량
|
|
Sum_배기풍량 += 배기풍량
|
|
|
|
Sum_난방회수율 += 난방회수율
|
|
Sum_냉방회수율 += 냉방회수율
|
|
End If
|
|
|
|
|
|
|
|
Next
|
|
|
|
If Sum_급기풍량 > 0 Then 공조_용량가중효율_급기 = ((K1 / Sum_급기풍량) * 100).ToString("N2")
|
|
If Sum_배기풍량 > 0 Then 공조_용량가중효율_배기 = ((K2 / Sum_배기풍량) * 100).ToString("N2")
|
|
|
|
If Sum_난방회수율 > 0 Then 공조_열회수율_난방 = (N1 / Sum_급기풍량).ToString("N2") '//170827 *100제거
|
|
If Sum_냉방회수율 > 0 Then 공조_열회수율_냉방 = (N2 / Sum_급기풍량).ToString("N2")
|
|
|
|
P(85) = 공조_MAX_급기풍량방식
|
|
|
|
P(32) = "급기:" & 공조_SUM_급기풍량.ToString("N0") & "(CMH)" & vbCrLf & _
|
|
"배기:" & 공조_SUM_배기풍량.ToString("N0") & "(CMH)"
|
|
P(33) = ""
|
|
|
|
P(34) = "급기:" & 공조_용량가중효율_급기.ToString("N2") & "(%)" & vbCrLf & _
|
|
"배기:" & 공조_용량가중효율_배기.ToString("N2") & "(%)"
|
|
P(35) = ""
|
|
|
|
P(36) = "급기:" & 공조_SUM_급기팬동력.ToString("N2") & "(㎾)" & vbCrLf & _
|
|
"배기:" & 공조_SUM_배기팬동력.ToString("N2") & "(㎾)"
|
|
P(37) = ""
|
|
|
|
'P(36) = 공조_SUM_급기팬동력.ToString("N2")
|
|
'P(37) = 공조_SUM_배기팬동력.ToString("N2")
|
|
|
|
P(38) = "난방:" & 공조_열회수율_난방.ToString("N2") & "(%)" & vbCrLf & _
|
|
"냉방:" & 공조_열회수율_냉방.ToString("N2") & "(%)"
|
|
P(39) = ""
|
|
|
|
'//조명기기
|
|
Dim 조명_MAX_조명기기종류 As String = ""
|
|
Dim 조명_MAX_조명전력대수합 As Single = 0
|
|
Dim 조명_SUM_전력대수 As Single = 0
|
|
Dim 조명_SUM_LED전력대수 As Single = 0
|
|
Dim 조명_SUM_전력 As Single = 0
|
|
Dim 조명_SUM_대수 As Single = 0
|
|
Dim 조명_SUM_LED대수 As Single = 0
|
|
Dim 조명_SUM_사용면적 As Single = 0
|
|
|
|
For Each dr As DS.tbl_typeRow In DSET1.tbl_type.Select("code<>'0'", "code")
|
|
조명_SUM_사용면적 += TOSG(T, dr.면적)
|
|
Next
|
|
|
|
For Each dr As DS.tbl_lightRow In DSET1.tbl_light.Select("code <> '0'")
|
|
조명_SUM_전력 += TOSG(T, dr.조명전력)
|
|
Dim 조명전력대수합 As Single = TOSG(T, dr.조명전력) * TOSG(T, dr.대수)
|
|
|
|
조명_SUM_전력대수 += 조명전력대수합
|
|
|
|
If dr.조명종류 = "LED등" Then
|
|
조명_SUM_LED전력대수 += 조명전력대수합
|
|
조명_SUM_LED대수 += TOSG(T, dr.대수)
|
|
End If
|
|
|
|
조명_SUM_대수 += TOSG(T, dr.대수)
|
|
If 조명전력대수합 > 조명_MAX_조명전력대수합 Then
|
|
조명_MAX_조명전력대수합 = 조명전력대수합
|
|
조명_MAX_조명기기종류 = dr.조명종류
|
|
End If
|
|
|
|
' 조명_SUM_사용면적 += TOSG(T, dr.조명면적)
|
|
Next
|
|
P(40) = 조명_MAX_조명기기종류
|
|
P(41) = (조명_SUM_LED전력대수 / 1000).ToString("N2") + "(㎾)"
|
|
P(42) = (조명_SUM_전력대수 / 1000).ToString("N2") + "(㎾)"
|
|
P(43) = 조명_SUM_사용면적.ToString("N2") + "(㎡)"
|
|
P(44) = (조명_SUM_전력대수 / 조명_SUM_사용면적).ToString("N2") + "(W/㎡)"
|
|
|
|
'//신재생
|
|
Dim 태양열_MAX_면적합_집열기유형 As String = ""
|
|
Dim 태양열_MAX_면적합_집열판기울기 As String = ""
|
|
Dim 태양열_MAX_면적합_방위 As String = ""
|
|
Dim 태양열_MAX_면적합_집열효율 As String = ""
|
|
Dim 태양열_MAX_면적합 As Single = 0
|
|
Dim 태양열_SUM_면적 As Single = 0
|
|
|
|
Dim Grp_E As New Dictionary(Of String, Single)
|
|
'//group sum
|
|
For Each dr As DS.tbl_new_energyRow In DSET1.tbl_new_energy.Select("code <> '0'")
|
|
If Grp_E.ContainsKey(dr.집열기유형) Then
|
|
Dim oldValue As Single = Grp_E.Item(dr.집열기유형)
|
|
Grp_E.Item(dr.집열기유형) = oldValue + TOSG(T, dr.집열판면적)
|
|
Else
|
|
Grp_E.Add(dr.집열기유형, TOSG(T, dr.집열판면적))
|
|
End If
|
|
Next
|
|
|
|
|
|
For Each dr As System.Collections.Generic.KeyValuePair(Of String, Single) In Grp_E
|
|
태양열_SUM_면적 += TOSG(T, dr.Value)
|
|
If dr.Value > 태양열_MAX_면적합 Then
|
|
태양열_MAX_면적합 = dr.Value
|
|
태양열_MAX_면적합_집열기유형 = dr.Key
|
|
End If
|
|
Next
|
|
|
|
If Not String.IsNullOrEmpty(태양열_MAX_면적합_집열기유형) Then
|
|
Dim dr As DS.tbl_new_energyRow = DSET1.tbl_new_energy.Select("집열기유형 = '" + 태양열_MAX_면적합_집열기유형 + "'")(0)
|
|
태양열_MAX_면적합_집열판기울기 = "45도" ' dr.집열판기울기
|
|
태양열_MAX_면적합_방위 = dr.집열판방위
|
|
태양열_MAX_면적합_집열효율 = dr.집열효율
|
|
End If
|
|
|
|
If Not String.IsNullOrEmpty(태양열_MAX_면적합_집열기유형) Then
|
|
P(45) = 태양열_MAX_면적합_집열기유형
|
|
P(46) = 태양열_SUM_면적.ToString("N2") + "(㎡)"
|
|
P(47) = 태양열_MAX_면적합_집열판기울기
|
|
P(48) = 태양열_MAX_면적합_방위
|
|
If (태양열_MAX_면적합_집열기유형 = "성능치입력") Then P(49) = 태양열_MAX_면적합_집열효율 + "(%)"
|
|
End If
|
|
|
|
|
|
Dim 태양광_MAX_면적합_모듈종류 As String = ""
|
|
Dim 태양광_MAX_면적합_모듈기울기 As String = ""
|
|
Dim 태양광_MAX_면적합_모듈방위 As String = ""
|
|
Dim 태양광_MAX_면적합_모듈효율 As String = ""
|
|
Dim 태양광_MAX_면적합 As Single = 0
|
|
Dim 태양광_SUM_면적 As Single = 0
|
|
|
|
'//group sum
|
|
Dim Grp_L As New Dictionary(Of String, Single)
|
|
For Each dr As DS.tbl_new_lightRow In DSET1.tbl_new_light.Select("code <> '0'")
|
|
If Grp_L.ContainsKey(dr.태양광모듈종류) Then
|
|
Dim oldValue As Single = Grp_L.Item(dr.태양광모듈종류)
|
|
Grp_L.Item(dr.태양광모듈종류) = oldValue + TOSG(T, dr.태양광모듈면적)
|
|
Else
|
|
Grp_L.Add(dr.태양광모듈종류, TOSG(T, dr.태양광모듈면적))
|
|
End If
|
|
Next
|
|
|
|
For Each dr As System.Collections.Generic.KeyValuePair(Of String, Single) In Grp_L
|
|
태양광_SUM_면적 += TOSG(T, dr.Value)
|
|
If TOSG(T, dr.Value) > 태양광_MAX_면적합 Then
|
|
태양광_MAX_면적합 = TOSG(T, dr.Value)
|
|
태양광_MAX_면적합_모듈종류 = dr.Key
|
|
|
|
End If
|
|
Next
|
|
|
|
If Not String.IsNullOrEmpty(태양광_MAX_면적합_모듈종류) Then
|
|
Dim dr As DS.tbl_new_lightRow = DSET1.tbl_new_light.Select("태양광모듈종류 = '" + 태양광_MAX_면적합_모듈종류 + "'")(0)
|
|
태양광_MAX_면적합_모듈기울기 = dr.태양광모듈기울기
|
|
태양광_MAX_면적합_모듈방위 = dr.태양광모듈방위
|
|
태양광_MAX_면적합_모듈효율 = dr.태양광모듈효율
|
|
End If
|
|
|
|
|
|
If Not String.IsNullOrEmpty(태양광_MAX_면적합_모듈종류) Then
|
|
P(50) = 태양광_MAX_면적합_모듈종류
|
|
P(51) = 태양광_SUM_면적.ToString("N2") + "(㎡)"
|
|
P(52) = 태양광_MAX_면적합_모듈기울기
|
|
P(53) = 태양광_MAX_면적합_모듈방위
|
|
If (태양광_MAX_면적합_모듈종류 = "성능치입력") Then P(54) = (태양광_MAX_면적합_모듈효율) + "(%)"
|
|
End If
|
|
|
|
|
|
Dim 지열_SUM_가스히트펌프 As String = ""
|
|
Dim 지열_SUM_전기히트펌프 As String = ""
|
|
|
|
Dim 지열_MAX_종류 As String = ""
|
|
Dim 지열_난방용량 As Single = 0
|
|
Dim 지열_난방효율 As Single = 0 '//오류
|
|
Dim 지열_냉방용량 As Single = 0
|
|
Dim 지열_냉방효율 As Single = 0 '//오류
|
|
Dim 지열_급탕용량 As Single = 0
|
|
Dim 지열_급탕효율 As Single = 0 '//오류
|
|
Dim 지열_순환펌프동력 As Single = 0
|
|
Dim 지열_SUM_지열히트펌프용량 As Single = 0
|
|
|
|
If DSET1.tbl_new_ground.Select("code <> '0'").Length > 0 Then
|
|
For Each dr As DS.tbl_new_groundRow In DSET1.tbl_new_ground.Select("code <> '0'")
|
|
If dr.가동연료 = "난방유" OrElse dr.가동연료 = "천연가스" OrElse dr.가동연료 = "액화가스" Then
|
|
지열_SUM_가스히트펌프 += dr.지열히트펌프용량
|
|
Else
|
|
지열_SUM_전기히트펌프 += dr.지열히트펌프용량
|
|
End If
|
|
Next
|
|
|
|
If 지열_SUM_가스히트펌프 > 지열_SUM_전기히트펌프 Then
|
|
지열_MAX_종류 = "가스히트펌프"
|
|
ElseIf 지열_SUM_가스히트펌프 = 지열_SUM_전기히트펌프 Then
|
|
Dim dr As DS.tbl_new_groundRow = DSET1.tbl_new_ground.Select("code <> '0'", "지열히트펌프용량 desc")(0)
|
|
If dr.가동연료 = "전기" Then
|
|
지열_MAX_종류 = "전기히트펌프"
|
|
Else
|
|
지열_MAX_종류 = "가스히트펌프"
|
|
End If
|
|
Else
|
|
지열_MAX_종류 = "전기히트펌프"
|
|
End If
|
|
|
|
For Each dr As DS.tbl_new_groundRow In DSET1.tbl_new_ground.Select("code <> '0'")
|
|
지열_SUM_지열히트펌프용량 += TOSG(T, dr.지열히트펌프용량)
|
|
|
|
If dr.지열냉난방구분 = "난방용" Then
|
|
지열_난방용량 += TOSG(T, dr.지열히트펌프용량)
|
|
지열_난방효율 += TOSG(T, dr.지열히트펌프용량) * TOSG(T, dr.열성능비난방)
|
|
End If
|
|
If dr.지열냉난방구분 = "급탕용" Then
|
|
지열_급탕용량 += TOSG(T, dr.지열히트펌프용량)
|
|
지열_급탕효율 += TOSG(T, dr.지열히트펌프용량) * TOSG(T, dr.열성능비난방)
|
|
End If
|
|
If dr.지열냉난방구분 = "난방급탕용" Then
|
|
지열_난방용량 += TOSG(T, dr.지열히트펌프용량)
|
|
지열_급탕용량 += TOSG(T, dr.지열히트펌프용량)
|
|
|
|
지열_난방효율 += TOSG(T, dr.지열히트펌프용량) * TOSG(T, dr.열성능비난방)
|
|
지열_급탕효율 += TOSG(T, dr.지열히트펌프용량) * TOSG(T, dr.열성능비난방)
|
|
End If
|
|
If dr.지열냉난방구분 = "냉방용" Then
|
|
지열_냉방용량 += TOSG(T, dr.지열히트펌프용량)
|
|
지열_냉방효율 += TOSG(T, dr.지열히트펌프용량) * TOSG(T, dr.열성능비냉방)
|
|
End If
|
|
지열_순환펌프동력 += TOSG(T, dr.펌프용량1차)
|
|
Next
|
|
End If
|
|
|
|
|
|
If Not String.IsNullOrEmpty(지열_MAX_종류) Then
|
|
P(55) = 지열_MAX_종류
|
|
|
|
If (지열_난방용량 > 0) Then
|
|
P(56) = 지열_난방용량.ToString("N2") + "(kW)" + vbCrLf + _
|
|
(지열_난방효율 / 지열_SUM_지열히트펌프용량).ToString("N2") + "(COP)"
|
|
End If
|
|
|
|
If (지열_냉방용량 > 0) Then
|
|
P(57) = 지열_냉방용량.ToString("N2") + "(kW)" + vbCrLf + _
|
|
(지열_냉방효율 / 지열_SUM_지열히트펌프용량).ToString("N2") + "(COP)"
|
|
End If
|
|
|
|
If (지열_급탕용량 > 0) Then
|
|
P(58) = 지열_급탕용량.ToString("N2") + "(kW)" + vbCrLf + _
|
|
(지열_급탕효율 / 지열_SUM_지열히트펌프용량).ToString("N2") + "(COP)"
|
|
End If
|
|
|
|
If (지열_순환펌프동력 > 0) Then
|
|
P(59) = 지열_순환펌프동력.ToString("N0") + "(W)"
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
'//단위면적당 요구량, 소요량, 1차에너지소요량
|
|
'//난방,급탕,냉방,조명,환기,합계
|
|
'//65,66,67
|
|
'//68,69,70
|
|
|
|
IDX = 60
|
|
|
|
Dim r신재생에너지 As Decimal
|
|
Dim r난방에너지 As Decimal
|
|
Dim r냉방에너지 As Decimal
|
|
Dim r급탕에너지 As Decimal
|
|
Dim r조명에너지 As Decimal
|
|
Dim r환기에너지 As Decimal
|
|
Dim r합계 As Decimal
|
|
|
|
|
|
Dim Dr2 As DSR.Graph_ReqUseRow
|
|
For Gubun As Short = 0 To 2
|
|
Select Case Gubun
|
|
|
|
Case 2 '//에너지요구량
|
|
|
|
r신재생에너지 = 0
|
|
r난방에너지 = Result1o.E요구량(0).난방면적 * addmulti
|
|
r급탕에너지 = Result1o.E요구량(0).급탕면적 * addmulti
|
|
r냉방에너지 = Result1o.E요구량(0).냉방면적 * addmulti
|
|
r조명에너지 = Result1o.E요구량(0).조명면적 * addmulti
|
|
r환기에너지 = 0 * addmulti
|
|
r합계 = r난방에너지 + r냉방에너지 + r급탕에너지 + r조명에너지
|
|
|
|
|
|
|
|
If r난방에너지 = 0 Then
|
|
P(64) = ""
|
|
Else
|
|
P(64) = r난방에너지.ToString("N1")
|
|
End If
|
|
|
|
If r냉방에너지 = 0 Then
|
|
P(65) = ""
|
|
Else
|
|
P(65) = r냉방에너지.ToString("N1")
|
|
End If
|
|
|
|
If r급탕에너지 = 0 Then
|
|
P(66) = ""
|
|
Else
|
|
P(66) = r급탕에너지.ToString("N1")
|
|
End If
|
|
|
|
|
|
If r조명에너지 = 0 Then
|
|
P(67) = ""
|
|
Else
|
|
P(67) = r조명에너지.ToString("N1")
|
|
End If
|
|
|
|
If r환기에너지 = 0 Then
|
|
P(68) = ""
|
|
Else
|
|
P(68) = r환기에너지.ToString("N1")
|
|
End If
|
|
|
|
|
|
P(69) = r합계.ToString("N1")
|
|
|
|
Case 1 '//에너지소요량
|
|
|
|
Dim Sum As Decimal = Result1o.생산E(0).태양광전력생산량 / (Result1o.일차E소요량(0).난방전력 + Result1o.일차E소요량(0).냉방전력 + Result1o.일차E소요량(0).급탕전력 + Result1o.일차E소요량(0).조명전력 + Result1o.일차E소요량(0).환기전력)
|
|
Dim 난방 As Decimal = Sum * Result1o.일차E소요량(0).난방전력 '//아마게산이안도잇으니 여기값들이 0이잇을거에요.
|
|
Dim 냉방 As Decimal = Sum * Result1o.일차E소요량(0).냉방전력
|
|
Dim 조명 As Decimal = Sum * Result1o.일차E소요량(0).조명전력
|
|
Dim 급탕 As Decimal = Sum * Result1o.일차E소요량(0).급탕전력
|
|
Dim 환기 As Decimal = Sum * Result1o.일차E소요량(0).환기전력
|
|
Dim 난방면적 As Decimal = 0
|
|
Dim 냉방면적 As Decimal = 0
|
|
Dim 조명면적 As Decimal = 0
|
|
Dim 급탕면적 As Decimal = 0
|
|
Dim 환기면적 As Decimal = 0
|
|
If Result1o.사용면적.H <> 0 Then
|
|
난방면적 = TOSG(T, IIf(난방 = 0, 0, 난방 / Result1o.사용면적.H))
|
|
End If
|
|
If Result1o.사용면적.C <> 0 Then
|
|
냉방면적 = TOSG(T, IIf(냉방 = 0, 0, 냉방 / Result1o.사용면적.C))
|
|
End If
|
|
If Result1o.사용면적.L <> 0 Then
|
|
조명면적 = TOSG(T, IIf(조명 = 0, 0, 조명 / Result1o.사용면적.L))
|
|
End If
|
|
If Result1o.사용면적.W <> 0 Then
|
|
급탕면적 = TOSG(T, IIf(급탕 = 0, 0, 급탕 / Result1o.사용면적.W))
|
|
End If
|
|
If Result1o.사용면적.V <> 0 Then
|
|
환기면적 = TOSG(T, IIf(환기 = 0, 0, 환기 / Result1o.사용면적.V))
|
|
End If
|
|
|
|
Dim 면적 As Decimal = 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적
|
|
|
|
r신재생에너지 = -1 * (Result1o.생산E(0).면적당생산량태양열 + Result1o.생산E(0).신재생면적당열생산량 + Result1o.생산E(0).면적당생산량지열) - 면적
|
|
|
|
r난방에너지 = Result1o.E소요량(0).난방면적 * addmulti
|
|
r냉방에너지 = Result1o.E소요량(0).냉방면적 * addmulti
|
|
r급탕에너지 = Result1o.E소요량(0).급탕면적 * addmulti
|
|
r조명에너지 = Result1o.E소요량(0).조명면적 * addmulti
|
|
r환기에너지 = Result1o.E소요량(0).환기면적 * addmulti
|
|
r합계 = r난방에너지 + r냉방에너지 + r급탕에너지 + r조명에너지 + r환기에너지
|
|
|
|
If r신재생에너지 = 0 Then
|
|
P(91) = ""
|
|
Else
|
|
P(91) = (r신재생에너지 * -1).ToString("N1")
|
|
End If
|
|
|
|
If r난방에너지 = 0 Then
|
|
P(70) = ""
|
|
Else
|
|
P(70) = r난방에너지.ToString("N1")
|
|
End If
|
|
|
|
If r냉방에너지 = 0 Then
|
|
P(71) = ""
|
|
Else
|
|
P(71) = r냉방에너지.ToString("N1")
|
|
End If
|
|
|
|
If r급탕에너지 = 0 Then
|
|
P(72) = ""
|
|
Else
|
|
P(72) = r급탕에너지.ToString("N1")
|
|
End If
|
|
|
|
If r조명에너지 = 0 Then
|
|
P(73) = ""
|
|
Else
|
|
P(73) = r조명에너지.ToString("N1")
|
|
End If
|
|
|
|
If r환기에너지 = 0 Then
|
|
P(74) = ""
|
|
Else
|
|
P(74) = r환기에너지.ToString("N1")
|
|
End If
|
|
|
|
P(75) = r합계.ToString("N1")
|
|
|
|
Case 0 '//1차에너지소요량
|
|
|
|
If Pub.Program = EProgram.총량평가 Then
|
|
|
|
Dim Sum As Decimal = Result1o.생산E(0).태양광전력생산량 / (Result1o.일차E소요량(0).난방전력 + Result1o.일차E소요량(0).냉방전력 + Result1o.일차E소요량(0).급탕전력 + Result1o.일차E소요량(0).조명전력 + Result1o.일차E소요량(0).환기전력)
|
|
Dim 난방 As Decimal = Sum * Result1o.일차E소요량(0).난방전력 '//아마게산이안도잇으니 여기값들이 0이잇을거에요.
|
|
Dim 냉방 As Decimal = Sum * Result1o.일차E소요량(0).냉방전력
|
|
Dim 조명 As Decimal = Sum * Result1o.일차E소요량(0).조명전력
|
|
Dim 급탕 As Decimal = Sum * Result1o.일차E소요량(0).급탕전력
|
|
Dim 환기 As Decimal = Sum * Result1o.일차E소요량(0).환기전력
|
|
Dim 난방면적 As Decimal = 0
|
|
Dim 냉방면적 As Decimal = 0
|
|
Dim 조명면적 As Decimal = 0
|
|
Dim 급탕면적 As Decimal = 0
|
|
Dim 환기면적 As Decimal = 0
|
|
If Result1o.사용면적.H <> 0 Then
|
|
난방면적 = TOSG(T, IIf(난방 = 0, 0, 난방 / Result1o.사용면적.H))
|
|
End If
|
|
If Result1o.사용면적.C <> 0 Then
|
|
냉방면적 = TOSG(T, IIf(냉방 = 0, 0, 냉방 / Result1o.사용면적.C))
|
|
End If
|
|
If Result1o.사용면적.L <> 0 Then
|
|
조명면적 = TOSG(T, IIf(조명 = 0, 0, 조명 / Result1o.사용면적.L))
|
|
End If
|
|
If Result1o.사용면적.W <> 0 Then
|
|
급탕면적 = TOSG(T, IIf(급탕 = 0, 0, 급탕 / Result1o.사용면적.W))
|
|
End If
|
|
If Result1o.사용면적.V <> 0 Then
|
|
환기면적 = TOSG(T, IIf(환기 = 0, 0, 환기 / Result1o.사용면적.V))
|
|
End If
|
|
|
|
Dim 전기 As Decimal = 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적
|
|
|
|
r신재생에너지 = -1 * (Result1o.생산E(0).면적당생산량태양열 + Result1o.생산E(0).신재생면적당열생산량 + Result1o.생산E(0).면적당생산량지열 + 전기 * 2.75)
|
|
|
|
If Program = EProgram.총량평가 Then
|
|
r난방에너지 = Result1o.일차E소요량(0).난방면적 * 1.0 * addmulti '//171021
|
|
r냉방에너지 = Result1o.일차E소요량(0).냉방면적 * 1.0 * addmulti '//171021
|
|
r급탕에너지 = Result1o.일차E소요량(0).급탕면적 * 1.0 * addmulti '//171021
|
|
r조명에너지 = Result1o.일차E소요량(0).조명면적 * 1.0 * addmulti '//171021
|
|
r환기에너지 = Result1o.일차E소요량(0).환기면적 * 1.0 * addmulti '//171021
|
|
Else
|
|
r난방에너지 = Result1o.일차E소요량(0).난방면적 * 1.0 '//171021
|
|
r냉방에너지 = Result1o.일차E소요량(0).냉방면적 * 1.0 '//171021
|
|
r급탕에너지 = Result1o.일차E소요량(0).급탕면적 * 1.0 '//171021
|
|
r조명에너지 = Result1o.일차E소요량(0).조명면적 * 1.0 '//171021
|
|
r환기에너지 = Result1o.일차E소요량(0).환기면적 * 1.0 '//171021
|
|
End If
|
|
|
|
r합계 = r난방에너지 + r냉방에너지 + r급탕에너지 + r조명에너지 + r환기에너지
|
|
|
|
|
|
If r난방에너지 = 0 Then
|
|
P(76) = ""
|
|
Else
|
|
P(76) = r난방에너지.ToString("N1")
|
|
End If
|
|
|
|
If r냉방에너지 = 0 Then
|
|
P(77) = ""
|
|
Else
|
|
P(77) = r냉방에너지.ToString("N1")
|
|
End If
|
|
|
|
If r급탕에너지 = 0 Then
|
|
P(78) = ""
|
|
Else
|
|
P(78) = r급탕에너지.ToString("N1")
|
|
End If
|
|
|
|
If r조명에너지 = 0 Then
|
|
P(79) = ""
|
|
Else
|
|
P(79) = r조명에너지.ToString("N1")
|
|
End If
|
|
If r환기에너지 = 0 Then
|
|
P(80) = ""
|
|
Else
|
|
P(80) = r환기에너지.ToString("N1")
|
|
End If
|
|
If r신재생에너지 = 0 Then
|
|
P(89) = ""
|
|
Else
|
|
P(89) = (r신재생에너지 * -1).ToString("N1")
|
|
End If
|
|
|
|
P(81) = r합계.ToString("N1")
|
|
Else
|
|
|
|
'//친환경
|
|
Dim Sum As Decimal = Result1o.생산E(0).태양광전력생산량 / (Result1o.일차E소요량(0).난방전력 + Result1o.일차E소요량(0).냉방전력 + Result1o.일차E소요량(0).급탕전력 + Result1o.일차E소요량(0).조명전력 + Result1o.일차E소요량(0).환기전력)
|
|
Dim 난방 As Decimal = Sum * Result1o.일차E소요량(0).난방전력 '//아마게산이안도잇으니 여기값들이 0이잇을거에요.
|
|
Dim 냉방 As Decimal = Sum * Result1o.일차E소요량(0).냉방전력
|
|
Dim 조명 As Decimal = Sum * Result1o.일차E소요량(0).조명전력
|
|
Dim 급탕 As Decimal = Sum * Result1o.일차E소요량(0).급탕전력
|
|
Dim 환기 As Decimal = Sum * Result1o.일차E소요량(0).환기전력
|
|
Dim 난방면적 As Decimal = 0
|
|
Dim 냉방면적 As Decimal = 0
|
|
Dim 조명면적 As Decimal = 0
|
|
Dim 급탕면적 As Decimal = 0
|
|
Dim 환기면적 As Decimal = 0
|
|
If Result1o.사용면적.H <> 0 Then
|
|
난방면적 = TOSG(T, IIf(난방 = 0, 0, 난방 / Result1o.사용면적.H))
|
|
End If
|
|
If Result1o.사용면적.C <> 0 Then
|
|
냉방면적 = TOSG(T, IIf(냉방 = 0, 0, 냉방 / Result1o.사용면적.C))
|
|
End If
|
|
If Result1o.사용면적.L <> 0 Then
|
|
조명면적 = TOSG(T, IIf(조명 = 0, 0, 조명 / Result1o.사용면적.L))
|
|
End If
|
|
If Result1o.사용면적.W <> 0 Then
|
|
급탕면적 = TOSG(T, IIf(급탕 = 0, 0, 급탕 / Result1o.사용면적.W))
|
|
End If
|
|
If Result1o.사용면적.V <> 0 Then
|
|
환기면적 = TOSG(T, IIf(환기 = 0, 0, 환기 / Result1o.사용면적.V))
|
|
End If
|
|
|
|
|
|
|
|
|
|
Dim 전기 As Decimal = 난방면적 + 냉방면적 + 조명면적 + 급탕면적 + 환기면적
|
|
|
|
r신재생에너지 = -1 * (Result1o.생산E(0).면적당생산량태양열 + Result1o.생산E(0).신재생면적당열생산량 + Result1o.생산E(0).면적당생산량지열 + 전기 * 2.75)
|
|
|
|
r난방에너지 = Result1o.일차E소요량(0).난방면적
|
|
'If (Result1o.사용면적.H_WF = 0) Then
|
|
' r난방에너지 = 0
|
|
'Else
|
|
' r난방에너지 = Result1o.일차E소요량(0).난방면적2 * Result1o.사용면적.H / Result1o.사용면적.H_WF
|
|
'End If
|
|
|
|
r냉방에너지 = Result1o.일차E소요량(0).냉방면적
|
|
|
|
r급탕에너지 = Result1o.일차E소요량(0).급탕면적 '//등급용 170707 2332
|
|
'If (Result1o.사용면적.W_WF = 0) Then
|
|
' r급탕에너지 = 0
|
|
'Else
|
|
' r급탕에너지 = Result1o.일차E소요량(0).급탕면적2 * Result1o.사용면적.W / Result1o.사용면적.W_WF
|
|
'End If
|
|
|
|
|
|
r조명에너지 = Result1o.일차E소요량(0).조명면적
|
|
r환기에너지 = Result1o.일차E소요량(0).환기면적
|
|
r합계 = r난방에너지 + r냉방에너지 + r급탕에너지 + r조명에너지 + r환기에너지
|
|
|
|
If r난방에너지 = 0 Then
|
|
P(76) = ""
|
|
Else
|
|
P(76) = r난방에너지.ToString("N1")
|
|
End If
|
|
|
|
If r냉방에너지 = 0 Then
|
|
P(77) = ""
|
|
Else
|
|
P(77) = r냉방에너지.ToString("N1")
|
|
End If
|
|
|
|
If r급탕에너지 = 0 Then
|
|
P(78) = ""
|
|
Else
|
|
P(78) = r급탕에너지.ToString("N1")
|
|
End If
|
|
|
|
|
|
If r조명에너지 = 0 Then
|
|
P(79) = ""
|
|
Else
|
|
P(79) = r조명에너지.ToString("N1")
|
|
End If
|
|
If r환기에너지 = 0 Then
|
|
P(80) = ""
|
|
Else
|
|
P(80) = r환기에너지.ToString("N1")
|
|
End If
|
|
If r신재생에너지 = 0 Then
|
|
P(89) = ""
|
|
Else
|
|
P(89) = (r신재생에너지 * -1).ToString("N1")
|
|
End If
|
|
|
|
P(81) = r합계.ToString("N1")
|
|
|
|
End If
|
|
|
|
End Select
|
|
Next
|
|
|
|
|
|
|
|
|
|
|
|
|
|
' P(89) = "" '//
|
|
|
|
|
|
Dim Sum1 As Decimal = Result1o.생산E(0).태양광전력생산량 / (Result1o.일차E소요량(0).난방전력 + Result1o.일차E소요량(0).냉방전력 + Result1o.일차E소요량(0).급탕전력 + Result1o.일차E소요량(0).조명전력 + Result1o.일차E소요량(0).환기전력)
|
|
Dim 난방1 As Decimal = Sum1 * Result1o.일차E소요량(0).난방전력 '//아마게산이안도잇으니 여기값들이 0이잇을거에요.
|
|
Dim 냉방1 As Decimal = Sum1 * Result1o.일차E소요량(0).냉방전력
|
|
Dim 조명1 As Decimal = Sum1 * Result1o.일차E소요량(0).조명전력
|
|
Dim 급탕1 As Decimal = Sum1 * Result1o.일차E소요량(0).급탕전력
|
|
Dim 환기1 As Decimal = Sum1 * Result1o.일차E소요량(0).환기전력
|
|
|
|
Dim 난방면적1 As Decimal = 0
|
|
Dim 냉방면적1 As Decimal = 0
|
|
Dim 조명면적1 As Decimal = 0
|
|
Dim 급탕면적1 As Decimal = 0
|
|
Dim 환기면적1 As Decimal = 0
|
|
If Result1o.사용면적.H <> 0 Then
|
|
난방면적1 = TOSG(T, IIf(난방1 = 0, 0, 난방1 / Result1o.사용면적.H))
|
|
End If
|
|
If Result1o.사용면적.C <> 0 Then
|
|
냉방면적1 = TOSG(T, IIf(냉방1 = 0, 0, 냉방1 / Result1o.사용면적.C))
|
|
End If
|
|
If Result1o.사용면적.L <> 0 Then
|
|
조명면적1 = TOSG(T, IIf(조명1 = 0, 0, 조명1 / Result1o.사용면적.L))
|
|
End If
|
|
If Result1o.사용면적.W <> 0 Then
|
|
급탕면적1 = TOSG(T, IIf(급탕1 = 0, 0, 급탕1 / Result1o.사용면적.W))
|
|
End If
|
|
If Result1o.사용면적.V <> 0 Then
|
|
환기면적1 = TOSG(T, IIf(환기1 = 0, 0, 환기1 / Result1o.사용면적.V))
|
|
End If
|
|
|
|
Dim 면적1 As Decimal = 난방면적1 + 냉방면적1 + 조명면적1 + 급탕면적1 + 환기면적1
|
|
|
|
'//신재생 _소요량
|
|
P(92) = (-1 * (Result1o.생산E(0).면적당생산량태양열 + Result1o.생산E(0).면적당생산량지열) - 면적1).ToString()
|
|
|
|
Console.WriteLine("exp report ==========")
|
|
For i As Integer = 1 To 99
|
|
NewDR("c" + i.ToString("000")) = P(i - 1)
|
|
Console.WriteLine("P[{0}]={1}", i, P(i - 1))
|
|
Next
|
|
|
|
DSETR1.ExtReport.AddExtReportRow(NewDR)
|
|
DSETR1.ExtReport.AcceptChanges()
|
|
End Sub
|
|
|
|
|
|
|
|
#Region "미사용메뉴"
|
|
|
|
Private Sub 부분부하율()
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
'Me.Toggle_Menu_Color(E_MenuIdx.부분부하율)
|
|
Select Case Prj.UIVersion
|
|
Case "2009123100", StartVersion
|
|
Frm_V20091231_buha.ControlBox = True
|
|
Frm_V20091231_buha.ShowDialog()
|
|
'Show_menu(New Frm_V20091231_buha)
|
|
|
|
Case Else
|
|
MsgBox(CLang.미지원UI버젼, MsgBoxStyle.Information, "확인")
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub 기상데이터서버업로드()
|
|
MsgBox("이 기능은 지원되지 않습니다.")
|
|
'If MsgBox("정말로 서버의 데이터를 수정하시겠습니까?" & vbCrLf &
|
|
' "서버의 기상데이터가 삭제되고 현재데이터가 씌여집니다." & vbCrLf &
|
|
' "이작업은 되돌릴 수없습니다", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return
|
|
|
|
'Dim pass As String = InputBox("암호입력")
|
|
'If pass <> "raytrace" Then Return
|
|
|
|
'Dim Cn As New SqlClient.SqlConnection(My.Settings.cs)
|
|
'Cn.Open()
|
|
'Dim CMd As New SqlClient.SqlCommand("delete from tbl_weather", Cn)
|
|
'CMd.ExecuteNonQuery()
|
|
'CMd.CommandText = "delete from weather_cha" : CMd.ExecuteNonQuery()
|
|
'CMd.CommandText = "delete from weather_ilsa" : CMd.ExecuteNonQuery()
|
|
'CMd.CommandText = "delete from weather_temp" : CMd.ExecuteNonQuery()
|
|
'CMd.CommandText = "delete from weather_supdo" : CMd.ExecuteNonQuery()
|
|
'CMd.Dispose()
|
|
'Cn.Close()
|
|
'Cn.Dispose()
|
|
|
|
'Dim Taw As New DSTableAdapters.tbl_weatherTableAdapter
|
|
'Dim Ta1 As New DSTableAdapters.weather_chaTableAdapter
|
|
'Dim Ta2 As New DSTableAdapters.weather_ilsaTableAdapter
|
|
'Dim Ta3 As New DSTableAdapters.weather_supdoTableAdapter
|
|
'Dim Ta4 As New DSTableAdapters.weather_tempTableAdapter
|
|
'Dim Rcnt As Integer = 0
|
|
'For Each Dr As DS.tbl_weatherRow In DSET1.tbl_weather.Rows
|
|
' Rcnt += Taw.Insert(Dr.code, Dr.건물위치, Dr.난방기, Dr.냉방기, Dr.m01, Dr.m02, Dr.m03, Dr.m04, Dr.m05, Dr.m06, Dr.m07, Dr.m08, Dr.m09, Dr.m10, Dr.m11, Dr.m12)
|
|
'Next
|
|
'For Each Dr As DS.weather_chaRow In DSET1.weather_cha.Rows
|
|
' Rcnt += Ta1.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.m01, Dr.m02, Dr.m03, Dr.m04, Dr.m05, Dr.m06, Dr.m07, Dr.m08, Dr.m09, Dr.m10, Dr.m11, Dr.m12)
|
|
'Next
|
|
'For Each Dr As DS.weather_ilsaRow In DSET1.weather_ilsa.Rows
|
|
' Rcnt += Ta2.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.최대부하, Dr.m01, Dr.m02, Dr.m03, Dr.m04, Dr.m05, Dr.m06, Dr.m07, Dr.m08, Dr.m09, Dr.m10, Dr.m11, Dr.m12)
|
|
'Next
|
|
'For Each Dr As DS.weather_supdoRow In DSET1.weather_supdo.Rows
|
|
' Rcnt += Ta3.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.t01, Dr.t02, Dr.t03, Dr.t04, Dr.t05, Dr.t06, Dr.t07, Dr.t08, Dr.t09, Dr.t10,
|
|
' Dr.t11, Dr.t12, Dr.t13, Dr.t14, Dr.t15, Dr.t16, Dr.t17, Dr.t18, Dr.t19, Dr.t20, Dr.t21, Dr.t22, Dr.t23, Dr.t24)
|
|
'Next
|
|
'For Each Dr As DS.weather_tempRow In DSET1.weather_temp.Rows
|
|
' Rcnt += Ta4.Insert(Dr.pcode, Dr.code, Dr.설명, Dr.t01, Dr.t02, Dr.t03, Dr.t04, Dr.t05, Dr.t06, Dr.t07, Dr.t08, Dr.t09, Dr.t10,
|
|
' Dr.t11, Dr.t12, Dr.t13, Dr.t14, Dr.t15, Dr.t16, Dr.t17, Dr.t18, Dr.t19, Dr.t20, Dr.t21, Dr.t22, Dr.t23, Dr.t24)
|
|
'Next
|
|
'MsgBox("업데이트완료", MsgBoxStyle.Information, "확인")
|
|
End Sub
|
|
|
|
|
|
#End Region
|
|
|
|
#Region "COntextMenu"
|
|
|
|
|
|
Private Sub ContextMenuStrip1_Opening(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles ContextMenuStrip1.Opening
|
|
'If Me.TreeView1.SelectedNode Is Nothing Then Return
|
|
'Dim tagstring As String = Me.TreeView1.SelectedNode.Tag.ToString()
|
|
|
|
'If Me.TreeView1.SelectedNode.Level = 0 Then '//상단메뉴이고
|
|
' If Me.TreeView1.SelectedNode.Text.Substring(0, 3) = "입력존" Then
|
|
' Me.그룹추가ToolStripMenuItem.Enabled = True
|
|
' Me.그룹변경ToolStripMenuItem.Enabled = False
|
|
' Me.그룹복사ToolStripMenuItem.Enabled = False
|
|
' Me.그룹삭제ToolStripMenuItem.Enabled = False
|
|
' Else
|
|
' e.Cancel = True
|
|
' End If
|
|
'ElseIf Me.TreeView1.SelectedNode.Level = 1 AndAlso tagstring.Length > 3 Then
|
|
' If tagstring.Substring(0, 3) = "입력존" Then
|
|
' Me.그룹추가ToolStripMenuItem.Enabled = True
|
|
' Me.그룹변경ToolStripMenuItem.Enabled = True
|
|
' Me.그룹복사ToolStripMenuItem.Enabled = True
|
|
' Me.그룹삭제ToolStripMenuItem.Enabled = True
|
|
' Else
|
|
' e.Cancel = True
|
|
' End If
|
|
'End If
|
|
End Sub
|
|
|
|
Private Sub 그룹추가ToolStripMenuItem_Click(sender As System.Object, e As EventArgs) Handles 그룹추가ToolStripMenuItem.Click
|
|
'If Me.TreeView1.SelectedNode Is Nothing Then Return
|
|
'Dim newname As String = InputBox("그룹이름", "신규그룹이름을 입력하세요", "그룹명")
|
|
'If newname.Trim = "" Then Return
|
|
'If Me.TreeView1.SelectedNode.Level = 1 Then
|
|
' If Me.TreeView1.SelectedNode.Parent.Nodes.Find(newname, True).Length = 0 Then
|
|
' Dim ntv As TreeNode = Me.TreeView1.SelectedNode.Parent.Nodes.Add(newname, newname + "(0)")
|
|
' ntv.Tag = "입력존|" + newname
|
|
' Me.TreeView1.SelectedNode = ntv
|
|
' 'TreeView1_MouseDoubleClick(Nothing, Nothing)
|
|
' End If
|
|
'Else
|
|
' If Me.TreeView1.SelectedNode.Nodes.Find(newname, True).Length = 0 Then
|
|
' Dim ntv As TreeNode = Me.TreeView1.SelectedNode.Nodes.Add(newname, newname + "(0)")
|
|
' ntv.Tag = "입력존|" + newname
|
|
' Me.TreeView1.SelectedNode = ntv
|
|
' 'TreeView1_MouseDoubleClick(Nothing, Nothing)
|
|
' End If
|
|
'End If
|
|
End Sub
|
|
|
|
Private Sub 그룹삭제ToolStripMenuItem_Click(sender As System.Object, e As EventArgs) Handles 그룹삭제ToolStripMenuItem.Click
|
|
''//선택된그룹을 삭제
|
|
'If Me.TreeView1.SelectedNode Is Nothing Then Return
|
|
'Dim tn As TreeNode = Me.TreeView1.SelectedNode
|
|
'If Me.TreeView1.SelectedNode.Level <> 1 Then Return
|
|
'Dim tag As String = Me.TreeView1.SelectedNode.Tag.ToString()
|
|
'Dim t() As String = tag.Split("|")
|
|
'If MsgBox("선택된그룹 [" + t(1) + "]을(를) 삭제하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
|
|
' For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0' and 그룹='" + t(1) + "'")
|
|
' DeleteMyunFromZoneCode(dr.code)
|
|
' dr.Delete()
|
|
' Next
|
|
' DSET1.tbl_zone.AcceptChanges()
|
|
' ' Refresh_MenuItems("")
|
|
'End If
|
|
End Sub
|
|
|
|
'''해당존을 사용한 면을 삭제합니다.
|
|
Private Sub DeleteMyunFromZoneCode(Zonecode As String)
|
|
For Each dr As DS.tbl_myounRow In DSET1.tbl_myoun.Select("code <> '0' and 존분류='" + Zonecode + "'")
|
|
dr.Delete()
|
|
Next
|
|
DSET1.tbl_myoun.AcceptChanges()
|
|
End Sub
|
|
|
|
Private Sub 그룹변경ToolStripMenuItem_Click(sender As System.Object, e As EventArgs) Handles 그룹변경ToolStripMenuItem.Click
|
|
''//선택된그룹을 삭제
|
|
'If Me.TreeView1.SelectedNode Is Nothing Then Return
|
|
'Dim tn As TreeNode = Me.TreeView1.SelectedNode
|
|
'If Me.TreeView1.SelectedNode.Level <> 1 Then Return
|
|
'Dim tag As String = Me.TreeView1.SelectedNode.Tag.ToString()
|
|
'Dim t() As String = tag.Split("|")
|
|
|
|
'Dim m As New System.Text.StringBuilder
|
|
'Dim newname As String = InputBox("변경할 그룹이름을 입력하세요", "그룹변경", t(1))
|
|
'If newname.Trim = "" Then Return
|
|
'If newname.Trim = t(1) Then Return
|
|
|
|
'If MsgBox("선택된그룹 [" + t(1) + "]을(를) [" + newname + "]로 변경하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
|
|
' For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0' and 그룹='" + t(1) + "'")
|
|
' dr.그룹 = newname
|
|
' Next
|
|
' DSET1.tbl_zone.AcceptChanges()
|
|
' ' Refresh_MenuItems("")
|
|
'End If
|
|
End Sub
|
|
Private Sub 그룹복사ToolStripMenuItem_Click(sender As System.Object, e As EventArgs) Handles 그룹복사ToolStripMenuItem.Click
|
|
''//선택된그룹을 삭제
|
|
'If Me.TreeView1.SelectedNode Is Nothing Then Return
|
|
'Dim tn As TreeNode = Me.TreeView1.SelectedNode
|
|
'If Me.TreeView1.SelectedNode.Level <> 1 Then Return
|
|
'Dim tag As String = Me.TreeView1.SelectedNode.Tag.ToString()
|
|
'Dim t() As String = tag.Split("|")
|
|
|
|
'Dim m As New System.Text.StringBuilder
|
|
'Dim newname As String = InputBox("새로운 그룹이름을 입력하세요", "그룹복사", t(1))
|
|
'If newname.Trim = "" Then Return
|
|
'If newname.Trim = t(1) Then Return
|
|
|
|
'If MsgBox("선택된그룹 [" + t(1) + "]을(를) [" + newname + "]로 복사하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
|
|
' For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0' and 그룹='" + t(1) + "'")
|
|
' Dim newcode As String = GetNewZoneCode()
|
|
' Dim newdr As DataRow = DSET1.tbl_zone.NewRow
|
|
' For Each c As DataColumn In DSET1.tbl_zone.Columns
|
|
' newdr(c.ColumnName) = dr(c.ColumnName)
|
|
' Next
|
|
' newdr("code") = newcode
|
|
' newdr("그룹") = newname
|
|
' DuplicateZoneRow(dr.code, newcode) '//이존의코드값을 지정해준다.
|
|
' DSET1.tbl_zone.Rows.Add(newdr)
|
|
' Next
|
|
' DSET1.tbl_zone.AcceptChanges()
|
|
' 'Refresh_MenuItems("")
|
|
'End If
|
|
End Sub
|
|
|
|
Private Sub DuplicateZoneRow(ZoneCode As String, newzoneCode As String)
|
|
'//이입력존을 사용하는 입력면을 복제해서 연결해준다.
|
|
Dim 사용입력면() As DS.tbl_myounRow = DSET1.tbl_myoun.Select("존분류='" + ZoneCode + "'")
|
|
For Each 기존입력면 As DS.tbl_myounRow In 사용입력면
|
|
Dim 신규입력면 As DS.tbl_myounRow = DSET1.tbl_myoun.Newtbl_myounRow
|
|
For Each 기존컬럼 As DataColumn In DSET1.tbl_myoun.Columns
|
|
If 기존컬럼.ColumnName.ToUpper = "CODE" Then
|
|
신규입력면.code = GetMyounMaxCode(DSET1.tbl_myoun)
|
|
Else
|
|
신규입력면(기존컬럼.ColumnName) = 기존입력면(기존컬럼.ColumnName)
|
|
End If
|
|
Next
|
|
신규입력면.존분류 = newzoneCode
|
|
DSET1.tbl_myoun.Rows.Add(신규입력면)
|
|
DSET1.tbl_myoun.AcceptChanges()
|
|
Next
|
|
End Sub
|
|
|
|
'''면의새로운코드값을계산할때사용한다.
|
|
Private Function GetMyounMaxCode(ByVal dt As DataTable) As String
|
|
Try
|
|
Dim Dr As DataRow = dt.Select("", "code desc")(0)
|
|
Return Format(CInt(Dr("code")) + 1, "0000")
|
|
Catch ex As Exception
|
|
Return "0001"
|
|
End Try
|
|
End Function
|
|
|
|
Private Function GetNewZoneCode() As String
|
|
Try
|
|
Dim Dr As DataRow = DSET1.tbl_zone.Select("", "code desc")(0)
|
|
Dim Dr_myoun As DataRow = DSET1.tbl_myoun.Select("", "존분류 desc")(0)
|
|
If Dr("code") >= Dr_myoun("존분류") Then
|
|
Return Format(CInt(Dr("code")) + 1, "0000")
|
|
Else
|
|
Return Format(CInt(Dr_myoun("존분류")) + 1, "0000")
|
|
End If
|
|
Catch ex As Exception
|
|
Return "0001"
|
|
End Try
|
|
End Function
|
|
|
|
|
|
#End Region
|
|
|
|
|
|
|
|
Private Sub BtCalc_Click(sender As Object, e As EventArgs)
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton9_Click(sender As Object, e As EventArgs) Handles mbt_report_od.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
|
|
Frm_v20091231_Report.Show()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton10_Click(sender As Object, e As EventArgs) Handles ribbonButton10.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
|
|
If Program = EProgram.친환경평가 Then
|
|
Report_친환경.Show()
|
|
Else
|
|
Report_검토서2.Show()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton5_Click(sender As Object, e As EventArgs) Handles ribbonButton5.Click
|
|
Menu_New()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton6_Click(sender As Object, e As EventArgs) Handles ribbonButton6.Click
|
|
Menu_Open()
|
|
End Sub
|
|
|
|
Sub Menu_Save()
|
|
'/여긴 버튼 클릭됫을떄 일어나는 이벤트 아시죵 ^^?
|
|
If Not Prj.Opened Then
|
|
MsgBox(CLang.열린파일없음, MsgBoxStyle.Information, "확인")
|
|
Return
|
|
End If
|
|
|
|
'//열려잇는 폼이 있다면 저장하도록한다.
|
|
For Each ChildForm As CForm In Me.MdiChildren
|
|
If ChildForm.HasChanged Then ChildForm.AcceptChanged()
|
|
Next
|
|
|
|
'//파일을 저장한다.
|
|
Func_Save_OD(Prj.FileName)
|
|
End Sub
|
|
|
|
Sub Menu_SaveAs()
|
|
If Prj.FileName = "" Then
|
|
MsgBox(CLang.열린파일없음, MsgBoxStyle.Information, "확인")
|
|
Return
|
|
End If
|
|
|
|
'//열려잇는 폼이 있다면 저장하도록한다.
|
|
For Each ChildForm As CForm In Me.MdiChildren
|
|
If ChildForm.HasChanged Then ChildForm.AcceptChanged()
|
|
Next
|
|
|
|
Dim SD As New SaveFileDialog With {
|
|
.FileName = Prj.FileName,
|
|
.Filter = "템플릿파일(*." + FileExt + ")|*." + FileExt + "|모든파일(*.*)|*.*",
|
|
.FilterIndex = 0
|
|
}
|
|
|
|
If SD.ShowDialog <> Windows.Forms.DialogResult.OK Then Return
|
|
Prj.FileName = SD.FileName
|
|
|
|
Me.Func_Save_OD(Prj.FileName)
|
|
End Sub
|
|
|
|
Private Sub BtSaveFile_Click(sender As Object, e As EventArgs) Handles mbt_save.Click
|
|
Menu_Save()
|
|
End Sub
|
|
|
|
Private Sub BTSaveNew_Click(sender As Object, e As EventArgs) Handles mbt_save2.Click
|
|
Menu_SaveAs()
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton13_Click(sender As Object, e As EventArgs) Handles RibbonButton13.Click
|
|
Frm_About.ShowDialog()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton9_Click_1(sender As Object, e As EventArgs) Handles RibbonButton9.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
|
|
If Frm_FileInfo.ShowDialog = Windows.Forms.DialogResult.OK Then
|
|
Refresh_StatusInfo()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub RibbonButton11_Click(sender As Object, e As EventArgs) Handles btShowWeather.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
'Me.Toggle_Menu_Color(E_MenuIdx.기상데이터)
|
|
Frm_Weather.ControlBox = True
|
|
Frm_Weather.ShowDialog()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton12_Click(sender As Object, e As EventArgs) Handles ribbonButton12.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
Frm_profile.ControlBox = True
|
|
Frm_profile.Show()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton14_Click(sender As Object, e As EventArgs)
|
|
Dim but As C1.Win.C1Ribbon.RibbonButton = CType(sender, C1.Win.C1Ribbon.RibbonButton)
|
|
Dim idx As Integer = CInt(but.Tag.ToString)
|
|
Read_PreFile(idx)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton14_Click_1(sender As Object, e As EventArgs) Handles RibbonButton14.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
Frm_Common.ControlBox = True
|
|
Frm_Common.Show()
|
|
'Show_menu(New Frm_Common)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton15_Click(sender As Object, e As EventArgs) Handles RibbonButton15.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
Frm_RepResult_Admin.ControlBox = True
|
|
Frm_RepResult_Admin.Show()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton16_Click(sender As Object, e As EventArgs) Handles RibbonButton16.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
Frm_Zone.ControlBox = True
|
|
Frm_Zone.Show()
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' 지정한 폼이 열려있는지를 확인함
|
|
''' </summary>
|
|
''' <param name="TagStr"></param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Function CheckOpenForm(TagStr As String) As CForm
|
|
Dim childf As Form = Nothing
|
|
For Each cf As Form In Me.MdiChildren
|
|
If cf.Tag.ToString = TagStr Then
|
|
childf = cf
|
|
Exit For
|
|
End If
|
|
Next
|
|
Return childf
|
|
End Function
|
|
|
|
Sub Show_Menu(fNo As Integer)
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
|
|
'//해당폼이 열여있는지 확인한다.
|
|
Dim ftagStr As String = fNo.ToString()
|
|
Dim ChildForm As CForm = CheckOpenForm(ftagStr)
|
|
If Not ChildForm Is Nothing Then '//기존에 열려있는 폼이다.
|
|
If ChildForm.WindowState = FormWindowState.Minimized Then ChildForm.WindowState = FormWindowState.Normal
|
|
ChildForm.Show()
|
|
ChildForm.Activate()
|
|
Else
|
|
If fNo = 1 Then
|
|
ChildForm = New Frm_1_Basic()
|
|
ElseIf fNo = 2 Then
|
|
ChildForm = New Frm_2_Build()
|
|
ElseIf fNo = 3 Then
|
|
ChildForm = New Frm_3_Mach()
|
|
ElseIf fNo = 4 Then
|
|
ChildForm = New Frm_5_New()
|
|
ElseIf fNo = 5 Then
|
|
ChildForm = New Frm_6_Req()
|
|
End If
|
|
|
|
ChildForm.MdiParent = Me
|
|
ChildForm.Show()
|
|
End If
|
|
End Sub
|
|
Private Sub BtMenu_Click(sender As Object, e As EventArgs) Handles bt1.Click, bt2.Click, bt3.Click, bt4.Click, bt5.Click
|
|
|
|
Dim but As C1.Win.C1Ribbon.RibbonButton = sender
|
|
|
|
If but Is bt1 Then
|
|
Show_Menu(1)
|
|
ElseIf but Is bt2 Then
|
|
Show_Menu(2)
|
|
ElseIf but Is bt3 Then
|
|
Show_Menu(3)
|
|
ElseIf but Is bt4 Then
|
|
Show_Menu(4)
|
|
ElseIf but Is bt5 Then
|
|
Show_Menu(5)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton1_Click(sender As System.Object, e As System.EventArgs) Handles RibbonButton1.Click
|
|
Me.LayoutMdi(MdiLayout.TileHorizontal)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton2_Click(sender As System.Object, e As System.EventArgs) Handles RibbonButton2.Click
|
|
Me.LayoutMdi(MdiLayout.Cascade)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton3_Click(sender As System.Object, e As System.EventArgs) Handles RibbonButton3.Click
|
|
Try
|
|
For Each child As CForm In Me.MdiChildren
|
|
If child.HasChanged Then child.AcceptChanged()
|
|
child.Close()
|
|
Next
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message, MsgBoxStyle.Critical, "Error")
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton4_Click(sender As Object, e As EventArgs) Handles RibbonButton4.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
Frm_Yk.ControlBox = True
|
|
Frm_Yk.Show()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton7_Click(sender As Object, e As EventArgs) Handles RibbonButton7.Click
|
|
Me.LayoutMdi(MdiLayout.TileVertical)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton17_Click(sender As Object, e As EventArgs)
|
|
Me.LayoutMdi(MdiLayout.ArrangeIcons)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton8_Click(sender As Object, e As EventArgs) Handles RibbonButton8.Click
|
|
Show_Menu(1)
|
|
Show_Menu(2)
|
|
Show_Menu(3)
|
|
Show_Menu(4)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton18_Click(sender As Object, e As EventArgs) Handles RibbonButton18.Click
|
|
Read_FilHistory()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton20_Click(sender As Object, e As EventArgs) Handles RibbonButton20.Click
|
|
Frm_ExtReport.Show()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton21_Click(sender As System.Object, e As System.EventArgs) Handles RibbonButton21.Click
|
|
Dim sd As New SaveFileDialog
|
|
If sd.ShowDialog() <> Windows.Forms.DialogResult.OK Then Return
|
|
DSETR1.ExtReport.WriteXml(sd.FileName, XmlWriteMode.WriteSchema)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton22_Click(sender As System.Object, e As System.EventArgs)
|
|
'//실행폴더내의 cache 폴더에 저장한다.
|
|
Dim savepath As New System.IO.DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\Cache")
|
|
If Not savepath.Exists Then savepath.Create()
|
|
|
|
'//지역및 기상데이터를 모두저장한다.
|
|
If DSET1.tbl_weather_od.Rows.Count < 2 Then
|
|
MsgBox("저장가능한 기상데이터가 없습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
|
|
Try
|
|
DSET1.tbl_weather_od.WriteXml(savepath.FullName + "\tbl_weather_od.xml")
|
|
DSET1.weather_group.WriteXml(savepath.FullName + "\weather_group.xml")
|
|
DSET1.weather_cha_od.WriteXml(savepath.FullName + "\weather_cha_od.xml")
|
|
DSET1.weather_ilsa_od.WriteXml(savepath.FullName + "\weather_ilsa_od.xml")
|
|
DSET1.weather_supdo_od.WriteXml(savepath.FullName + "\weather_supdo_od.xml")
|
|
DSET1.weather_temp_od.WriteXml(savepath.FullName + "\weather_temp_od.xml")
|
|
MsgBox("저장완료", MsgBoxStyle.Information, "확인")
|
|
Shell("explorer " + savepath.FullName, AppWinStyle.NormalFocus)
|
|
Catch ex As Exception
|
|
MsgBox("저장 중 오류가 발생했습니다" + vbCrLf + ex.Message, MsgBoxStyle.Critical, "확인")
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton23_Click(sender As System.Object, e As System.EventArgs)
|
|
'//실행폴더내의 cache 폴더에 저장한다.
|
|
Dim savepath As New System.IO.DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + "\Cache")
|
|
If Not savepath.Exists Then savepath.Create()
|
|
|
|
'//지역및 기상데이터를 모두저장한다.
|
|
If DSET1.tbl_common_od.Rows.Count < 2 Then
|
|
MsgBox("저장가능한 공용데이터가 없습니다", MsgBoxStyle.Critical, "확인")
|
|
Return
|
|
End If
|
|
|
|
Try
|
|
DSET1.tbl_common_od.WriteXml(savepath.FullName + "\tbl_common_od.xml")
|
|
MsgBox("저장완료", MsgBoxStyle.Information, "확인")
|
|
Shell("explorer " + savepath.FullName, AppWinStyle.NormalFocus)
|
|
Catch ex As Exception
|
|
MsgBox("저장 중 오류가 발생했습니다" + vbCrLf + ex.Message, MsgBoxStyle.Critical, "확인")
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btVerCheck_Click(sender As Object, e As EventArgs) Handles btVerCheck.Click
|
|
Work_msg("프로그램 버젼확인중")
|
|
|
|
Dim MyVersion As String = Format(My.Application.Info.Version.Minor, "0000") & Format(My.Application.Info.Version.Build, "0000")
|
|
Dim MyProgVer As String = ""
|
|
If Pub.Program = EProgram.친환경평가 Then
|
|
MyVersion = "20171215" '"20170708"
|
|
MyProgVer = "20180118"
|
|
Else
|
|
MyVersion = "20180901" '//ui version
|
|
MyProgVer = "20180901" '//interface version
|
|
End If
|
|
|
|
'MyProgVer = "20170710"
|
|
|
|
'//네트워크 연결이되면 체크한다.
|
|
If Pub.CheckInternet Then
|
|
lbOnline.Text = String.Format("[{0}]", "Online")
|
|
Dim L As New ArinLogin.ArinLOgin
|
|
Dim VersionInfo As ArinLogin.ArinLOgin.sVersionInfo = Nothing
|
|
|
|
'//로직용 버젼체크
|
|
Try
|
|
If Program = EProgram.총량평가 Then
|
|
VersionInfo = L.Get_LastVersion("N") '//총량평가
|
|
Else
|
|
VersionInfo = L.Get_LastVersion("O") '//친환경평가
|
|
End If
|
|
Catch ex As Exception
|
|
End
|
|
End Try
|
|
If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0은 없거나 관리안함의 뜻이므로 넘어간다.
|
|
Dim Msg As New System.Text.StringBuilder
|
|
Msg.AppendLine("새로운 버젼이 확인되었습니다" & vbCrLf)
|
|
Msg.AppendLine("현재버젼:" & MyVersion & " 신규버젼:" & VersionInfo.Ver)
|
|
Msg.AppendLine("----------------------------------")
|
|
Msg.AppendLine(VersionInfo.Desc)
|
|
Msg.AppendLine("----------------------------------")
|
|
If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소"
|
|
If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then
|
|
End If
|
|
End '2011.03.08 프로그램이 최신버전이 아니면 프로그램을 종료시킨다.
|
|
Else
|
|
'//프로그램버젼을 추가로 체크한다.
|
|
Try
|
|
If Program = EProgram.총량평가 Then
|
|
VersionInfo = L.Get_LastVersion("Q") '//총량평가 (프로그램)
|
|
Else
|
|
VersionInfo = L.Get_LastVersion("R") '//친환경평가 (프로그램)
|
|
End If
|
|
Catch ex As Exception
|
|
End
|
|
End Try
|
|
|
|
If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyProgVer)) Then '//0은 없거나 관리안함의 뜻이므로 넘어간다.
|
|
Dim Msg As New System.Text.StringBuilder
|
|
Msg.AppendLine("프로그램의 인터페이스가 변경되었습니다." & vbCrLf)
|
|
Msg.AppendLine("현재버젼:" & MyProgVer & " 신규버젼:" & VersionInfo.Ver)
|
|
Msg.AppendLine("----------------------------------")
|
|
Msg.AppendLine(VersionInfo.Desc)
|
|
Msg.AppendLine("----------------------------------")
|
|
If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소"
|
|
If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then
|
|
End If
|
|
End '2011.03.08 프로그램이 최신버전이 아니면 프로그램을 종료시킨다.
|
|
End If
|
|
MsgBox("최신 버전입니다.", MsgBoxStyle.Information, "확인")
|
|
|
|
End If
|
|
|
|
|
|
Else
|
|
lbOnline.Text = String.Format("[{0}]", "Offline")
|
|
Dim msg As New System.Text.StringBuilder
|
|
msg.AppendLine("오프라인 모드입니다")
|
|
msg.AppendLine("신규버젼 체크를 할 수 없습니다")
|
|
msg.AppendLine("신규버젼은 {0}에서 확인 하시기 바랍니다")
|
|
MsgBox(msg.ToString(), MsgBoxStyle.Information, "확인")
|
|
End If
|
|
|
|
Work_msg("")
|
|
End Sub
|
|
|
|
Private Sub RibbonButton24_Click(sender As Object, e As EventArgs) Handles mbt_calc.Click
|
|
|
|
For Each f As CForm In Me.MdiChildren
|
|
'//새로여는 화면이 기존화면과 같다면 그냥 있늦다.
|
|
If f.HasChanged Then f.AcceptChanged()
|
|
Next
|
|
|
|
'If Me.OpenedForm <> E_MenuIdx.NONE Then
|
|
|
|
'End If
|
|
|
|
Func_Calc_OD()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton24_Click_1(sender As Object, e As EventArgs) Handles RibbonButton24.Click
|
|
|
|
'//save file (weather, profile)
|
|
Dim fn0 As String = AppDomain.CurrentDomain.BaseDirectory + "\common.dat"
|
|
Dim fn1 As String = AppDomain.CurrentDomain.BaseDirectory + "\profile.dat"
|
|
Dim fn2 As String = AppDomain.CurrentDomain.BaseDirectory + "\weather{0}.dat"
|
|
|
|
If MsgBox("암호화를 하시겠습니까?", MsgBoxStyle.YesNo, "확인") = MsgBoxResult.Yes Then
|
|
Dim ms0 As New System.IO.MemoryStream()
|
|
Dim ms1 As New System.IO.MemoryStream()
|
|
Dim ms2 As New System.IO.MemoryStream()
|
|
|
|
Dim ms21 As New System.IO.MemoryStream()
|
|
Dim ms22 As New System.IO.MemoryStream()
|
|
Dim ms23 As New System.IO.MemoryStream()
|
|
Dim ms24 As New System.IO.MemoryStream()
|
|
Dim ms25 As New System.IO.MemoryStream()
|
|
|
|
Dim ms26 As New System.IO.MemoryStream()
|
|
Dim ms27 As New System.IO.MemoryStream()
|
|
Dim ms28 As New System.IO.MemoryStream()
|
|
|
|
DSET1.tbl_common_od.WriteXml(ms0)
|
|
Dim buffer0() As Byte = EnctryArea(ms0.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn0, ""), buffer0)
|
|
|
|
DSET1.tbl_profile_od.WriteXml(ms1)
|
|
buffer0 = EnctryArea(ms1.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn1, ""), buffer0)
|
|
|
|
DSET1.tbl_weather_od.WriteXml(ms2)
|
|
buffer0 = EnctryArea(ms2.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, ""), buffer0)
|
|
|
|
DSET1.weather_cha_od.WriteXml(ms21)
|
|
buffer0 = EnctryArea(ms21.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, "_ch"), buffer0)
|
|
|
|
DSET1.weather_group.WriteXml(ms22)
|
|
buffer0 = EnctryArea(ms22.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, "_gr"), buffer0)
|
|
|
|
DSET1.weather_ilsa_od.WriteXml(ms23)
|
|
buffer0 = EnctryArea(ms23.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, "_is"), buffer0)
|
|
|
|
DSET1.weather_supdo_od.WriteXml(ms24)
|
|
buffer0 = EnctryArea(ms24.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, "_sd"), buffer0)
|
|
|
|
DSET1.weather_temp_od.WriteXml(ms25)
|
|
buffer0 = EnctryArea(ms25.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, "_tp"), buffer0)
|
|
|
|
DSET1.weather_water.WriteXml(ms26)
|
|
buffer0 = EnctryArea(ms26.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, "_water"), buffer0)
|
|
|
|
DSET1.weather_river.WriteXml(ms27)
|
|
buffer0 = EnctryArea(ms27.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, "_river"), buffer0)
|
|
|
|
DSET1.weather_wind.WriteXml(ms28)
|
|
buffer0 = EnctryArea(ms28.GetBuffer())
|
|
System.IO.File.WriteAllBytes(String.Format(fn2, "_wind"), buffer0)
|
|
Else
|
|
DSET1.tbl_common_od.WriteXml(String.Format(fn0, "") + ".xml", True)
|
|
DSET1.tbl_profile_od.WriteXml(String.Format(fn1, "") + ".xml", True)
|
|
DSET1.tbl_weather_od.WriteXml(String.Format(fn2, "") + ".xml", True)
|
|
DSET1.weather_cha_od.WriteXml(String.Format(fn2, "_ch") + ".xml", True)
|
|
DSET1.weather_group.WriteXml(String.Format(fn2, "_gr") + ".xml", True)
|
|
DSET1.weather_ilsa_od.WriteXml(String.Format(fn2, "_is") + ".xml", True)
|
|
DSET1.weather_supdo_od.WriteXml(String.Format(fn2, "_sd") + ".xml", True)
|
|
DSET1.weather_temp_od.WriteXml(String.Format(fn2, "_tp") + ".xml", True)
|
|
|
|
DSET1.weather_water.WriteXml(String.Format(fn2, "_water") + ".xml", True)
|
|
DSET1.weather_river.WriteXml(String.Format(fn2, "_river") + ".xml", True)
|
|
DSET1.weather_wind.WriteXml(String.Format(fn2, "_wind") + ".xml", True)
|
|
End If
|
|
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton25_Click(sender As Object, e As EventArgs) Handles RibbonButton25.Click
|
|
DSET1.tbl_yk.Clear()
|
|
DSET1.tbl_ykdetail.Clear()
|
|
DSET1.tbl_new.Clear()
|
|
DSET1.tbl_new_energy.Clear()
|
|
DSET1.tbl_new_ground.Clear()
|
|
DSET1.tbl_new_light.Clear()
|
|
DSET1.AcceptChanges()
|
|
DSETR1.ExtReport.Clear()
|
|
DSETR1.AcceptChanges()
|
|
End Sub
|
|
|
|
Private Sub RibbonButton26_Click(sender As Object, e As EventArgs) Handles RibbonButton26.Click
|
|
DSET1.tbl_profile_od.Clear()
|
|
DSET1.tbl_weather_od.Clear()
|
|
DSET1.weather_cha_od.Clear()
|
|
DSET1.weather_ilsa_od.Clear()
|
|
DSET1.weather_temp_od.Clear()
|
|
DSET1.weather_supdo_od.Clear()
|
|
DSET1.weather_group.Clear()
|
|
|
|
DSET1.weather_water.Clear()
|
|
DSET1.weather_river.Clear()
|
|
DSET1.weather_wind.Clear()
|
|
DSET1.AcceptChanges()
|
|
End Sub
|
|
|
|
|
|
Private Sub RibbonButton11_Click_1(sender As System.Object, e As System.EventArgs) Handles RibbonButton11.Click
|
|
'//tpl test
|
|
Dim od As New OpenFileDialog()
|
|
od.Filter = "tpl|*.tpl"
|
|
If (od.ShowDialog() = Windows.Forms.DialogResult.OK) Then
|
|
Open_TPL(od.FileName)
|
|
End If
|
|
|
|
End Sub
|
|
|
|
|
|
Private Function Open_TPL(ByVal FileName As String) As String
|
|
|
|
'//현재열려있는프로젝트를 닫는다.
|
|
DSET1.Clear()
|
|
DSET2.Clear()
|
|
DSETR1.Clear()
|
|
DSETR2.Clear()
|
|
DSET1.AcceptChanges()
|
|
DSET2.AcceptChanges()
|
|
DSETR1.AcceptChanges()
|
|
DSETR2.AcceptChanges()
|
|
|
|
|
|
Prj.IsError = False '//160509
|
|
|
|
'//파일을 열어서 템플릿이름을 가져온다
|
|
Dim FS As System.IO.Stream
|
|
FS = New IO.FileStream(FileName, IO.FileMode.Open)
|
|
|
|
Dim Br As New IO.BinaryReader(FS, System.Text.Encoding.Default)
|
|
Prj.FileName = FileName
|
|
Prj.Opened = False
|
|
|
|
'//세이브파일구조(2)
|
|
Prj.SFType = STB(Br.ReadBytes(2))
|
|
|
|
|
|
Dim ext As String = "ECL2"
|
|
Select Case Prj.SFType
|
|
Case "00", "10" '//기본버젼
|
|
Prj.UIVersion = STB(Br.ReadBytes(10))
|
|
Prj.LGVersino = STB(Br.ReadBytes(10))
|
|
Select Case Prj.LGVersino
|
|
Case "2009123100", "2010030700", "2010031400"
|
|
Prj.LGVersino = StartVersion
|
|
End Select
|
|
Select Case Prj.UIVersion
|
|
Case "2009123100", "2010030700", "2010031400"
|
|
Prj.UIVersion = StartVersion
|
|
Prj.UIVersion = StartVersion
|
|
End Select
|
|
|
|
Prj.Name = STB(Br.ReadBytes(100))
|
|
Prj.Desc = STB(Br.ReadBytes(256))
|
|
Prj.MakeTime = STB(Br.ReadBytes(19))
|
|
Prj.EditTime = STB(Br.ReadBytes(19))
|
|
' MsgBox(Br.BaseStream.Position)
|
|
|
|
'//DS1 데이터초기화 및 오픈
|
|
DSET1.Clear() : DSET1.AcceptChanges()
|
|
Dim DS1Len As Int64 = Br.ReadInt64
|
|
If DS1Len = 0 Then
|
|
DS1Len = FS.Length - Br.BaseStream.Position - 2
|
|
End If
|
|
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1Len, MsgBoxStyle.Information, Hex(DS1Len))
|
|
Dim DS1() As Byte
|
|
Try
|
|
DS1 = Br.ReadBytes(CInt(DS1Len))
|
|
Catch ex As Exception
|
|
Prj.IsError = True
|
|
MsgBox("파일이 손상되었습니다(Read Data Array)." & vbCrLf & FileName & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 byteRead Error")
|
|
End Try
|
|
|
|
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1.Length, MsgBoxStyle.Information, DS1Len)
|
|
If Not Prj.IsError Then
|
|
Dim Ms As New IO.MemoryStream(DS1)
|
|
Try
|
|
DSET1.ReadXml(Ms)
|
|
DSET1.AcceptChanges()
|
|
Ms.Close()
|
|
Catch ex As Exception
|
|
Prj.IsError = True
|
|
MsgBox("파일이 손상되었습니다(Read DataSet)" & vbCrLf & FileName & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error")
|
|
End Try
|
|
|
|
If Prj.IsError Then
|
|
If MsgBox("데이터를 복구모드로 확인하시겠습니까?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, "확인") = MsgBoxResult.Yes Then
|
|
'//메모리버퍼르 utf8를 이용하여 데이터처리를 해야한다
|
|
Dim accCount As UInteger = 0
|
|
Ms.Position = 0
|
|
Dim AllDataList As String = System.Text.Encoding.UTF8.GetString(DS1)
|
|
My.Computer.FileSystem.WriteAllText("c:\temp\1.txt", AllDataList, False)
|
|
Dim CurrentTable As String = ""
|
|
Dim dr As DataRow = Nothing
|
|
|
|
For Each line As String In AllDataList.Split(vbCrLf)
|
|
|
|
|
|
|
|
'//각줄을 가지고 처리를 한다
|
|
line = line.Trim
|
|
If line.ToLower.StartsWith("<ds") AndAlso line.EndsWith(">") Then
|
|
'//데이터셋선언부이므로 넘어간다
|
|
ElseIf line.ToLower.StartsWith("<weather_") AndAlso line.EndsWith(">") Then
|
|
CurrentTable = line.Substring(1, line.Length - 2)
|
|
dr = DSET1.Tables(CurrentTable).NewRow
|
|
ElseIf line.ToLower.StartsWith("</weather_") AndAlso line.EndsWith(">") Then
|
|
'//테이블의 종료
|
|
'//
|
|
accCount += 1
|
|
DSET1.Tables(CurrentTable).Rows.Add(dr)
|
|
CurrentTable = ""
|
|
ElseIf line.ToLower.StartsWith("<tbl_") AndAlso line.EndsWith(">") Then
|
|
CurrentTable = line.Substring(1, line.Length - 2)
|
|
dr = DSET1.Tables(CurrentTable).NewRow
|
|
ElseIf line.ToLower.StartsWith("</tbl_") AndAlso line.EndsWith(">") Then
|
|
'//테이블의 종료
|
|
DSET1.Tables(CurrentTable).Rows.Add(dr)
|
|
accCount += 1
|
|
CurrentTable = ""
|
|
Else
|
|
'//일반데이터
|
|
If String.IsNullOrWhiteSpace(CurrentTable) Then Continue For
|
|
Dim 닫는태그위치 As Integer = line.IndexOf(">")
|
|
If 닫는태그위치 > -1 Then
|
|
Dim 필드명 As String = line.Substring(1, 닫는태그위치 - 1)
|
|
Dim 값종료태그위치 As Integer = line.IndexOf("<", 닫는태그위치)
|
|
If 값종료태그위치 > -1 Then
|
|
Dim 내부값 As String = line.Substring(닫는태그위치 + 1, 값종료태그위치 - 닫는태그위치 - 1)
|
|
dr(필드명) = 내부값
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
'//만약입력존이 없고 입력면 데이터가 있다면 존분류값을 이용해서 존을 우선 생성해준다
|
|
If DSET1.tbl_zone.Rows.Count < 2 AndAlso DSET1.tbl_myoun.Rows.Count > 1 Then
|
|
For Each drMn As DS.tbl_myounRow In DSET1.tbl_myoun.Rows
|
|
Dim 존분류 As String = drMn.존분류.Trim
|
|
If String.IsNullOrWhiteSpace(존분류) Then Continue For
|
|
Dim 존데이터갯수 As Integer = DSET1.tbl_zone.Select("code='" + 존분류 + "'").Length
|
|
If 존데이터갯수 = 0 Then
|
|
Dim 뉴존 As DS.tbl_zoneRow = DSET1.tbl_zone.Newtbl_zoneRow
|
|
뉴존.code = 존분류
|
|
뉴존.설명 = "자동생성(" + 존분류 + ")"
|
|
DSET1.tbl_zone.Addtbl_zoneRow(뉴존)
|
|
accCount += 1
|
|
End If
|
|
Next
|
|
DSET1.tbl_zone.AcceptChanges()
|
|
End If
|
|
|
|
MsgBox(accCount.ToString() + "건의 자료가 복구되었습니다", MsgBoxStyle.Critical, "확인")
|
|
DSET1.AcceptChanges()
|
|
DSETR1.Clear() : DSETR1.AcceptChanges()
|
|
Prj.IsError = False
|
|
End If
|
|
Else
|
|
'//에러가없는경우 다음진행
|
|
|
|
'//DS1가 있다면 게속 한다
|
|
DSETR1.Clear() : DSETR1.AcceptChanges()
|
|
DS1Len = Br.ReadInt64
|
|
DS1 = Br.ReadBytes(CInt(DS1Len))
|
|
Ms = New IO.MemoryStream(DS1)
|
|
Try
|
|
DSETR1.ReadXml(Ms)
|
|
DSETR1.AcceptChanges()
|
|
Ms.Close()
|
|
Catch ex As Exception
|
|
MsgBox("기존 버전의 계산결과를 가져올 수 없습니다." & vbCrLf & FileName & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error")
|
|
End Try
|
|
|
|
Prj.IsError = False
|
|
|
|
End If
|
|
|
|
|
|
End If
|
|
|
|
Case "01" '//기본버젼(+암호
|
|
Prj.UIVersion = STB(Br.ReadBytes(10))
|
|
Prj.LGVersino = STB(Br.ReadBytes(10))
|
|
Select Case Prj.LGVersino
|
|
Case "2009123100", "2010030700", "2010031400"
|
|
Prj.LGVersino = StartVersion
|
|
End Select
|
|
Select Case Prj.UIVersion
|
|
Case "2009123100", "2010030700", "2010031400"
|
|
Prj.UIVersion = StartVersion
|
|
End Select
|
|
Prj.Name = STB(Br.ReadBytes(100))
|
|
Prj.Desc = STB(Br.ReadBytes(256))
|
|
Prj.MakeTime = STB(Br.ReadBytes(19))
|
|
Prj.EditTime = STB(Br.ReadBytes(19))
|
|
Prj.Password = STB(Br.ReadBytes(8)) '//암호에 8바이트할당한다. 즉 8개의문자가가능 한글은 불가로한다
|
|
' MsgBox(Br.BaseStream.Position)
|
|
|
|
'//DS1 데이터초기화 및 오픈
|
|
DSET1.Clear() : DSET1.AcceptChanges()
|
|
Dim DS1Len As Int64 = Br.ReadInt64
|
|
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1Len, MsgBoxStyle.Information, Hex(DS1Len))
|
|
Dim DS1() As Byte = Br.ReadBytes(CInt(DS1Len))
|
|
'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1.Length, MsgBoxStyle.Information, DS1Len)
|
|
Dim Ms As New IO.MemoryStream(DS1)
|
|
Try
|
|
DSET1.ReadXml(Ms)
|
|
DSET1.AcceptChanges()
|
|
Ms.Close()
|
|
Catch ex As Exception
|
|
MsgBox("파일이 손상되었습니다." & vbCrLf & FileName & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error")
|
|
End Try
|
|
|
|
'//DS1가 있다면 게속 한다
|
|
DSETR1.Clear() : DSETR1.AcceptChanges()
|
|
DS1Len = Br.ReadInt64
|
|
DS1 = Br.ReadBytes(CInt(DS1Len))
|
|
Ms = New IO.MemoryStream(DS1)
|
|
Try
|
|
DSETR1.ReadXml(Ms)
|
|
DSETR1.AcceptChanges()
|
|
Ms.Close()
|
|
Catch ex As Exception
|
|
MsgBox("기존 버전의 계산결과를 가져올 수 없습니다." & vbCrLf & FileName & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error")
|
|
End Try
|
|
Prj.IsError = False
|
|
Case Else
|
|
MsgBox("파일을 불러올 수 없습니다1" & vbCrLf & FileName, MsgBoxStyle.Critical, "불러오기실패")
|
|
Prj.IsError = True
|
|
End Select
|
|
|
|
Br.Close()
|
|
FS.Close()
|
|
|
|
|
|
If Not Prj.IsError Then
|
|
Prj.Opened = True
|
|
'e.m_initdata.Enabled = True
|
|
|
|
'Frm_Work.MdiParent = Me
|
|
Frm_Work.Label1.Text = "데이터를 확인하고 있습니다"
|
|
Frm_Work.Show()
|
|
|
|
If DSET1.tbl_buha.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_buha.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_bunbae.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_bunbae.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_kongjo.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_kongjo.Rows.Add(New String() {"0", "(없음)"})
|
|
'If DSET1.tbl_kongkub.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_kongkub.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_myoun.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_myoun.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_nanbangkiki.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_nanbangkiki.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_nangbangkiki.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_nangbangkiki.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_nbunbae.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_nbunbae.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_new.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_new.Rows.Add(New String() {"0", "(없음)"})
|
|
|
|
If DSET1.tbl_profile_od.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_profile_od.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_weather_od.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_weather_od.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_zone.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_zone.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_yk.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_yk.Rows.Add(New String() {"0", "(없음)"})
|
|
If DSET1.tbl_Desc.Rows.Count < 1 Then
|
|
MsgBox("건물개요데이터가 없으므로 초기자료를 생성합니다", MsgBoxStyle.Critical, "확인")
|
|
Dim newdescdr As DS.tbl_DescRow = DSET1.tbl_Desc.NewRow
|
|
newdescdr.name = "오류"
|
|
newdescdr.buildarea = "0001"
|
|
DSET1.tbl_Desc.Addtbl_DescRow(newdescdr)
|
|
DSET1.tbl_Desc.AcceptChanges()
|
|
End If
|
|
|
|
|
|
'//날씨정보는 기상
|
|
'//save file (weather, profile)
|
|
DSET1.tbl_common_od.Clear()
|
|
DSET1.tbl_profile_od.Clear()
|
|
DSET1.tbl_weather_od.Clear()
|
|
DSET1.weather_cha_od.Clear()
|
|
DSET1.weather_group.Clear()
|
|
DSET1.weather_ilsa_od.Clear()
|
|
DSET1.weather_supdo_od.Clear()
|
|
DSET1.weather_temp_od.Clear()
|
|
Dim fn0 As String = AppDomain.CurrentDomain.BaseDirectory + "\common.dat"
|
|
Dim fn1 As String = AppDomain.CurrentDomain.BaseDirectory + "\profile.dat"
|
|
Dim fn2 As String = AppDomain.CurrentDomain.BaseDirectory + "\weather{0}.dat"
|
|
|
|
If System.IO.File.Exists(fn0) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn0, ""))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.tbl_common_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.tbl_common_od.ReadXml(String.Format(fn0, ""))
|
|
End If
|
|
End If
|
|
|
|
If System.IO.File.Exists(fn1) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn1, ""))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.tbl_profile_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.tbl_profile_od.ReadXml(String.Format(fn1, ""))
|
|
End If
|
|
End If
|
|
If System.IO.File.Exists(String.Format(fn2, "")) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, ""))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.tbl_weather_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.tbl_weather_od.ReadXml(String.Format(fn2, ""))
|
|
End If
|
|
|
|
End If
|
|
If System.IO.File.Exists(String.Format(fn2, "_ch")) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_ch"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_cha_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_cha_od.ReadXml(String.Format(fn2, "_ch"))
|
|
End If
|
|
|
|
|
|
End If
|
|
If System.IO.File.Exists(String.Format(fn2, "_gr")) Then
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_gr"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_group.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_group.ReadXml(String.Format(fn2, "_gr"))
|
|
End If
|
|
End If
|
|
|
|
If System.IO.File.Exists(String.Format(fn2, "_is")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_is"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_ilsa_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_ilsa_od.ReadXml(String.Format(fn2, "_is"))
|
|
End If
|
|
|
|
End If
|
|
|
|
|
|
If System.IO.File.Exists(String.Format(fn2, "_sd")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_sd"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_supdo_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_supdo_od.ReadXml(String.Format(fn2, "_sd"))
|
|
End If
|
|
|
|
End If
|
|
If System.IO.File.Exists(String.Format(fn2, "_tp")) Then
|
|
|
|
Dim buffer() As Byte = System.IO.File.ReadAllBytes(String.Format(fn2, "_tp"))
|
|
If (buffer(0) = &H90) Then '//암호화된파일
|
|
Dim decKey() As Byte = New Byte() {&HAC, &H29, &H55, &H42}
|
|
Dim newbuffer() As Byte = DeCryptArea(buffer, decKey)
|
|
Dim ms0 As New System.IO.MemoryStream(newbuffer)
|
|
DSET1.weather_temp_od.ReadXml(ms0)
|
|
Else
|
|
'//아닌파일
|
|
DSET1.weather_temp_od.ReadXml(String.Format(fn2, "_tp"))
|
|
End If
|
|
|
|
End If
|
|
|
|
DSET1.tbl_common_od.AcceptChanges()
|
|
DSET1.tbl_profile_od.AcceptChanges()
|
|
DSET1.tbl_weather_od.AcceptChanges()
|
|
DSET1.weather_cha_od.AcceptChanges()
|
|
DSET1.weather_group.AcceptChanges()
|
|
DSET1.weather_ilsa_od.AcceptChanges()
|
|
DSET1.weather_supdo_od.AcceptChanges()
|
|
DSET1.weather_temp_od.AcceptChanges()
|
|
|
|
DSET1.AcceptChanges()
|
|
|
|
|
|
'//입력존 데이터 취합
|
|
Dim 존면적합 As Decimal = 0
|
|
Dim 존수합 As Integer = 0
|
|
Dim 존면적 As Decimal = 0
|
|
For Each dr존 As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'")
|
|
Dim 존수 As Integer = 0
|
|
If IsNumeric(dr존.입력존의수) Then
|
|
존수 = CInt(dr존.입력존의수)
|
|
Else
|
|
존수 = 1
|
|
End If
|
|
|
|
존수합 += 존수
|
|
If IsNumeric(dr존.면적) Then
|
|
존면적 = dr존.면적 * 존수
|
|
Else
|
|
존면적 = 0
|
|
End If
|
|
존면적합 = 존면적합 + 존면적
|
|
Next
|
|
|
|
|
|
'//건물용도기본값
|
|
DSET1.tbl_type.Clear()
|
|
Dim 용도 As String = DSET1.tbl_Desc.Rows(0)("isjugo").ToString
|
|
If 용도 = "0001" OrElse 용도 = "0002" OrElse 용도 = "1" OrElse 용도 = "2" Then
|
|
'//친환경(ecl3)
|
|
|
|
'//전체존의수
|
|
|
|
|
|
Dim newdr As DS.tbl_typeRow = DSET1.tbl_type.Newtbl_typeRow
|
|
If 존수합 = 0 Then
|
|
newdr.세대면적 = 0
|
|
Else
|
|
newdr.세대면적 = 존면적합 / 존수합
|
|
End If
|
|
|
|
|
|
newdr.세대수 = 존수합
|
|
newdr.세대타입 = "1"
|
|
newdr.code = "0001"
|
|
DSET1.tbl_type.Addtbl_typeRow(newdr)
|
|
DSET1.tbl_type.AcceptChanges()
|
|
|
|
ext = "ECL3"
|
|
Else
|
|
'//ecl2
|
|
|
|
'//층별개요추가
|
|
|
|
Dim new개요 As DS.tbl_typeRow = DSET1.tbl_type.Newtbl_typeRow
|
|
new개요.code = "0001"
|
|
new개요.면적 = 존면적합
|
|
new개요.층 = "업무시설"
|
|
new개요.시설용도 = "0002"
|
|
|
|
DSET1.tbl_type.Addtbl_typeRow(new개요)
|
|
|
|
|
|
ext = "ECL2"
|
|
End If
|
|
|
|
If IsNumeric(용도) = False Then
|
|
DSET1.tbl_Desc.Rows(0)("isjugo") = "1"
|
|
End If
|
|
|
|
'//그룹명이없는경우 처리함(130810:arin)
|
|
For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("isnull(그룹,'')=''")
|
|
dr.그룹 = "기본"
|
|
Next
|
|
|
|
'//월별에너지사용량데이터영역생성(130819:arin)
|
|
If DSET1.tbl_monuse.Rows.Count = 0 Then
|
|
For y As Integer = 1 To 3
|
|
Dim idx As String = y.ToString("0000")
|
|
For i As Integer = 1 To 12
|
|
DSET1.tbl_monuse.Rows.Add(New String() {y.ToString() + "차년도", i.ToString("00"), "0", "0", "0", idx}) '//년,월,도시가스,전력,지역난방,코드
|
|
Next
|
|
Next
|
|
End If
|
|
|
|
'//140808 데이터 기본값 처리
|
|
'//입력존
|
|
If Not DSET1 Is Nothing Then
|
|
For i As Integer = 1 To DSET1.tbl_zone.Rows.Count
|
|
|
|
'//순실체적 재계산 150111
|
|
'순실체적NTb.Text = TOST(TOSG(면적NTb.Text) * TOSG(천장고NTb.Text))
|
|
Dim 면적 As String = ""
|
|
Dim 천장고 As String = ""
|
|
Dim 순실체적 As String = ""
|
|
Try
|
|
면적 = DSET1.tbl_zone.Rows(i - 1)("면적").ToString
|
|
Catch ex As Exception
|
|
면적 = ""
|
|
End Try
|
|
Try
|
|
천장고 = DSET1.tbl_zone.Rows(i - 1)("천장고p").ToString
|
|
Catch ex As Exception
|
|
천장고 = ""
|
|
End Try
|
|
Try
|
|
순실체적 = DSET1.tbl_zone.Rows(i - 1)("순실체적").ToString
|
|
Catch ex As Exception
|
|
순실체적 = ""
|
|
End Try
|
|
If IsNumeric(면적) AndAlso IsNumeric(천장고) Then
|
|
If Not IsNumeric(순실체적) Then
|
|
' MsgBox("순실체적값이 없으므로 재계산 합니다", MsgBoxStyle.Information, "확인")
|
|
DSET1.tbl_zone.Rows(i - 1)("순실체적") = CSng(면적) * CSng(천장고)
|
|
End If
|
|
End If
|
|
If DSET1.tbl_zone.Rows(i - 1).RowState = DataRowState.Deleted OrElse _
|
|
DSET1.tbl_zone.Rows(i - 1).RowState = DataRowState.Detached Then
|
|
Continue For
|
|
End If
|
|
Dim StrCode As String = DSET1.tbl_zone.Rows(i - 1)("code").ToString
|
|
If StrCode.Length = 4 Then
|
|
DSET1.tbl_zone.Rows(i - 1)("code") = "0" + StrCode
|
|
End If
|
|
Next
|
|
DSET1.tbl_zone.AcceptChanges()
|
|
End If
|
|
|
|
If Not DSET2 Is Nothing Then
|
|
For i As Integer = 1 To DSET2.tbl_zone.Rows.Count
|
|
If DSET2.tbl_zone.Rows(i - 1).RowState = DataRowState.Deleted OrElse _
|
|
DSET2.tbl_zone.Rows(i - 1).RowState = DataRowState.Detached Then
|
|
Continue For
|
|
End If
|
|
Dim StrCode As String = DSET2.tbl_zone.Rows(i - 1)("code").ToString
|
|
If StrCode.Length = 4 Then
|
|
DSET2.tbl_zone.Rows(i - 1)("code") = "0" + StrCode
|
|
End If
|
|
Next
|
|
DSET2.tbl_zone.AcceptChanges()
|
|
End If
|
|
|
|
'//입력면
|
|
If Not DSET1 Is Nothing Then
|
|
For i As Integer = 1 To DSET1.tbl_myoun.Rows.Count
|
|
If DSET1.tbl_myoun.Rows(i - 1).RowState = DataRowState.Deleted OrElse _
|
|
DSET1.tbl_myoun.Rows(i - 1).RowState = DataRowState.Detached Then
|
|
Continue For
|
|
End If
|
|
Dim StrCode As String = DSET1.tbl_myoun.Rows(i - 1)("code").ToString
|
|
If StrCode.Length = 4 Then
|
|
DSET1.tbl_myoun.Rows(i - 1)("code") = "0" + StrCode
|
|
End If
|
|
|
|
Dim StrCode2 As String = DSET1.tbl_myoun.Rows(i - 1)("존분류").ToString
|
|
If StrCode2.Length = 4 Then
|
|
StrCode2 = "0" + StrCode2
|
|
DSET1.tbl_myoun.Rows(i - 1)("존분류") = StrCode2
|
|
End If
|
|
|
|
'//입력존 찾기 171219
|
|
Dim 존목록() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code = '" + StrCode2 + "'")
|
|
If 존목록.Length = 1 Then
|
|
Dim 존수 As Integer = 0
|
|
If IsNumeric(존목록(0).입력존의수) Then
|
|
존수 = CInt(존목록(0).입력존의수)
|
|
Else
|
|
존수 = 1
|
|
End If
|
|
If 존수 > 1 Then
|
|
Dim 면적 As Single = TOSG(DSET1.tbl_myoun.Rows(i - 1)("건축부위면적"))
|
|
DSET1.tbl_myoun.Rows(i - 1)("건축부위면적") = 면적 * 존수
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
|
|
|
|
DSET1.tbl_myoun.AcceptChanges()
|
|
End If
|
|
|
|
If Not DSET2 Is Nothing Then
|
|
For i As Integer = 1 To DSET2.tbl_myoun.Rows.Count
|
|
If DSET2.tbl_myoun.Rows(i - 1).RowState = DataRowState.Deleted OrElse _
|
|
DSET2.tbl_myoun.Rows(i - 1).RowState = DataRowState.Detached Then
|
|
Continue For
|
|
End If
|
|
Dim StrCode As String = DSET2.tbl_myoun.Rows(i - 1)("code").ToString
|
|
If StrCode.Length = 4 Then
|
|
DSET2.tbl_myoun.Rows(i - 1)("code") = "0" + StrCode
|
|
End If
|
|
|
|
Dim StrCode2 As String = DSET2.tbl_myoun.Rows(i - 1)("존분류").ToString
|
|
If StrCode2.Length = 4 Then
|
|
DSET2.tbl_myoun.Rows(i - 1)("존분류") = "0" + StrCode2
|
|
End If
|
|
|
|
Next
|
|
DSET2.tbl_myoun.AcceptChanges()
|
|
End If
|
|
|
|
RibbonButton17_Click_1(Nothing, Nothing)
|
|
|
|
Frm_Work.Close()
|
|
|
|
|
|
'//접수일,인증데인터확인 / 13-12-05 / arin
|
|
Dim Drdesc As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0)
|
|
If Drdesc.injungdate.Trim = "" Then Drdesc.injungdate = Now.ToString("yyyy-MM-dd")
|
|
If Drdesc.jubsudate.Trim = "" Then Drdesc.jubsudate = Now.ToString("yyyy-MM-dd")
|
|
If Drdesc.용도수수료입금일 = "" Then Drdesc.용도수수료입금일 = Now.ToString("yyyy-MM-dd")
|
|
If Drdesc.reqdate = "" Then Drdesc.reqdate = Now.ToString("yyyy-MM-dd")
|
|
If Drdesc.existdate = "" Then Drdesc.existdate = Now.ToString("yyyy-MM-dd")
|
|
If Drdesc.민간구분 = "" Then Drdesc.민간구분 = "1" '//1==공공, 0==일반
|
|
Drdesc.buildarea = "010100"
|
|
|
|
DSET1.tbl_Desc.AcceptChanges()
|
|
|
|
' // validation() '//null보정
|
|
|
|
'//팡리명이 너무길면안되니 경로를 뺴고 딱 파일명만 보여줍니다.
|
|
Me.lbl_filename.Text = Prj.FileName.Substring(Prj.FileName.LastIndexOf("\") + 1)
|
|
|
|
End If
|
|
|
|
Return ext
|
|
End Function
|
|
|
|
Private Sub Set_Null(ByVal Columns() As String, ByRef dt As DataTable, ByVal val As String)
|
|
For Each Dr As DataRow In dt.Select("code<>'0'", "code")
|
|
For Each Col As String In Columns
|
|
If Dr(Col).ToString.Trim = "" Then '//값이없으면 기본값(val)으로 설정
|
|
Dr(Col) = val
|
|
End If
|
|
Next
|
|
Next
|
|
End Sub
|
|
|
|
Private Function validation() As Boolean
|
|
'//존이 2개이상있어야한다 (없음데이터로인해서 반드시 1개는 있기때문이다.)
|
|
'//여기보정데이터가잇네요.;
|
|
Dim NoErr As Boolean = True
|
|
|
|
'//콤보박스들의 값이 지정되어잇는지 확인한다. 무조건 있어야한다
|
|
Dim Title As String
|
|
Dim Columns() As String '//(없음)이 들어가는 콤보필드
|
|
Dim ColumnC() As String '//공용코드전용 필드들
|
|
Dim CGubun() As String '//공용코드필드의 구분값이 저장됨
|
|
Dim Columnst() As String '//0이 들어가는 콤보필드
|
|
|
|
'//ZONE
|
|
Title = "Zone"
|
|
Columns = New String() {"냉난방열공급시스템", "열저장능력", "열교가산치", _
|
|
"주말운전방식", "야간운전방식", "외기부하처리여부", _
|
|
"냉난방공조", "냉난방방식", _
|
|
"조명부하산출방법", "조명방식", "인공광원"}
|
|
ColumnC = New String() {"열저장능력", "열교가산치", _
|
|
"주말운전방식", "야간운전방식", "외기부하처리여부"} '
|
|
'//다를지도 모르니 나중에 함 확인하시구요
|
|
CGubun = New String() {"1023", "1022", _
|
|
"1002", "1002", "1054"} '//공용코드있는데는 모조리 설정하시구요 물론 길이는 바로위하고 같아야합닌다.
|
|
'//여기에 각 공용코드의 구분값 1009 뭐 이런것들을 같게 넣어주세요 column 가 8개가있었따면 cgubun 도 8개가 잇으면됩니다.
|
|
|
|
Columnst = New String() {"프로필", "냉난방공조처리시스템", "열생산난방생산기기", _
|
|
"열생산급탕생산기기", "열생산냉방생산기기", _
|
|
"열생산가습생산기기", "냉난방공조분배시스템", _
|
|
"냉난방분배시스템", "공조냉방생산기기", "공조난방생산기기"}
|
|
|
|
Set_Null(Columns, DSET1.tbl_zone, "(없음)") '//데이터를 기본값 셋팅해주는구문이구요 없는데이터는 넓값처리
|
|
Set_Null(ColumnC, DSET1.tbl_zone, "(없음)") '//공용코드값이 아에없는 데이터를 기본값 셋팅해주는구문이구요 없는데이터는 넓값처리
|
|
'Set_CheckCommon(ColumnC, DSET.tbl_zone, CGubun) '//이거는 // 공용코드오류난 데이터 검색하는부분이에요
|
|
Set_Null(Columnst, DSET1.tbl_zone, "0")
|
|
|
|
Title = "신재생에너지"
|
|
Columns = New String() {"기기종류", "가동연료", "태양열종류", "집열기유형", _
|
|
"집열판방위", "태양열시스템의성능", "축열탱크설치장소", _
|
|
"태양광모듈기울기", "태양광모듈방위", _
|
|
"태양광모듈종류", "태양광모듈적용타입", _
|
|
"열교환기설치여부", "팽창탱크설치여부"}
|
|
Set_Null(Columns, DSET1.tbl_new, "(없음)")
|
|
'Set_Null(Columnst, DSET.tbl_bunbae, "0")
|
|
|
|
Title = "난방분배시스템"
|
|
Columns = New String() {"생산기기구분", "표준치적용", "배관망유형", _
|
|
"배관구간방식", "배관설치장소", _
|
|
"배관설치장소", "지관장소"}
|
|
Set_Null(Columns, DSET1.tbl_nbunbae, "(없음)")
|
|
'Set_Null(Columnst, DSET.tbl_bunbae, "0")
|
|
|
|
Title = "난방기기"
|
|
Columns = New String() {"열생산기기방식", "사용연료", "운전방식", "보일러방식", _
|
|
"지역난방방식", "단열등급", "축열탱크방식", _
|
|
"배관망유형", "펌프교정계수", "펌프제어유형", _
|
|
"분배시스템방식", "순환유무", "펌프제어", _
|
|
"히트펌프시스템종류", "신재생연결여부"}
|
|
Columnst = New String() {"연결된시스템"}
|
|
Set_Null(Columns, DSET1.tbl_nanbangkiki, "(없음)")
|
|
Set_Null(Columnst, DSET1.tbl_nanbangkiki, "0")
|
|
|
|
Title = "냉방기기"
|
|
Columns = New String() {"냉동기방식", "냉동기종류", "냉동기압축방식", _
|
|
"압축기제어방식", "냉동기설비시스템", _
|
|
"냉동기설비시스템", "제어방식", _
|
|
"열생산연결방식", "사용연료", "증발식건식냉각기", _
|
|
"증발식냉각기", "보조방음기유무", "신재생연결여부"}
|
|
Columnst = New String() {"온수열생산기기", "연결된시스템"}
|
|
Set_Null(Columns, DSET1.tbl_nangbangkiki, "(없음)")
|
|
Set_Null(Columnst, DSET1.tbl_nangbangkiki, "0")
|
|
|
|
|
|
Title = "입력면"
|
|
Columns = New String() {"건축부위방식", "블라인드유무", _
|
|
"블라인드위치", "방위", "블라인드빛종류", _
|
|
"블라인드색상", "블라인드각도"}
|
|
Columnst = New String() {"존분류", "대차대조존"}
|
|
Set_Null(Columns, DSET1.tbl_myoun, "(없음)")
|
|
Set_Null(Columnst, DSET1.tbl_myoun, "0")
|
|
|
|
|
|
'Title = "난방공급시스템"
|
|
'Columns = New String() {"열공급시스템", "노출형제어", "바닥난방열제어", _
|
|
' "바닥난방열건축부위", "바닥난방전기제어", "바닥난방전기건축부위", "전기난방제어"}
|
|
'Columnst = New String() {"열공급생산기기"}
|
|
'Set_Null(Columns, DSET1.tbl_kongkub, "(없음)")
|
|
'Set_Null(Columnst, DSET1.tbl_kongkub, "0")
|
|
|
|
|
|
Title = "공조처리"
|
|
Columns = New String() {"공조방식", "리턴공기혼합여부", "가습기유형", "외기냉방제어유무", "열교환기유형"}
|
|
Set_Null(Columns, DSET1.tbl_kongjo, "(없음)")
|
|
'Set_Null(Columnst, DSET.tbl_bunbae, "0")
|
|
|
|
Title = "냉방분배시스템"
|
|
Columns = New String() {"냉매방식", "펌프운전제어유무"}
|
|
Columnst = New String() {"냉동기"}
|
|
Set_Null(Columns, DSET1.tbl_bunbae, "(없음)")
|
|
Set_Null(Columnst, DSET1.tbl_bunbae, "0")
|
|
|
|
|
|
'//모든공조데이터 순환
|
|
For Each DR As DS.tbl_kongjoRow In DSET1.tbl_kongjo.Select("code<>'0'")
|
|
DR.팬효율산출방식 = DR.팬효율산출방식.Trim
|
|
'MsgBox(DR.설명 & "==현재저장된값 : " & DR.팬효율산출방식 & " 길이 = " & DR.팬효율산출방식.Length)
|
|
If DR.팬효율산출방식.Trim = "" Then DR.팬효율산출방식 = "입력치"
|
|
Next
|
|
'DSET.tbl_kongjo.AcceptChanges()
|
|
DSET1.AcceptChanges()
|
|
|
|
|
|
'//그값이 존에잇어요?cnrkehlsrp?추가된게?공조기기요
|
|
For Each Dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'") '//모든존을 검사 없음(0)은 빼고
|
|
'If Dr.공조난방생산기기 = "0" And Dr.공조냉방생산기기 = "0" Then '//둘다 0일경우
|
|
'//오류를 내고싶으면 여기서 return false 해버리면됩니다.'다른족건이 잇다면.. 아까처럼..
|
|
'Return False 냉난방공조 라는 공조에 냉난방이 있으면 : :
|
|
'End If
|
|
If Dr.냉난방공조 = "냉난방" Then '//
|
|
If Dr.공조난방생산기기 = "0" OrElse Dr.공조냉방생산기기 = "0" Then
|
|
MsgBox("입력존에서 공조방식에 대응하는 공조냉난방생산기기가 지정되지 않은 것이 있습니다.")
|
|
Return False
|
|
End If
|
|
End If
|
|
If Dr.냉난방공조 = "난방" OrElse (Dr.냉난방공조 = "냉방" And Dr.외기부하처리여부 = "예") Then '//
|
|
If Dr.공조난방생산기기 = "0" Then
|
|
MsgBox("입력존에서 공조방식에 대응하는 공조난방생산기기가 지정되지 않은 것이 있습니다.")
|
|
Return False
|
|
End If
|
|
End If
|
|
If Dr.냉난방공조 = "냉방" OrElse (Dr.냉난방공조 = "난방" And Dr.외기부하처리여부 = "예") Then '//
|
|
If Dr.공조냉방생산기기 = "0" Then
|
|
MsgBox("입력존에서 공조방식에 대응하는 공조냉방생산기기가 지정되지 않은 것이 있습니다.")
|
|
Return False
|
|
End If
|
|
End If
|
|
If Dr.냉난방공조 = "환기" And Dr.외기부하처리여부 = "예" Then '//
|
|
If Dr.공조난방생산기기 = "0" OrElse Dr.공조냉방생산기기 = "0" Then
|
|
MsgBox("입력존에서 외기부하처리에 따른 공조냉난방생산기기가 지정되지 않은 것이 있습니다.")
|
|
Return False
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
Next
|
|
|
|
'//여기에서 FAlse 를 반환해버리면.. 게산은 돌지않아요 게산전에 수행되는곳이구요
|
|
'//아까 파일오픈시에도 여기를 호출합니다. 바로 윗부분이 nul l값에대한 기본값 처리구요.
|
|
Return NoErr
|
|
End Function
|
|
|
|
Private Sub RibbonButton17_Click_1(sender As System.Object, e As System.EventArgs) Handles RibbonButton17.Click
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
'//171001 - 데이터보정
|
|
For i As Integer = 1 To DSET1.tbl_kongjo.Rows.Count
|
|
Dim 대수 As String = DSET1.tbl_kongjo.Rows(i - 1)("대수").ToString()
|
|
If 대수 = "" OrElse 대수 = "0" Then
|
|
DSET1.tbl_kongjo.Rows(i - 1)("대수") = 1
|
|
End If
|
|
Next
|
|
For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Rows
|
|
Dim 대수 As String = dr.보일러대수
|
|
If 대수 = "" OrElse 대수 = "0" Then
|
|
dr.보일러대수 = 1
|
|
End If
|
|
|
|
'//존에 난방에 연결되면 난방, 급탕, 난방+급탕결정
|
|
Dim 난방연결 As Boolean = False
|
|
Dim 급탕연결 As Boolean = False
|
|
For Each dr2 As DS.tbl_zoneRow In DSET1.tbl_zone.Rows
|
|
If dr2.열생산난방생산기기 <> "0" AndAlso dr2.열생산난방생산기기 = dr.code Then
|
|
난방연결 = True
|
|
'Continue For
|
|
End If
|
|
If dr2.열생산급탕생산기기 <> "0" AndAlso dr2.열생산급탕생산기기 = dr.code Then
|
|
급탕연결 = True
|
|
' Continue For
|
|
End If
|
|
Next
|
|
|
|
If 난방연결 AndAlso 급탕연결 Then
|
|
dr.난방급탕구분 = "난방급탕용"
|
|
ElseIf 난방연결 Then
|
|
dr.난방급탕구분 = "난방용"
|
|
ElseIf 급탕연결 Then
|
|
dr.난방급탕구분 = "급탕용"
|
|
End If
|
|
|
|
If dr.펌프동력 <> "" Then
|
|
dr.펌프동력 = TOSG(dr.펌프동력) / 1000
|
|
End If
|
|
|
|
If dr.열생산기기방식 = "히트펌프" Then
|
|
dr.보일러정격출력 = dr.히트난방용량
|
|
dr.사용연료 = dr.히트연료
|
|
dr.정격보일러COP = dr.히트난방정격7
|
|
ElseIf dr.열생산기기방식.StartsWith("지역난방") Then
|
|
dr.보일러정격출력 = dr.열교환기정격출력
|
|
dr.사용연료 = "지역난방"
|
|
ElseIf dr.열생산기기방식 = "전기보일러" Then
|
|
dr.사용연료 = "전기"
|
|
End If
|
|
|
|
|
|
Next
|
|
|
|
|
|
|
|
|
|
For Each dr As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0'")
|
|
Dim 대수 As String = dr.대수
|
|
If 대수 = "" OrElse 대수 = "0" Then
|
|
dr.대수 = 1
|
|
End If
|
|
|
|
|
|
dr.대수 = TOSG(dr.대수)
|
|
|
|
|
|
If dr.냉동기방식 = "압축식" Then
|
|
dr.사용연료 = "전기"
|
|
ElseIf dr.냉동기방식 = "흡수식" Then
|
|
If dr.열생산연결방식 = "직화식" Then
|
|
'//수정필요없음
|
|
ElseIf dr.열생산연결방식 = "외부연결" Then
|
|
'//연결돈자료찾아서 연료 가져온다.
|
|
For Each dr3 As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Rows
|
|
If dr3.code = dr.온수열생산기기 Then
|
|
dr.사용연료 = dr3.사용연료
|
|
End If
|
|
Next
|
|
End If
|
|
ElseIf dr.냉동기방식 = "압축식(LNG)" Then
|
|
dr.사용연료 = "천연가스"
|
|
ElseIf dr.냉동기방식 = "지역냉방" Then
|
|
dr.사용연료 = "지역냉방"
|
|
End If
|
|
|
|
dr.냉각수펌프동력 = 0
|
|
dr.냉수펌프동력 = 0
|
|
|
|
'//냉수펌프동력(냉방분배에서 찾는다)
|
|
For Each dr4 As DS.tbl_bunbaeRow In DSET1.tbl_bunbae.Select("code <> '0'")
|
|
If dr.code = dr4.냉동기 Then
|
|
|
|
If dr4.설명.LastIndexOf("냉각수") > 0 Then
|
|
dr.냉각수펌프동력 = TOSG(dr4.펌프동력) / 1000
|
|
Else
|
|
dr.냉수펌프동력 = TOSG(dr4.펌프동력) / 1000
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
If dr.냉동기종류 = "실내공조시스템" Then
|
|
dr.냉동기종류 = "히트펌프"
|
|
End If
|
|
|
|
If dr.냉각수펌프동력 = "" Then
|
|
dr.냉각수펌프동력 = "0"
|
|
End If
|
|
If dr.냉수펌프동력 = "" Then
|
|
dr.냉수펌프동력 = "0"
|
|
End If
|
|
|
|
'//냉각탑종류
|
|
If dr.증발식건식냉각기 = "증발식" Then
|
|
If dr.증발식냉각기 = "개방형" Then
|
|
dr.증발식건식냉각기 = "증발식(개방형)"
|
|
ElseIf dr.증발식냉각기 = "폐쇄형" Then
|
|
dr.증발식건식냉각기 = "증발식(폐쇄형)"
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
|
|
For Each dr As DS.tbl_kongjoRow In DSET1.tbl_kongjo.Select("code <> '0'")
|
|
If dr.열회수율 <> "" AndAlso dr.열회수율 <> "0" Then
|
|
dr.열회수율 = TOSG(dr.열회수율) * 100
|
|
End If
|
|
dr.열회수율_냉방 = TOSG(dr.열회수율_냉방) * 100
|
|
|
|
If dr.설정치난방 = "20" AndAlso dr.설정치냉방 = "26" Then
|
|
dr.공조방식 = "환기용"
|
|
End If
|
|
Next
|
|
|
|
|
|
|
|
'//조명기기추가
|
|
DSET1.tbl_light.Rows.Clear()
|
|
For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'")
|
|
Dim newdr As DS.tbl_lightRow = DSET1.tbl_light.Newtbl_lightRow
|
|
newdr.code = (DSET1.tbl_light.Rows.Count + 1).ToString("00000")
|
|
newdr.설명 = dr.설명
|
|
newdr.대수 = TOSG(dr.입력존의수)
|
|
newdr.조명전력 = TOSG(dr.면적) * TOSG(dr.조명에너지부하율입력치)
|
|
newdr.조명종류 = "형광등"
|
|
DSET1.tbl_light.Addtbl_lightRow(newdr)
|
|
Next
|
|
DSET1.tbl_light.AcceptChanges()
|
|
|
|
'//실내단말기추가
|
|
'DSET1.tbl_danmal.Rows.Clear()
|
|
'For Each dr As DS.tbl_kongkubRow In DSET1.tbl_kongkub.Select("code <> '0'")
|
|
' Dim newdr As DS.tbl_danmalRow = DSET1.tbl_danmal.Newtbl_danmalRow
|
|
' newdr.설명 = dr.설명
|
|
' newdr.대수 = TOSG(dr.팬송풍기수)
|
|
' newdr.전력합 = "0"
|
|
' newdr.용량 = "0"
|
|
' newdr.팬동력 = TOSG(dr.팬송풍기정격전력)
|
|
' DSET1.tbl_danmal.Addtbl_danmalRow(newdr)
|
|
'Next
|
|
'DSET1.tbl_danmal.AcceptChanges()
|
|
|
|
'//신재생추가
|
|
DSET1.tbl_new_energy.Clear()
|
|
DSET1.tbl_new_light.Clear()
|
|
DSET1.tbl_new_ground.Clear()
|
|
DSET1.tbl_new_열병합.Clear()
|
|
|
|
'//공용코프
|
|
'DSET1.tbl_common_od.Clear()
|
|
'DSET1.tbl_common_od.Merge(DSET1.tbl_common)
|
|
|
|
Dim drDesc As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0)
|
|
drDesc.buildm21 = "0"
|
|
drDesc.층고 = ""
|
|
drDesc.buildarea = "010000"
|
|
|
|
|
|
|
|
Dim 면적합 As Double = 0
|
|
Dim 천장고합 As Double = 0
|
|
For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0' and code <>'(없음)'")
|
|
면적합 += TOSG(dr.면적)
|
|
천장고합 += TOSG(dr.천장고p) * TOSG(dr.면적)
|
|
Next
|
|
drDesc.천장고 = (천장고합 / 면적합).ToString("N2")
|
|
|
|
|
|
'//입력면
|
|
For Each dr As DS.tbl_myounRow In DSET1.tbl_myoun.Select("code <> '0'")
|
|
If dr.열관류율2 <> "" Then
|
|
Dim dryk() As DS.tbl_ykRow = DSET1.tbl_yk.Select("code = '" + dr.열관류율2 + "'")
|
|
If dryk.Length = 1 Then
|
|
dr.열관류율 = TOSG(dryk(0).열관류율)
|
|
End If
|
|
End If
|
|
|
|
Next
|
|
|
|
|
|
|
|
For Each dr As DS.tbl_newRow In DSET1.tbl_new.Select("code <> '0'")
|
|
|
|
If dr.기기종류 = "태양광" Then
|
|
Dim newdr1 As DS.tbl_new_lightRow = DSET1.tbl_new_light.Newtbl_new_lightRow
|
|
newdr1.code = dr.code
|
|
newdr1.설명 = dr.설명
|
|
newdr1.태양광모듈기울기 = dr.태양광모듈기울기
|
|
newdr1.태양광모듈면적 = dr.태양광모듈면적
|
|
newdr1.태양광모듈방위 = dr.태양광모듈방위
|
|
newdr1.태양광모듈적용타입 = dr.태양광모듈적용타입
|
|
newdr1.태양광모듈종류 = dr.태양광모듈종류.Replace(" ", "")
|
|
newdr1.태양광모듈효율 = TOSG(dr.태양광모듈효율) * 100
|
|
newdr1.태양광용량 = dr.태양광용량
|
|
|
|
DSET1.tbl_new_light.Addtbl_new_lightRow(newdr1)
|
|
|
|
ElseIf dr.기기종류 = "태양열" Then
|
|
Dim newdr1 As DS.tbl_new_energyRow = DSET1.tbl_new_energy.Newtbl_new_energyRow
|
|
newdr1.code = dr.code
|
|
newdr1.설명 = dr.설명
|
|
newdr1.태양열종류 = dr.태양열종류
|
|
newdr1.태양열시스템의성능 = dr.태양열시스템의성능
|
|
newdr1.집열기유형 = dr.집열기유형
|
|
newdr1.집열판면적 = dr.집열판면적
|
|
newdr1.집열판방위 = dr.집열판방위
|
|
newdr1.집열효율 = dr.집열효율
|
|
newdr1.솔라펌프의정격출력 = dr.솔라펌프의정격출력
|
|
newdr1.축열탱크체적급탕 = dr.축열탱크체적급탕
|
|
newdr1.축열탱크체적난방 = dr.축열탱크체적난방
|
|
newdr1.축열탱크설치장소 = dr.축열탱크설치장소
|
|
|
|
DSET1.tbl_new_energy.Addtbl_new_energyRow(newdr1)
|
|
ElseIf dr.기기종류 = "열병합" Then
|
|
Dim newdr1 As DS.tbl_new_열병합Row = DSET1.tbl_new_열병합.Newtbl_new_열병합Row
|
|
newdr1.code = dr.code
|
|
newdr1.설명 = dr.설명
|
|
newdr1.열병합냉난방구분 = dr.열병합냉난방구분
|
|
newdr1.열생산능력 = dr.열생산능력
|
|
newdr1.열생산효율 = dr.열생산효율
|
|
newdr1.발전효율 = dr.발전효율
|
|
newdr1.열병합신재생여부 = dr.열병합신재생여부
|
|
|
|
'//이 개체가 난방, 냉방기기에 적용되엇는지 체크한다.
|
|
Dim 난방사용 As Boolean = False
|
|
Dim 냉방사용 As Boolean = False
|
|
|
|
For Each dr난방 As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code<>'0'")
|
|
If dr난방.연결된시스템 = dr.code Then
|
|
난방사용 = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
For Each dr냉방 As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code<>'0'")
|
|
If dr냉방.연결된시스템 = dr.code Then
|
|
냉방사용 = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If 난방사용 AndAlso 냉방사용 Then
|
|
newdr1.열병합냉난방구분 = "냉난방용"
|
|
ElseIf 난방사용 Then
|
|
newdr1.열병합냉난방구분 = "난방용"
|
|
ElseIf 냉방사용 Then
|
|
newdr1.열병합냉난방구분 = "냉방용"
|
|
End If
|
|
|
|
|
|
DSET1.tbl_new_열병합.Addtbl_new_열병합Row(newdr1)
|
|
ElseIf dr.기기종류 = "지열" Then
|
|
Dim newdr1 As DS.tbl_new_groundRow = DSET1.tbl_new_ground.Newtbl_new_groundRow
|
|
newdr1.code = dr.code
|
|
newdr1.설명 = dr.설명
|
|
newdr1.지열냉난방구분 = dr.지열냉난방구분
|
|
newdr1.지열히트펌프용량 = dr.지열히트펌프용량
|
|
newdr1.가동연료 = dr.가동연료
|
|
newdr1.열성능비난방 = dr.열성능비난방
|
|
newdr1.열성능비냉방 = dr.열성능비냉방
|
|
newdr1.펌프용량1차 = dr.펌프용량1차
|
|
|
|
'//이 개체가 난방, 냉방기기에 적용되엇는지 체크한다.
|
|
Dim 난방사용 As Boolean = False
|
|
Dim 냉방사용 As Boolean = False
|
|
|
|
For Each dr난방 As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code<>'0'")
|
|
If dr난방.연결된시스템 = dr.code Then
|
|
난방사용 = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
For Each dr냉방 As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code<>'0'")
|
|
If dr냉방.연결된시스템 = dr.code Then
|
|
냉방사용 = True
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
If 난방사용 AndAlso 냉방사용 Then
|
|
newdr1.지열냉난방구분 = "냉난방용"
|
|
ElseIf 난방사용 Then
|
|
newdr1.지열냉난방구분 = "난방용"
|
|
ElseIf 냉방사용 Then
|
|
newdr1.지열냉난방구분 = "냉방용"
|
|
End If
|
|
DSET1.tbl_new_ground.Addtbl_new_groundRow(newdr1)
|
|
|
|
End If
|
|
|
|
|
|
Next
|
|
|
|
'//신재생다시구성
|
|
DSET1.tbl_new.Clear()
|
|
|
|
'//기본 없음을 하나 추가해준다.
|
|
DSET1.tbl_new.Rows.Add(New String() {"0", "(없음)"})
|
|
DSET1.tbl_new.AcceptChanges()
|
|
|
|
'//데이터를 모은다
|
|
For Each dr As DS.tbl_new_energyRow In DSET1.tbl_new_energy.Rows
|
|
Dim newdr As DS.tbl_newRow = DSET1.tbl_new.NewRow
|
|
For Each c As DataColumn In DSET1.tbl_new_energy.Columns
|
|
newdr(c.ColumnName) = dr(c.ColumnName)
|
|
Next
|
|
newdr.기기종류 = "태양열"
|
|
newdr.지열냉난방구분 = newdr.태양열종류
|
|
DSET1.tbl_new.Rows.Add(newdr)
|
|
Next
|
|
|
|
For Each dr As DS.tbl_new_groundRow In DSET1.tbl_new_ground.Rows
|
|
Dim newdr As DS.tbl_newRow = DSET1.tbl_new.NewRow
|
|
For Each c As DataColumn In DSET1.tbl_new_ground.Columns
|
|
newdr(c.ColumnName) = dr(c.ColumnName)
|
|
Next
|
|
newdr.기기종류 = "지열"
|
|
DSET1.tbl_new.Rows.Add(newdr)
|
|
Next
|
|
|
|
For Each dr As DS.tbl_new_lightRow In DSET1.tbl_new_light.Rows
|
|
Dim newdr As DS.tbl_newRow = DSET1.tbl_new.NewRow
|
|
For Each c As DataColumn In DSET1.tbl_new_light.Columns
|
|
newdr(c.ColumnName) = dr(c.ColumnName)
|
|
Next
|
|
newdr.기기종류 = "태양광"
|
|
DSET1.tbl_new.Rows.Add(newdr)
|
|
Next
|
|
|
|
|
|
For Each dr As DS.tbl_new_열병합Row In DSET1.tbl_new_열병합.Rows
|
|
Dim newdr As DS.tbl_newRow = DSET1.tbl_new.NewRow
|
|
For Each c As DataColumn In DSET1.tbl_new_열병합.Columns
|
|
newdr(c.ColumnName) = dr(c.ColumnName)
|
|
Next
|
|
newdr.기기종류 = "열병합"
|
|
DSET1.tbl_new.Rows.Add(newdr)
|
|
Next
|
|
|
|
|
|
DSET1.tbl_new.AcceptChanges()
|
|
|
|
End Sub
|
|
|
|
Dim prepath As String = ""
|
|
Private Sub RibbonButton22_Click_1(sender As System.Object, e As System.EventArgs) Handles RibbonButton22.Click
|
|
Dim fd As New FolderBrowserDialog
|
|
fd.SelectedPath = prepath
|
|
If fd.ShowDialog <> Windows.Forms.DialogResult.OK Then Return
|
|
|
|
prepath = fd.SelectedPath
|
|
|
|
Dim filecnt As Integer = 0
|
|
For Each file As String In System.IO.Directory.GetFiles(fd.SelectedPath, "*.tpl", IO.SearchOption.AllDirectories)
|
|
Dim ext As String = Open_TPL(file)
|
|
|
|
|
|
Dim fi As New System.IO.FileInfo(file)
|
|
Dim newfil As String = fi.Directory.FullName + "\" + fi.Name.Replace(fi.Extension, "." + ext)
|
|
Me.Func_Save_OD(newfil, False)
|
|
filecnt += 1
|
|
Next
|
|
|
|
MsgBox(filecnt.ToString() + " File")
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton23_Click_1(sender As System.Object, e As System.EventArgs) Handles RibbonButton23.Click
|
|
If Not Prj.Opened Then
|
|
Work_msg_timer(CLang.열린파일없음)
|
|
Return
|
|
End If
|
|
Frm_V20091231_buha.ControlBox = True
|
|
Frm_V20091231_buha.Show()
|
|
End Sub
|
|
|
|
Private Sub ExportCSV()
|
|
Return
|
|
|
|
'//모든테이블에대하여 내용을 출력
|
|
If Prj.Opened = False Then
|
|
MsgBox("No File")
|
|
Return
|
|
End If
|
|
If MsgBox("Export CSV?", MsgBoxStyle.YesNo, "Save") <> MsgBoxResult.Yes Then Return
|
|
|
|
|
|
Dim fi As New System.IO.FileInfo(Prj.FileName)
|
|
Dim path As String = fi.Directory.FullName + "\" + fi.Name.Replace(fi.Extension, "")
|
|
If System.IO.Directory.Exists(path) = False Then System.IO.Directory.CreateDirectory(path)
|
|
For i As Integer = 1 To DSET1.Tables.Count
|
|
|
|
Dim dt As System.Data.DataTable = DSET1.Tables(i - 1)
|
|
Dim file As String = path + "\" + dt.TableName + ".csv"
|
|
Dim sb As New System.Text.StringBuilder
|
|
For Each col As System.Data.DataColumn In dt.Columns
|
|
sb.Append("," + col.ColumnName)
|
|
Next
|
|
sb.AppendLine()
|
|
|
|
|
|
For j As Integer = 1 To dt.Rows.Count
|
|
Dim sb2 As New System.Text.StringBuilder
|
|
For k As Integer = 1 To dt.Columns.Count
|
|
Dim val As String = dt.Rows(j - 1)(k - 1).ToString()
|
|
If dt.Columns(k - 1).ColumnName.ToLower() = "code" AndAlso val = "0" Then
|
|
sb2.Clear()
|
|
Exit For
|
|
Else
|
|
sb2.Append("," + val.Replace(",", "_"))
|
|
End If
|
|
Next
|
|
If sb2.Length > 0 Then sb.AppendLine(sb2.ToString())
|
|
Next
|
|
System.IO.File.WriteAllText(file, sb.ToString(), System.Text.Encoding.UTF8)
|
|
Next
|
|
MsgBox("ok")
|
|
Shell("explorer " + path, AppWinStyle.NormalFocus)
|
|
End Sub
|
|
|
|
Private Sub RibbonButton27_Click(sender As System.Object, e As System.EventArgs) Handles RibbonButton27.Click
|
|
If MsgBox("공용코드값(1089)을 서버로부터 가져오시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") = MsgBoxResult.Ok Then
|
|
|
|
|
|
Dim dtcommon As New DS.tbl_common_odDataTable()
|
|
Try
|
|
|
|
Dim TaC As New DSTableAdapters.tbl_common_odTableAdapter
|
|
TaC.Fill(dtcommon)
|
|
dtcommon.AcceptChanges()
|
|
Catch ex As Exception
|
|
MsgBox("공용코드 업데이트실패" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Critical, "확인")
|
|
End Try
|
|
|
|
For Each drow As DS.tbl_common_odRow In dtcommon
|
|
If drow.gubun <> "1089" Then Continue For
|
|
|
|
Dim v As Integer = CInt(drow.code)
|
|
|
|
If v < 100 OrElse v > 136 Then Continue For
|
|
|
|
Dim finds() As DS.tbl_common_odRow = DSET1.tbl_common_od.Select("gubun='1089' and code = '" + drow.code + "'")
|
|
If finds Is Nothing OrElse finds.Length < 1 Then
|
|
Dim newdr As DS.tbl_common_odRow = DSET1.tbl_common_od.Newtbl_common_odRow()
|
|
newdr.gubun = drow.gubun
|
|
newdr.code = drow.code
|
|
newdr.name = drow.name
|
|
newdr.codename = drow.codename
|
|
newdr.valn1 = drow.valn1
|
|
newdr.EndEdit()
|
|
DSET1.tbl_common_od.Addtbl_common_odRow(newdr)
|
|
End If
|
|
Next
|
|
DSET1.tbl_common_od.AcceptChanges()
|
|
|
|
|
|
|
|
Work_msg("")
|
|
|
|
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub RibbonButton28_Click(sender As System.Object, e As System.EventArgs) Handles RibbonButton28.Click
|
|
If MsgBox("새파일을 생성 하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return '//ok 안하면 빠져나가기
|
|
Dim newfilename As New System.IO.FileInfo(".\basefile\new." + FileExt)
|
|
If newfilename.Exists Then
|
|
System.IO.File.Copy(newfilename.FullName, newfilename.FullName + "_bak_" + DateTime.Now.ToString("yyMMddHhmmssffff"))
|
|
End If
|
|
Me.Func_Save_OD(newfilename.FullName)
|
|
End Sub
|
|
End Class |