From 48e3fecfc915d48488e3aac7518505ad184d1a0b Mon Sep 17 00:00:00 2001 From: ykh Date: Sun, 23 Jul 2023 00:58:28 +0900 Subject: [PATCH] =?UTF-8?q?macro=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20=EC=A4=91.=20=EC=97=91=EC=84=B8=20=EC=97=85=EB=A1=9C?= =?UTF-8?q?=EB=93=9C=20=EC=96=91=EC=8B=9D=20=EC=B6=94=EA=B0=80=20=EC=98=88?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ArinWarev1/ECO2_2022V2.vbproj | 839 ++++++++ ArinWarev1/Forms_Basic/frm_Macro.Designer.vb | 84 + ArinWarev1/Forms_Basic/frm_Macro.resx | 120 ++ ArinWarev1/Forms_Basic/frm_Macro.vb | 38 + .../Forms_Input/Frm_v20091231_Weather.vb | 2 +- ArinWarev1/Forms_Report/Frm_Upload.vb | 857 +------- ArinWarev1/MdiMain.Designer.vb | 453 ++-- ArinWarev1/MdiMain.resx | 462 ++-- ArinWarev1/MdiMain.vb | 1851 +++++++++++------ ArinWarev1/Module/Pub.vb | 778 ++++++- ArinWarev1/My Project/AssemblyInfo.vb | 4 +- ArinWarev1/단축키.txt | 6 +- SetupIS/SetupIS.isl | 2 +- 13 files changed, 3571 insertions(+), 1925 deletions(-) create mode 100644 ArinWarev1/ECO2_2022V2.vbproj create mode 100644 ArinWarev1/Forms_Basic/frm_Macro.Designer.vb create mode 100644 ArinWarev1/Forms_Basic/frm_Macro.resx create mode 100644 ArinWarev1/Forms_Basic/frm_Macro.vb diff --git a/ArinWarev1/ECO2_2022V2.vbproj b/ArinWarev1/ECO2_2022V2.vbproj new file mode 100644 index 0000000..6ce859c --- /dev/null +++ b/ArinWarev1/ECO2_2022V2.vbproj @@ -0,0 +1,839 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {D5C51BDE-68E5-42BC-B648-DB9CCF044703} + WinExe + Eco2Ar.My.MyApplication + Eco2Ar + Eco2Ar + WindowsForms + LocalIntranet + false + false + false + + + 283B51AD9210178E1628176E6D96B5102FED9775 + ArinWareT4_1_TemporaryKey.pfx + false + true + Off + + + + + 3.5 + My Project\app.manifest + 002.ico + v4.0 + + ftp://tindevil.com/www/mynetapp/t4/ + true + Web + true + Foreground + 7 + Days + false + false + true + http://tindevil.com/mynetapp/t4/ + http://tindevil.com + Energy%28Test Version%29 + Arinware + true + index.htm + 33 + 1.0.0.%2a + false + true + + + true + full + true + true + ..\..\..\..\..\eco2\debug_2016\ + + + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42353,42354,42355 + x86 + + + + + Full + false + true + true + c:\eco2\debug_2016\ + + + 41999,42016,42017,42018,42019,42020,42021,42022,42032,42036,42353,42354,42355 + true + x86 + + + MDI=true + + + + True + + + True + + + True + + + True + + + True + + + True + + + True + + + False + ..\Interop.Excel.dll + + + False + ..\Interop.VBIDE.dll + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + True + True + DS.xsd + + + DS.xsd + + + True + True + DS2.xsd + + + Frm_import.vb + + + Form + + + frm_Macro.vb + + + Form + + + fSelectWeatherGroup.vb + + + Form + + + fSelectArea.vb + + + Form + + + frm_monuse.vb + + + Form + + + Frm_Export.vb + + + Form + + + Frm_Upload.vb + + + Form + + + Report_설계개선.vb + + + Form + + + Frm_History.vb + + + Form + + + + YkCtl.vb + + + UserControl + + + Frm_DisplayGubun.vb + + + Form + + + Frm_Filter.vb + + + Form + + + Frm_Work.vb + + + Form + + + Report_Total.vb + + + Form + + + Frm_v20091231_ResultMon.vb + + + Form + + + Frm_v20091231_ResultMax.vb + + + Form + + + Frm_v20091231_buha.vb + + + Form + + + Frm_RepResult_Admin.vb + + + Form + + + Report_그래프.vb + + + Form + + + Frm_Desc.vb + + + Form + + + Report_Graph_auth.vb + + + Form + + + Frm_nBunbae.vb + + + Form + + + Frm_Warning.vb + + + Form + + + Frm_Calc.vb + + + Form + + + Frm_YK.vb + + + Form + + + Report_pyonga.vb + + + Form + + + + True + True + DSR.xsd + + + DSR.xsd + + + + + + + + + + Frm_Intro.vb + + + Form + + + CForm.vb + + + Form + + + + Form + + + MdiMain.vb + Form + + + + True + Application.myapp + + + True + True + Resources.resx + + + True + Settings.settings + True + + + Frm_v20091231_profile.vb + + + Form + + + Frm_Zone.vb + + + Form + + + Frm_kongjo.vb + + + Form + + + Frm_kongkub.vb + + + Form + + + Frm_Nanbang.vb + + + Form + + + Frm_NaengBang.vb + + + Form + + + Frm_Bunbae.vb + + + Form + + + Frm_New.vb + + + Form + + + Frm_v20091231_Myoun.vb + + + Form + + + Frm_Common.vb + + + Form + + + Frm_v20091231_Weather.vb + + + Form + + + Frm_About.vb + + + Form + + + ArinDv.vb + + + Component + + + MyCmb.vb + + + Component + + + MyTb.vb + + + Component + + + Frm_FileInfo.vb + + + Form + + + + + Frm_DisplayGubun.vb + + + Frm_Filter.vb + + + Frm_import.vb + + + frm_Macro.vb + + + Frm_Work.vb + Designer + + + fSelectWeatherGroup.vb + + + fSelectArea.vb + + + frm_monuse.vb + Designer + + + Frm_Export.vb + + + Frm_Upload.vb + + + + Designer + Report_Total.vb + + + Frm_v20091231_ResultMon.vb + Designer + + + Frm_v20091231_ResultMax.vb + Designer + + + Frm_v20091231_buha.vb + Designer + + + Frm_RepResult_Admin.vb + Designer + + + Report_그래프.vb + Designer + + + + Frm_Desc.vb + Designer + + + + Designer + Frm_Intro.vb + + + Report_Graph_auth.vb + Designer + + + + Frm_nBunbae.vb + Designer + + + Frm_Warning.vb + Designer + + + Frm_Calc.vb + Designer + + + Frm_YK.vb + Designer + + + Report_pyonga.vb + Designer + + + Report_설계개선.vb + Designer + + + + Frm_History.vb + + + CForm.vb + + + + Designer + MdiMain.vb + + + VbMyResourcesResXFileCodeGenerator + Resources.Designer.vb + My.Resources + Designer + + + Frm_v20091231_profile.vb + Designer + + + Frm_Zone.vb + Designer + + + Frm_kongjo.vb + Designer + + + Frm_kongkub.vb + Designer + + + Frm_Nanbang.vb + Designer + + + Frm_NaengBang.vb + Designer + + + Frm_Bunbae.vb + Designer + + + Frm_New.vb + Designer + + + Frm_v20091231_Myoun.vb + Designer + + + Frm_Common.vb + Designer + + + Frm_v20091231_Weather.vb + Designer + + + Designer + Frm_About.vb + + + Frm_FileInfo.vb + Designer + + + + + + DS.xsd + + + Designer + MSDataSetGenerator + DS.Designer.vb + + + DS.xsd + + + DS2.xsd + + + Designer + MSDataSetGenerator + DS2.Designer.vb + + + DS2.xsd + + + PreserveNewest + + + MyApplicationCodeGenerator + Application.Designer.vb + + + SettingsSingleFileGenerator + My + Settings.Designer.vb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PreserveNewest + + + + DSR.xsd + + + Designer + MSDataSetGenerator + DSR.Designer.vb + + + DSR.xsd + + + + + + False + .NET Framework 3.5 SP1 Client Profile + false + + + False + .NET Framework 2.0%28x86%29 + true + + + False + .NET Framework 3.0%28x86%29 + false + + + False + .NET Framework 3.5 + false + + + False + .NET Framework 3.5 SP1 + false + + + + + + + + + + + + + PreserveNewest + + + + + + + + + + + PreserveNewest + + + + PreserveNewest + + + PreserveNewest + + + + + + + + False + + + + + Include + True + Assembly + + + False + + + + + Include + True + Assembly + + + + + {8B6E4D7F-B484-471A-A419-2FE3451D26A3} + ArinLogin + + + {e9e16a98-8f8d-4848-a27e-4571c184fb1a} + ArinLog + + + {F0FB4304-F995-446A-99B7-0896A5E07A72} + ArinNet + + + {2AF28E8C-84F1-4D56-9592-3B0EBDE8DF14} + CEnergy + + + {B1FDE30A-B142-42D5-A6B8-5428D2F2E62A} + Utility + + + + + + \ No newline at end of file diff --git a/ArinWarev1/Forms_Basic/frm_Macro.Designer.vb b/ArinWarev1/Forms_Basic/frm_Macro.Designer.vb new file mode 100644 index 0000000..5ce971e --- /dev/null +++ b/ArinWarev1/Forms_Basic/frm_Macro.Designer.vb @@ -0,0 +1,84 @@ + _ +Partial Class frm_Macro + Inherits System.Windows.Forms.Form + + 'Form은 Dispose를 재정의하여 구성 요소 목록을 정리합니다. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Windows Form 디자이너에 필요합니다. + Private components As System.ComponentModel.IContainer + + '참고: 다음 프로시저는 Windows Form 디자이너에 필요합니다. + '수정하려면 Windows Form 디자이너를 사용하십시오. + '코드 편집기를 사용하여 수정하지 마십시오. + _ + Private Sub InitializeComponent() + Me.tbPath = New System.Windows.Forms.TextBox() + Me.btPath = New System.Windows.Forms.Button() + Me.btcalc = New System.Windows.Forms.Button() + Me.prb1 = New System.Windows.Forms.ProgressBar() + Me.SuspendLayout() + ' + 'tbPath + ' + Me.tbPath.Location = New System.Drawing.Point(149, 22) + Me.tbPath.Name = "tbPath" + Me.tbPath.Size = New System.Drawing.Size(272, 21) + Me.tbPath.TabIndex = 0 + Me.tbPath.Text = "C:\Temp\sample\tplx" + ' + 'btPath + ' + Me.btPath.Location = New System.Drawing.Point(12, 12) + Me.btPath.Name = "btPath" + Me.btPath.Size = New System.Drawing.Size(131, 39) + Me.btPath.TabIndex = 1 + Me.btPath.Text = "path" + Me.btPath.UseVisualStyleBackColor = True + ' + 'btcalc + ' + Me.btcalc.Location = New System.Drawing.Point(12, 83) + Me.btcalc.Name = "btcalc" + Me.btcalc.Size = New System.Drawing.Size(726, 39) + Me.btcalc.TabIndex = 2 + Me.btcalc.Text = "calc" + Me.btcalc.UseVisualStyleBackColor = True + ' + 'prb1 + ' + Me.prb1.Dock = System.Windows.Forms.DockStyle.Bottom + Me.prb1.Location = New System.Drawing.Point(0, 146) + Me.prb1.Name = "prb1" + Me.prb1.Size = New System.Drawing.Size(750, 25) + Me.prb1.TabIndex = 4 + ' + 'frm_Macro + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(7.0!, 12.0!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.ClientSize = New System.Drawing.Size(750, 171) + Me.Controls.Add(Me.prb1) + Me.Controls.Add(Me.btcalc) + Me.Controls.Add(Me.btPath) + Me.Controls.Add(Me.tbPath) + Me.Name = "frm_Macro" + Me.Text = "frm_Macro" + Me.ResumeLayout(False) + Me.PerformLayout() + + End Sub + Friend WithEvents btPath As System.Windows.Forms.Button + Friend WithEvents btcalc As System.Windows.Forms.Button + Friend WithEvents prb1 As System.Windows.Forms.ProgressBar + Public WithEvents tbPath As System.Windows.Forms.TextBox +End Class diff --git a/ArinWarev1/Forms_Basic/frm_Macro.resx b/ArinWarev1/Forms_Basic/frm_Macro.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/ArinWarev1/Forms_Basic/frm_Macro.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ArinWarev1/Forms_Basic/frm_Macro.vb b/ArinWarev1/Forms_Basic/frm_Macro.vb new file mode 100644 index 0000000..14c67f0 --- /dev/null +++ b/ArinWarev1/Forms_Basic/frm_Macro.vb @@ -0,0 +1,38 @@ +Public Class frm_Macro + + Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles btPath.Click + Dim fd As New FolderBrowserDialog() + If fd.ShowDialog() = Windows.Forms.DialogResult.OK Then + tbPath.Text = fd.SelectedPath + End If + End Sub + + Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles btcalc.Click + '//calc + Dim di As New System.IO.DirectoryInfo(tbPath.Text) + If di.Exists = False Then + MsgBox("no folder") + Return + End If + + Dim files1() As System.IO.FileInfo + Dim files2() As System.IO.FileInfo + + files1 = di.GetFiles("*.tpl", IO.SearchOption.TopDirectoryOnly) + files2 = di.GetFiles("*.tplx", IO.SearchOption.TopDirectoryOnly) + + If files1.Length < 1 AndAlso files2.Length < 1 Then + MsgBox("no file") + Return + End If + + + DialogResult = Windows.Forms.DialogResult.OK + + + End Sub + + Private Sub frm_Macro_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load + + End Sub +End Class \ No newline at end of file diff --git a/ArinWarev1/Forms_Input/Frm_v20091231_Weather.vb b/ArinWarev1/Forms_Input/Frm_v20091231_Weather.vb index 6c38ec7..8c54fc2 100644 --- a/ArinWarev1/Forms_Input/Frm_v20091231_Weather.vb +++ b/ArinWarev1/Forms_Input/Frm_v20091231_Weather.vb @@ -1327,7 +1327,7 @@ Public Class Frm_V20091231_Weather Dim len As UInt32 = ms.Length Dim bodybuf(len - 1) As Byte Array.Copy(ms.GetBuffer(), bodybuf, len) - Dim compbuf() As Byte + Dim compbuf() As Byte = Nothing Utility.MiniLZO.Compress(bodybuf, compbuf) 'Dim decombuf(bodybuf.Length - 1) As Byte diff --git a/ArinWarev1/Forms_Report/Frm_Upload.vb b/ArinWarev1/Forms_Report/Frm_Upload.vb index 86aa971..ebb1758 100644 --- a/ArinWarev1/Forms_Report/Frm_Upload.vb +++ b/ArinWarev1/Forms_Report/Frm_Upload.vb @@ -1,6 +1,7 @@ Public Class Frm_Upload Dim fn As String = "" + Dim silentmode As Boolean = False Public Sub New() ' 이 호출은 디자이너에 필요합니다. @@ -9,14 +10,45 @@ ' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오. End Sub - Public Sub New(_file As String) + Public Sub New(_file As String, Optional silent As Boolean = False) ' 이 호출은 디자이너에 필요합니다. InitializeComponent() fn = _file + silentmode = silent ' InitializeComponent() 호출 뒤에 초기화 코드를 추가하십시오. End Sub + + Private Sub Frm_Upload_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load + + ' Me.Hide() + Application.DoEvents() + + LoadFile() + MakeData() + + If fn <> "" Then + Try + If FpSpread1.SaveExcel(fn) Then + If silentmode = False Then + MsgBox("다음파일이 생성되었습니다" + vbCrLf + fn, MsgBoxStyle.Information, "확인") + End If + + DialogResult = Windows.Forms.DialogResult.OK + Else + MsgBox("저장실패" + vbCrLf + fn, MsgBoxStyle.Critical, "확인") + Me.Close() + End If + Catch ex As Exception + MsgBox("저장실패" + vbCrLf + fn + vbCrLf + ex.Message, MsgBoxStyle.Critical, "확인") + Me.Close() + End Try + + End If + End Sub + + Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click LoadFile() MakeData() @@ -177,7 +209,7 @@ FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 합계.ToString() : Row += 1 '//환기 '//평가결과값(report_pyonga 에서 가져옴) - 항목별평가결과(DsReport) + Pub.항목별평가결과(DsReport) If DsReport.Pyonga_YK.Rows.Count < 1 Then MsgBox("구조체값이 생성되지 않았습니다", MsgBoxStyle.Critical, "확인") Return @@ -195,7 +227,7 @@ FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = drYK.창호값.ToString("N3") : Row += 1 '//환기 '//창면적비 9개(?) - Dim 창및문면적비, 외벽열관류율 As Decimal + Dim 창및문면적비, 외벽열관류율_평균 As Decimal Dim 외벽열관류율_남 As Decimal Dim 외벽열관류율_남동 As Decimal Dim 외벽열관류율_동 As Decimal @@ -205,27 +237,48 @@ Dim 외벽열관류율_서 As Decimal Dim 외벽열관류율_남서 As Decimal - calc_창및문면적비(창및문면적비, 외벽열관류율) + Dim 창열관류율_평균 As Decimal + Dim 창열관류율_남 As Decimal + Dim 창열관류율_남동 As Decimal + Dim 창열관류율_동 As Decimal + Dim 창열관류율_북동 As Decimal + Dim 창열관류율_북 As Decimal + Dim 창열관류율_북서 As Decimal + Dim 창열관류율_서 As Decimal + Dim 창열관류율_남서 As Decimal + + Dim 일사에너지투과율_평균 As Decimal + Dim 일사에너지투과율_남 As Decimal + Dim 일사에너지투과율_남동 As Decimal + Dim 일사에너지투과율_동 As Decimal + Dim 일사에너지투과율_북동 As Decimal + Dim 일사에너지투과율_북 As Decimal + Dim 일사에너지투과율_북서 As Decimal + Dim 일사에너지투과율_서 As Decimal + Dim 일사에너지투과율_남서 As Decimal + + + calc_창및문면적비(창및문면적비, 외벽열관류율_평균, 창열관류율_평균, 일사에너지투과율_평균) FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//난방 - calc_창및문면적비(창및문면적비, 외벽열관류율_남, "남") + calc_창및문면적비(창및문면적비, 외벽열관류율_남, 창열관류율_남, 일사에너지투과율_남, "남") FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//냉방 - calc_창및문면적비(창및문면적비, 외벽열관류율_남동, "남동") + calc_창및문면적비(창및문면적비, 외벽열관류율_남동, 창열관류율_남동, 일사에너지투과율_남동, "남동") FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//급탕 - calc_창및문면적비(창및문면적비, 외벽열관류율_동, "동") + calc_창및문면적비(창및문면적비, 외벽열관류율_동, 창열관류율_동, 일사에너지투과율_동, "동") FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//조명 - calc_창및문면적비(창및문면적비, 외벽열관류율_북동, "북동") + calc_창및문면적비(창및문면적비, 외벽열관류율_북동, 창열관류율_북동, 일사에너지투과율_북동, "북동") FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기 - calc_창및문면적비(창및문면적비, 외벽열관류율_북, "북") + calc_창및문면적비(창및문면적비, 외벽열관류율_북, 창열관류율_북, 일사에너지투과율_북, "북") FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기 - calc_창및문면적비(창및문면적비, 외벽열관류율_북서, "북서") + calc_창및문면적비(창및문면적비, 외벽열관류율_북서, 창열관류율_북서, 일사에너지투과율_북서, "북서") FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기 - calc_창및문면적비(창및문면적비, 외벽열관류율_서, "서") + calc_창및문면적비(창및문면적비, 외벽열관류율_서, 창열관류율_서, 일사에너지투과율_서, "서") FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기 - calc_창및문면적비(창및문면적비, 외벽열관류율_남서, "남서") + calc_창및문면적비(창및문면적비, 외벽열관류율_남서, 창열관류율_남서, 일사에너지투과율_남서, "남서") FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 창및문면적비.ToString("N2") : Row += 1 '//환기 '//평균열관류율 11개(?) - FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율.ToString("N3") : Row += 1 '//난방 + FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율_평균.ToString("N3") : Row += 1 '//난방 FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율_남.ToString("N3") : Row += 1 '//냉방 FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율_남동.ToString("N3") : Row += 1 '//급탕 FpSpread1_Sheet1.Cells(Row, DataColumnIndex).Value = 외벽열관류율_동.ToString("N3") : Row += 1 '//조명 @@ -1064,786 +1117,10 @@ End Function - Private Sub 항목별평가결과(ByRef DSR As Eco2Ar.DSR) - Dim NDr As DSR.Pyonga_YKRow = DSR.Pyonga_YK.NewPyonga_YKRow - '//기준(*)데이터가없는경우에는 1번째데이터를 쓰도록한다. - Dim 외벽벽체찾음 As Boolean = False - Dim 외벽지붕찾음 As Boolean = False - Dim 외벽바닥찾음 As Boolean = False - For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") - Dim gcode As String = dr.면형태.ToString() - Dim gname As String = Get_CName("1088", gcode) - - If gname = "외벽(벽체)" OrElse gname = "내벽(벽체)" Then - If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기 - NDr.벽체값 = dr.열관류율 - - Dim 최대저항값 As Decimal = 0 - '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 - For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") - If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. - 외벽벽체찾음 = True - NDr.벽체종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" - 최대저항값 = CDec(ddr.열저항) - End If - Next - End If - ElseIf gname = "외벽(지붕)" OrElse gname = "내벽(지붕)" Then - If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기 - NDr.지붕값 = dr.열관류율 - - Dim 최대저항값 As Decimal = 0 - '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 - For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") - If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. - 외벽지붕찾음 = True - NDr.지붕종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" - 최대저항값 = CDec(ddr.열저항) - End If - Next - End If - ElseIf gname = "외벽(바닥)" OrElse gname = "내벽(바닥)" Then - If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기 - NDr.바닥값 = dr.열관류율 - - Dim 최대저항값 As Decimal = 0 - '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 - For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") - If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. - 외벽바닥찾음 = True - NDr.바닥종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" - 최대저항값 = CDec(ddr.열저항) - End If - Next - End If - End If - Next - - If Not 외벽벽체찾음 Then - For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") - Dim gcode As String = dr.면형태.ToString() - Dim gname As String = Get_CName("1088", gcode) - If gname = "외벽(벽체)" OrElse gname = "내벽(벽체)" Then - NDr.벽체값 = dr.열관류율 - Dim 최대저항값 As Decimal = 0 - '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 - For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") - If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. - 외벽벽체찾음 = True - NDr.벽체종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" - 최대저항값 = CDec(ddr.열저항) - End If - Next - If 외벽벽체찾음 Then Exit For - End If - Next - If Not 외벽벽체찾음 Then - NDr.벽체종류 = "" - NDr.벽체값 = 0 - End If - End If - - If Not 외벽지붕찾음 Then - For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") - Dim gcode As String = dr.면형태.ToString() - Dim gname As String = Get_CName("1088", gcode) - If gname = "외벽(지붕)" OrElse gname = "내벽(지붕)" Then - NDr.지붕값 = dr.열관류율 - Dim 최대저항값 As Decimal = 0 - '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 - For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") - If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. - 외벽지붕찾음 = True - NDr.지붕종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" - 최대저항값 = CDec(ddr.열저항) - End If - Next - If 외벽지붕찾음 Then Exit For - End If - Next - If Not 외벽지붕찾음 Then - NDr.지붕종류 = "" - NDr.지붕값 = 0 - End If - End If - - - If Not 외벽바닥찾음 Then - For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") - Dim gcode As String = dr.면형태.ToString() - Dim gname As String = Get_CName("1088", gcode) - If gname = "외벽(바닥)" OrElse gname = "내벽(바닥)" Then - NDr.바닥값 = dr.열관류율 - Dim 최대저항값 As Decimal = 0 - '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 - For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") - If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. - 외벽바닥찾음 = True - NDr.바닥종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" - 최대저항값 = CDec(ddr.열저항) - End If - Next - If 외벽바닥찾음 Then Exit For - End If - Next - If Not 외벽바닥찾음 Then - NDr.바닥종류 = "" - NDr.바닥값 = 0 - End If - End If - - '//지열설비정보확인 - Dim Sum_지열히트펌프용량_난방 As Single = 0 - Dim Sum_지열히트펌프용량_냉방 As Single = 0 - Dim Max_난방 As Single = 0 - Dim Max_냉방 As Single = 0 - Dim JDROW() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='지열'", "설명") - If JDROW.GetUpperBound(0) = -1 Then '//지열데이터가없는경우엔 빈값처리 - NDr.지열히트펌프용량냉방 = "" - NDr.지열히트펌프용량 = "" - NDr.지열비고 = "" - NDr.지열난방COP = "" - NDr.지열냉방COP = "" - Else '//데이터가있다면 1번째 데이터를 이용한다. - - - Dim Max_Row_난방 As DS.tbl_newRow = Nothing - Dim MAx_Row_냉방 As DS.tbl_newRow = Nothing - - NDr.지열비고 = JDROW(0).지열비고 - - For Each jdrowrow As DS.tbl_newRow In JDROW - - Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & jdrowrow.code.ToString & "'").GetUpperBound(0) + 1) - Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & jdrowrow.code.ToString & "'").GetUpperBound(0) + 1) - - Dim 난방값 As String = jdrowrow.열성능비난방 - Dim 냉방값 As String = jdrowrow.열성능비냉방 - - If 난방연결수 > 0 AndAlso 난방값 <> "" AndAlso IsNumeric(난방값) AndAlso 난방값 <> "0" Then - Sum_지열히트펌프용량_난방 += jdrowrow.지열히트펌프용량 - If TOSG(jdrowrow.지열히트펌프용량) > Max_난방 Then - Max_난방 = TOSG(jdrowrow.지열히트펌프용량) - Max_Row_난방 = jdrowrow - End If - End If - - If 냉방연결수 > 0 AndAlso 냉방값 <> "" AndAlso IsNumeric(냉방값) AndAlso 냉방값 <> "0" Then - Sum_지열히트펌프용량_냉방 += jdrowrow.지열히트펌프용량 - If TOSG(jdrowrow.지열히트펌프용량) > Max_냉방 Then - Max_냉방 = TOSG(jdrowrow.지열히트펌프용량) - MAx_Row_냉방 = jdrowrow - End If - End If - Next - - - NDr.지열히트펌프용량냉방 = Sum_지열히트펌프용량_냉방.ToString() - NDr.지열히트펌프용량 = Sum_지열히트펌프용량_난방.ToString() - - 'NDr.지열히트펌프용량냉방 = Sum_지열히트펌프용량_냉방.ToString() + "(" + Max_냉방.ToString() + ")" - - 'If Sum_지열히트펌프용량_난방 > 0 Then - ' NDr.지열히트펌프용량 = Sum_지열히트펌프용량_난방.ToString() - ' 'NDr.지열히트펌프용량 = "난방: " + Sum_지열히트펌프용량_난방.ToString() + "(" + Max_난방.ToString() + ")" - 'Else - ' NDr.지열히트펌프용량 = "" - 'End If - - 'If Sum_지열히트펌프용량_냉방 > 0 Then - ' NDr.지열히트펌프용량 += " / 냉방: " + NDr.지열히트펌프용량냉방 - 'End If - - If Max_난방 <> 0 Then - NDr.지열난방COP = Max_Row_난방.열성능비난방 - Else - NDr.지열난방COP = "" - End If - If Max_냉방 <> 0 Then - NDr.지열냉방COP = MAx_Row_냉방.열성능비냉방 - Else - NDr.지열냉방COP = "" - End If - End If - - '//###################### - '//13-12-08 - '//###################### - '//태양열시스템 - Dim JDROW2() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='태양열'", "설명") - Dim Max_태양열면적 As Single = -999 - Dim Max_집열기유형 As String = "" - Dim Max_집열판방위 As String = "" - Dim Sum_태양열면적 As Single = 0 - For Each rowsun As DS.tbl_newRow In JDROW2 - - Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1) - Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1) - - If 난방연결수 > 0 OrElse 냉방연결수 > 0 Then - - Dim 태양면적 As String = rowsun.집열판면적 - If 태양면적 <> "" AndAlso IsNumeric(태양면적) AndAlso 태양면적 <> "0" Then - Sum_태양열면적 += TOSG(태양면적) - If TOSG(태양면적) > Max_태양열면적 Then - Max_태양열면적 = TOSG(태양면적) - Max_집열기유형 = rowsun.집열기유형 - Max_집열판방위 = rowsun.집열판방위 - End If - End If - - End If - - Next - If Sum_태양열면적 > 0 Then - NDr.태양열집열판면적 = Sum_태양열면적.ToString() + "(" + Max_태양열면적.ToString + ")" - NDr.태양열집열기유형 = Max_집열기유형 - NDr.태양열집열판방위 = Max_집열판방위 - Else - NDr.태양열집열판면적 = "" - NDr.태양열집열기유형 = "" - NDr.태양열집열판방위 = "" - End If - - - - '//태양광시스템 - Dim JDROW3() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='태양광'", "설명") - Dim Max_태양광면적 As Single = -999 - Dim Max_태양광종류 As String = "" - Dim Max_태양광방위 As String = "" - Dim Max_태양광기울기 As String = "" - Dim Max_태양광적용타입 As String = "" - Dim Sum_태양광면적 As Single = 0 - - For Each rowsun As DS.tbl_newRow In JDROW3 - Dim 태양면적 As String = rowsun.태양광모듈면적 - If 태양면적 <> "" AndAlso IsNumeric(태양면적) AndAlso 태양면적 <> "0" Then - Sum_태양광면적 += TOSG(태양면적) - If TOSG(태양면적) > Max_태양광면적 Then - Max_태양광면적 = TOSG(태양면적) - Max_태양광종류 = rowsun.태양광모듈종류 - Max_태양광방위 = rowsun.태양광모듈방위 - Max_태양광기울기 = rowsun.태양광모듈기울기 - Max_태양광적용타입 = rowsun.태양광모듈적용타입 - End If - End If - Next - If Sum_태양광면적 > 0 Then - NDr.태양광모듈면적 = Sum_태양광면적.ToString() '+ "(" + Max_태양광면적.ToString + ")" - NDr.태양광모듈종류 = Max_태양광종류 - NDr.태양광모듈방위 = Max_태양광방위 - NDr.태양광모듈기울기 = Max_태양광기울기 - NDr.태양광모듈적용타입 = Max_태양광적용타입 - If NDr.태양광모듈방위 = "(없음)" Then - NDr.태양광모듈방위 = "" - End If - Else - NDr.태양광모듈면적 = "" - NDr.태양광모듈종류 = "" - NDr.태양광모듈방위 = "" - NDr.태양광모듈기울기 = "" - NDr.태양광모듈적용타입 = "" - End If - - - '//열병합시스템 - Dim JDROW4() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='열병합'", "설명") - Dim Max_열병합능력 As Single = -999 - Dim Max_열병합생산효율 As String = "" - Dim Max_열병합발전효율 As String = "" - Dim Max_열병합가동연료 As String = "" - Dim Sum_열병합능력 As Single = 0 - - For Each rowsun As DS.tbl_newRow In JDROW4 - - - Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1) - Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1) - - If 난방연결수 > 0 OrElse 냉방연결수 > 0 Then - Dim 값 As String = rowsun.열생산능력 - If 값 <> "" AndAlso IsNumeric(값) AndAlso 값 <> "0" Then - Sum_열병합능력 += TOSG(값) - If TOSG(값) > Max_열병합능력 Then - Max_열병합능력 = TOSG(값) - Max_열병합생산효율 = rowsun.열생산효율.ToString - Max_열병합발전효율 = rowsun.발전효율.ToString - Max_열병합가동연료 = rowsun.가동연료 - End If - End If - End If - Next - - If Sum_열병합능력 > 0 Then - NDr.열병합열생산능력 = Sum_열병합능력.ToString() + "(" + Max_열병합능력.ToString + ")" - NDr.열병합열생산효율 = Max_열병합생산효율 - NDr.열병합발전효율 = Max_열병합발전효율 - NDr.열병합가동연료 = Max_열병합가동연료 - Else - NDr.열병합열생산능력 = "" - NDr.열병합열생산효율 = "" - NDr.열병합발전효율 = "" - NDr.열병합가동연료 = "" - End If - - '//창호종류 및 창호값확인 - Dim 창호종류찾음 As Boolean = False - - - Dim 창호그룹 As New Dictionary(Of String, Double) - - For Each drmyoun As DS.tbl_myounRow In DSET1.tbl_myoun.Select("code <> '0'") - If drmyoun.열관류율2 = "" OrElse drmyoun.열관류율2 = "0" Then Continue For - - For Each cdr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code= '" + drmyoun.열관류율2 + "'") - - - Dim 면코드 As String = cdr.면형태 - If 면코드 = "" Then Continue For - Dim 면이름 As String = Get_CName("1088", 면코드) - If 면이름 = "" Then Continue For - If 면이름.IndexOf("외부창") <> -1 Then '//이름에 외부창이잇는것을 찾음 - - If Not 창호그룹.ContainsKey(cdr.code) Then - 창호그룹.Add(cdr.code, TOSG(drmyoun.건축부위면적)) - Else - 창호그룹.Item(cdr.code) = 창호그룹.Item(cdr.code) + TOSG(drmyoun.건축부위면적) - End If - - End If - Next - - Next - - Dim 최대면적 As Double = 0 - Dim 최대면적면코드 As String = "" - For Each item As System.Collections.Generic.KeyValuePair(Of String, Double) In 창호그룹 - If item.Value > 최대면적 Then - 최대면적 = item.Value - 최대면적면코드 = item.Key - End If - Next - - For Each cdr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") - Dim 면코드 As String = cdr.code - If 면코드 = 최대면적면코드 Then - NDr.창호종류 = cdr.창호세부설명 - NDr.창호값 = TOSG(cdr.열관류율) - Exit For - End If - Next - - - - - - - - '//조명설비값(모든존 ; sum(면적*조명에너지부하율) / sum(면적) - Dim 존면적합 As Decimal = 0 - Dim 존면적부하율 As Decimal = 0 - For Each drz As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'") - - If drz.조명부하산출방법 = "계산치" Then - 존면적합 += TOSG(drz.면적) - 존면적부하율 += TOSG(drz.면적) * TOSG(drz.조명에너지부하율계산치) - ElseIf drz.조명부하산출방법 = "입력치" Then - 존면적합 += TOSG(drz.면적) - 존면적부하율 += TOSG(drz.면적) * TOSG(drz.조명에너지부하율입력치) - End If - Next - If 존면적합 <> 0 Then - NDr.주거실조명전력 = Math.Round(존면적부하율 / 존면적합, 2) - End If - - '//주조명광원값() - NDr.주조명광원 = DSET1.tbl_Desc.Rows(0)("주조명").ToString - - - '///################################################################################# - '///################################################################################# - '//설비방식및사용연료 - '//난방(입력존에서 가장많이 사용한놈) - Dim fndr As DS.tbl_nanbangkikiRow = Nothing - Dim fndrcnt As Integer = 0 - - Dim sum_보일러 As Single = 0 - Dim sum_히트펌프 As Single = 0 - Dim sum_지역난방 As Single = 0 - Dim sum_전기보일러 As Single = 0 - - For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0'") - Dim cnt As Integer = 0 - Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산난방생산기기='" & dr.code & "' or 공조난방생산기기='" & dr.code & "'") - - '//131207 - If zDR.Length > 0 Then - Select Case dr.열생산기기방식 - Case "보일러" - sum_보일러 += TOSG(dr.보일러정격출력) - Case "히트펌프" - sum_히트펌프 += TOSG(dr.히트난방용량) - Case "지역난방" - sum_지역난방 += TOSG(dr.열교환기정격출력) - Case "전기보일러" - sum_전기보일러 += TOSG(dr.보일러정격출력) - End Select - End If - Next - - - '//합이 가장 큰 그룹을 검색 - Dim maxvalue As Single = 0 - ' Dim maxindex As Integer = 0 - maxvalue = Math.Max(sum_보일러, sum_히트펌프) - maxvalue = Math.Max(maxvalue, sum_지역난방) - maxvalue = Math.Max(maxvalue, sum_전기보일러) - - Dim searchfilter As String = "" - - If maxvalue = 0 Then - searchfilter = "" - ' maxindex = 0 '//없음 - ElseIf maxvalue = sum_보일러 Then - ' maxindex = 1 - searchfilter = "열생산기기방식='보일러'" - ElseIf maxvalue = sum_히트펌프 Then - 'maxindex = 2 - searchfilter = "열생산기기방식='히트펌프'" - ElseIf maxvalue = sum_지역난방 Then - ' maxindex = 3 - searchfilter = "열생산기기방식='지역난방'" - ElseIf maxvalue = sum_전기보일러 Then - ' maxindex = 4 - searchfilter = "열생산기기방식='전기보일러'" - End If - - '//가장큰 그룹내의 개별 대표값 찾기 - If searchfilter <> "" Then - For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and " + searchfilter) - Dim cnt As Integer = 0 - Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산난방생산기기='" & dr.code & "' or 공조난방생산기기='" & dr.code & "'") - - '/// - For Each drow As DS.tbl_zoneRow In zDR - Dim 입력존수문자 As Integer = drow.입력존의수 - If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1" - cnt += CInt(입력존수문자) - Next - - If cnt > fndrcnt Then '//최대값찾기 - fndr = dr - fndrcnt = cnt - End If - - - - If Not fndr Is Nothing Then - - '//20160327 - If Not IsNumeric(fndr.보일러대수) Then fndr.보일러대수 = "0" - If CInt(fndr.보일러대수) = 0 AndAlso (fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동") Then - MsgBox("다음 난방기기의 보일러 대수 가 입력되지 않았습니다" + vbCrLf + vbCrLf + _ - "난방기기 : " + fndr.설명 + vbCrLf + _ - "운전방식 : " + fndr.운전방식 + vbCrLf + _ - "보일러대수 : " + fndr.보일러대수 + vbCrLf + vbCrLf + _ - "단독가동이 아닌 경우에는 보일러 대수가 입력되어야 합니다", MsgBoxStyle.Critical, "확인") - End If - - NDr.온열원설비방식 = fndr.열생산기기방식 - Select Case fndr.열생산기기방식 - Case "보일러" - NDr.온열원설비연료 = fndr.사용연료 - If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then - NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")" - Else - NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" - End If - - NDr.온열원효율 = fndr.정격보일러효율 + "%" - Case "히트펌프" - NDr.온열원설비연료 = fndr.히트연료 - If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then - NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")" - Else - NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" - End If - NDr.온열원효율 = fndr.히트난방정격7 - Case "지역난방" - NDr.온열원설비연료 = "지역난방" 'fndr.사용연료 - If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then - NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")" - Else - NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" - End If - NDr.온열원효율 = fndr.정격보일러효율 + "%" - Case "전기보일러" - NDr.온열원설비연료 = "전기" ' fndr.사용연료 - If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then - NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")" - Else - NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" - End If - NDr.온열원효율 = fndr.정격보일러효율 + "%" - End Select - End If - Next - Else - NDr.온열원설비연료 = "" - NDr.온열원용량 = "" - NDr.온열원효율 = "" - End If - - - '///################################################################################# - '///################################################################################# - '//급탕(입력존에서 가장많이 사용한놈) - fndr = Nothing - fndrcnt = 0 - - sum_보일러 = 0 - sum_히트펌프 = 0 - sum_지역난방 = 0 - sum_전기보일러 = 0 - - For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0'") - Dim cnt As Integer = 0 - Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산급탕생산기기='" & dr.code & "'") - - '//131207 - If zDR.Length > 0 Then - Select Case dr.열생산기기방식 - Case "보일러" - sum_보일러 += TOSG(dr.보일러정격출력) - Case "히트펌프" - sum_히트펌프 += TOSG(dr.히트난방용량) - Case "지역난방" - sum_지역난방 += TOSG(dr.열교환기정격출력) - Case "전기보일러" - sum_전기보일러 += TOSG(dr.보일러정격출력) - End Select - End If - - - - Next - - '//합이 가장 큰 그룹을 검색 - maxvalue = 0 - maxvalue = Math.Max(sum_보일러, sum_히트펌프) - maxvalue = Math.Max(maxvalue, sum_지역난방) - maxvalue = Math.Max(maxvalue, sum_전기보일러) - - searchfilter = "" - - If maxvalue = 0 Then - searchfilter = "" - ElseIf maxvalue = sum_보일러 Then - searchfilter = "열생산기기방식='보일러'" - ElseIf maxvalue = sum_히트펌프 Then - searchfilter = "열생산기기방식='히트펌프'" - ElseIf maxvalue = sum_지역난방 Then - searchfilter = "열생산기기방식='지역난방'" - ElseIf maxvalue = sum_전기보일러 Then - searchfilter = "열생산기기방식='전기보일러'" - End If - - '//가장큰 그룹내의 개별 대표값 찾기 - NDr.급탕설비방식 = "" - NDr.급탕설비연료 = "" - NDr.급탕용량 = "" - NDr.급탕효율 = "" - - If searchfilter <> "" Then - - For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and " + searchfilter) - Dim cnt As Integer = 0 - Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산급탕생산기기='" & dr.code + "'") - - For Each drow As DS.tbl_zoneRow In zDR - Dim 입력존수문자 As Integer = drow.입력존의수 - If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1" - cnt += CInt(입력존수문자) - Next - If cnt > fndrcnt Then '//최대값찾기 - fndr = dr - fndrcnt = cnt - End If - - If Not fndr Is Nothing Then - NDr.급탕설비방식 = fndr.열생산기기방식 - - - Select Case fndr.열생산기기방식 - Case "보일러" - NDr.급탕설비연료 = fndr.사용연료 - NDr.급탕용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" - NDr.급탕효율 = fndr.정격보일러효율 + "%" - Case "히트펌프" - NDr.급탕설비연료 = fndr.히트연료 - NDr.급탕용량 = maxvalue.ToString() ' + "(" + fndr.히트난방용량 + ")" - NDr.급탕효율 = fndr.히트난방정격7 - Case "지역난방" - NDr.급탕설비연료 = "지역난방" ' fndr.사용연료 - NDr.급탕용량 = maxvalue.ToString() '+ "(" + fndr.열교환기정격출력 + ")" - NDr.급탕효율 = fndr.정격보일러효율 + "%" - Case "전기보일러" - NDr.급탕설비연료 = "전기" ' fndr.사용연료 - NDr.급탕용량 = maxvalue.ToString() ' + "(" + fndr.보일러정격출력 + ")" - NDr.급탕효율 = fndr.정격보일러효율 + "%" - End Select - - End If - - Next - End If - - - - - - - - - - '///################################################################################# - '///################################################################################# - '//냉방(입력존에서 가장많이 사용한놈) - Dim fndr2 As DS.tbl_nangbangkikiRow = Nothing - Dim fndr2cnt As Integer = 0 - - Dim sum_압축식 As Single = 0 - Dim sum_압축식_LNG As Single = 0 - Dim sum_지역냉방 As Single = 0 - Dim sum_흡수식 As Single = 0 - - For Each dr As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0'") - Dim cnt2 As Integer = 0 - Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("열생산냉방생산기기='" & dr.code & "' or 공조냉방생산기기='" & dr.code & "'") - - '//131207 - If zDR.Length > 0 Then - Select Case dr.냉동기방식 - Case "압축식" - sum_압축식 += TOSG(dr.냉동기용량) - Case "압축식(LNG)" - sum_압축식_LNG += TOSG(dr.냉동기용량) - Case "지역냉방" - sum_지역냉방 += TOSG(dr.냉동기용량) - Case "흡수식" - sum_흡수식 += TOSG(dr.냉동기용량) - End Select - End If - - - Next - - '//합이 가장 큰 그룹을 검색 - maxvalue = 0 - maxvalue = Math.Max(sum_압축식, sum_압축식_LNG) - maxvalue = Math.Max(maxvalue, sum_지역냉방) - maxvalue = Math.Max(maxvalue, sum_흡수식) - - searchfilter = "" - - If maxvalue = 0 Then - searchfilter = "" - ElseIf maxvalue = sum_압축식 Then - searchfilter = "냉동기방식='압축식'" - ElseIf maxvalue = sum_압축식_LNG Then - searchfilter = "냉동기방식='압축식(LNG)'" - ElseIf maxvalue = sum_지역냉방 Then - searchfilter = "냉동기방식='지역냉방'" - ElseIf maxvalue = sum_흡수식 Then - searchfilter = "냉동기방식='흡수식'" - End If - - - - - '//가장큰 그룹내의 개별 대표값 찾기 - If searchfilter <> "" Then - For Each dr As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0' and " + searchfilter) - Dim cnt2 As Integer = 0 - Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("열생산냉방생산기기='" & dr.code & "' or 공조냉방생산기기='" & dr.code & "'") - - For Each drow As DS.tbl_zoneRow In zDR - Dim 입력존수문자 As Integer = drow.입력존의수 - If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1" - cnt2 += CInt(입력존수문자) - Next - If cnt2 > fndr2cnt Then '//최대값찾기 - fndr2 = dr - fndr2cnt = cnt2 - End If - - If Not fndr2 Is Nothing Then - NDr.냉열원설비방식 = fndr2.냉동기방식 - NDr.냉열원용량 = maxvalue.ToString() + "(" + fndr2.냉동기용량 + ")" - NDr.냉열원효율 = fndr2.열성능비 - Select Case fndr2.냉동기방식 - Case "압축식" - NDr.냉열원설비연료 = "전기" - Case "압축식(LNG)" - NDr.냉열원설비연료 = "천연가스" - Case "지역냉방" - NDr.냉열원설비연료 = "지역냉방" - Case "흡수식" - If fndr2.열생산연결방식 = "직화식" Then - NDr.냉열원설비연료 = fndr2.사용연료 - ElseIf fndr2.열생산연결방식 = "외부연결" Then - Dim 온수열생산기기코드 As String = fndr2.온수열생산기기 - If 온수열생산기기코드 <> "" Then - Dim 난방기기() As DS.tbl_nanbangkikiRow = DSET1.tbl_nanbangkiki.Select("code='" + 온수열생산기기코드 + "'") - If 난방기기.GetUpperBound(0) = 0 Then - NDr.냉열원설비연료 = fndr2.사용연료 - End If - End If - End If - End Select - - End If - - Next - Else - NDr.냉열원설비방식 = "" - NDr.냉열원용량 = "" - NDr.냉열원효율 = "" - End If - - - DSR.Pyonga_YK.Rows.Add(NDr) - DSR.Pyonga_YK.AcceptChanges() - - End Sub - - - Private Sub Frm_Upload_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load - - ' Me.Hide() - LoadFile() - MakeData() - - If fn <> "" Then - Try - If FpSpread1.SaveExcel(fn) Then - MsgBox("다음파일이 생성되었습니다" + vbCrLf + fn, MsgBoxStyle.Information, "확인") - Me.Close() - Else - MsgBox("저장실패", MsgBoxStyle.Critical, "확인") - ' Me.Show() - End If - Catch ex As Exception - MsgBox("저장실패" + vbCrLf + ex.Message, MsgBoxStyle.Critical, "확인") - Me.Close() - End Try - - End If - End Sub + Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim sd As New SaveFileDialog() sd.Filter = "Excel(*.xls)|*.xls" diff --git a/ArinWarev1/MdiMain.Designer.vb b/ArinWarev1/MdiMain.Designer.vb index 050dc55..2483410 100644 --- a/ArinWarev1/MdiMain.Designer.vb +++ b/ArinWarev1/MdiMain.Designer.vb @@ -34,6 +34,32 @@ Partial Class MdiMain Me.lbl_prjname = New System.Windows.Forms.ToolStripStatusLabel() Me.ToolTip1 = New System.Windows.Forms.ToolTip(Me.components) Me.MenuStrip1 = New System.Windows.Forms.MenuStrip() + Me.WindowsMenu = New System.Windows.Forms.ToolStripMenuItem() + Me.NewWindowToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.CascadeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.TileVerticalToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.TileHorizontalToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.CloseAllToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ArrangeIconsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.TreeView1 = New System.Windows.Forms.TreeView() + Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) + Me.그룹추가ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.그룹삭제ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.그룹복사ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.그룹변경ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.ToolStrip1 = New System.Windows.Forms.ToolStrip() + Me.prb1 = New System.Windows.Forms.ToolStripProgressBar() + Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton2 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton3 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton4 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton5 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton6 = New System.Windows.Forms.ToolStripButton() + Me.ToolStripButton7 = New System.Windows.Forms.ToolStripButton() + Me.bt_test = New System.Windows.Forms.ToolStripDropDownButton() + Me.비교데이터백업ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.데이터비교ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.순실체적ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ReportToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.btNew = New System.Windows.Forms.ToolStripMenuItem() Me.신규코드업로드ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() @@ -43,6 +69,7 @@ Partial Class MdiMain Me.btSaveNew = New System.Windows.Forms.ToolStripMenuItem() Me.정보ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.bt_데이터관리 = New System.Windows.Forms.ToolStripMenuItem() + Me.btImport = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem5 = New System.Windows.Forms.ToolStripSeparator() Me.lbl_p1 = New System.Windows.Forms.ToolStripMenuItem() Me.lbl_p2 = New System.Windows.Forms.ToolStripMenuItem() @@ -78,32 +105,7 @@ Partial Class MdiMain Me.SaveXmlRawToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.FielCheckerToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripSeparator() - Me.WindowsMenu = New System.Windows.Forms.ToolStripMenuItem() - Me.NewWindowToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.CascadeToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.TileVerticalToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.TileHorizontalToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.CloseAllToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ArrangeIconsToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.TreeView1 = New System.Windows.Forms.TreeView() - Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components) - Me.그룹추가ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.그룹삭제ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.그룹복사ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.그룹변경ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.ToolStrip1 = New System.Windows.Forms.ToolStrip() - Me.ToolStripButton1 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripButton2 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripButton3 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripButton4 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripButton5 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripButton6 = New System.Windows.Forms.ToolStripButton() - Me.ToolStripButton7 = New System.Windows.Forms.ToolStripButton() - Me.bt_test = New System.Windows.Forms.ToolStripDropDownButton() - Me.비교데이터백업ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.데이터비교ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.순실체적ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.btImport = New System.Windows.Forms.ToolStripMenuItem() + Me.일괄계산ToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.StatusStrip1.SuspendLayout() Me.MenuStrip1.SuspendLayout() Me.ContextMenuStrip1.SuspendLayout() @@ -114,7 +116,7 @@ Partial Class MdiMain ' Me.StatusStrip1.BackColor = System.Drawing.Color.White Me.StatusStrip1.Font = New System.Drawing.Font("돋움", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.lbl_user, Me.lbl_password, Me.lbl_filename, Me.lbl_FileInfo, Me.lbl_lastedit, Me.lbl_mac, Me.lbl_prjname}) + Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.lbl_user, Me.lbl_password, Me.lbl_filename, Me.lbl_FileInfo, Me.lbl_lastedit, Me.lbl_mac, Me.lbl_prjname, Me.prb1}) Me.StatusStrip1.Location = New System.Drawing.Point(0, 630) Me.StatusStrip1.Name = "StatusStrip1" Me.StatusStrip1.Size = New System.Drawing.Size(1008, 22) @@ -176,6 +178,198 @@ Partial Class MdiMain Me.MenuStrip1.TabIndex = 22 Me.MenuStrip1.Text = "MenuStrip1" ' + 'WindowsMenu + ' + Me.WindowsMenu.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewWindowToolStripMenuItem, Me.CascadeToolStripMenuItem, Me.TileVerticalToolStripMenuItem, Me.TileHorizontalToolStripMenuItem, Me.CloseAllToolStripMenuItem, Me.ArrangeIconsToolStripMenuItem}) + Me.WindowsMenu.ForeColor = System.Drawing.Color.Red + Me.WindowsMenu.Name = "WindowsMenu" + Me.WindowsMenu.Size = New System.Drawing.Size(49, 20) + Me.WindowsMenu.Text = "창(&W)" + Me.WindowsMenu.Visible = False + ' + 'NewWindowToolStripMenuItem + ' + Me.NewWindowToolStripMenuItem.Name = "NewWindowToolStripMenuItem" + Me.NewWindowToolStripMenuItem.Size = New System.Drawing.Size(198, 22) + Me.NewWindowToolStripMenuItem.Text = "새 창(&N)" + ' + 'CascadeToolStripMenuItem + ' + Me.CascadeToolStripMenuItem.Name = "CascadeToolStripMenuItem" + Me.CascadeToolStripMenuItem.Size = New System.Drawing.Size(198, 22) + Me.CascadeToolStripMenuItem.Text = "계단식 배열(&C)" + ' + 'TileVerticalToolStripMenuItem + ' + Me.TileVerticalToolStripMenuItem.Name = "TileVerticalToolStripMenuItem" + Me.TileVerticalToolStripMenuItem.Size = New System.Drawing.Size(198, 22) + Me.TileVerticalToolStripMenuItem.Text = "세로 바둑판식 배열(&V)" + ' + 'TileHorizontalToolStripMenuItem + ' + Me.TileHorizontalToolStripMenuItem.Name = "TileHorizontalToolStripMenuItem" + Me.TileHorizontalToolStripMenuItem.Size = New System.Drawing.Size(198, 22) + Me.TileHorizontalToolStripMenuItem.Text = "가로 바둑판식 배열(&H)" + ' + 'CloseAllToolStripMenuItem + ' + Me.CloseAllToolStripMenuItem.Name = "CloseAllToolStripMenuItem" + Me.CloseAllToolStripMenuItem.Size = New System.Drawing.Size(198, 22) + Me.CloseAllToolStripMenuItem.Text = "모두 닫기(&L)" + ' + 'ArrangeIconsToolStripMenuItem + ' + Me.ArrangeIconsToolStripMenuItem.Name = "ArrangeIconsToolStripMenuItem" + Me.ArrangeIconsToolStripMenuItem.Size = New System.Drawing.Size(198, 22) + Me.ArrangeIconsToolStripMenuItem.Text = "아이콘 정렬(&A)" + ' + 'TreeView1 + ' + Me.TreeView1.ContextMenuStrip = Me.ContextMenuStrip1 + Me.TreeView1.Dock = System.Windows.Forms.DockStyle.Left + Me.TreeView1.Font = New System.Drawing.Font("돋움", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) + Me.TreeView1.Location = New System.Drawing.Point(0, 49) + Me.TreeView1.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2) + Me.TreeView1.Name = "TreeView1" + Me.TreeView1.Size = New System.Drawing.Size(185, 581) + Me.TreeView1.TabIndex = 23 + ' + 'ContextMenuStrip1 + ' + Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.그룹추가ToolStripMenuItem, Me.그룹삭제ToolStripMenuItem, Me.그룹복사ToolStripMenuItem, Me.그룹변경ToolStripMenuItem}) + Me.ContextMenuStrip1.Name = "ContextMenuStrip1" + Me.ContextMenuStrip1.Size = New System.Drawing.Size(123, 92) + ' + '그룹추가ToolStripMenuItem + ' + Me.그룹추가ToolStripMenuItem.Name = "그룹추가ToolStripMenuItem" + Me.그룹추가ToolStripMenuItem.Size = New System.Drawing.Size(122, 22) + Me.그룹추가ToolStripMenuItem.Text = "그룹추가" + ' + '그룹삭제ToolStripMenuItem + ' + Me.그룹삭제ToolStripMenuItem.Name = "그룹삭제ToolStripMenuItem" + Me.그룹삭제ToolStripMenuItem.Size = New System.Drawing.Size(122, 22) + Me.그룹삭제ToolStripMenuItem.Text = "그룹삭제" + ' + '그룹복사ToolStripMenuItem + ' + Me.그룹복사ToolStripMenuItem.Name = "그룹복사ToolStripMenuItem" + Me.그룹복사ToolStripMenuItem.Size = New System.Drawing.Size(122, 22) + Me.그룹복사ToolStripMenuItem.Text = "그룹복사" + ' + '그룹변경ToolStripMenuItem + ' + Me.그룹변경ToolStripMenuItem.Name = "그룹변경ToolStripMenuItem" + Me.그룹변경ToolStripMenuItem.Size = New System.Drawing.Size(122, 22) + Me.그룹변경ToolStripMenuItem.Text = "그룹변경" + ' + 'ToolStrip1 + ' + Me.ToolStrip1.Font = New System.Drawing.Font("돋움", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) + Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripButton1, Me.ToolStripButton2, Me.ToolStripButton3, Me.ToolStripButton4, Me.ToolStripButton5, Me.ToolStripButton6, Me.ToolStripButton7, Me.bt_test}) + Me.ToolStrip1.Location = New System.Drawing.Point(0, 24) + Me.ToolStrip1.Name = "ToolStrip1" + Me.ToolStrip1.Size = New System.Drawing.Size(1008, 25) + Me.ToolStrip1.TabIndex = 25 + Me.ToolStrip1.Text = "ToolStrip1" + ' + 'prb1 + ' + Me.prb1.Name = "prb1" + Me.prb1.Size = New System.Drawing.Size(100, 16) + ' + 'ToolStripButton1 + ' + Me.ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.ToolStripButton1.Image = CType(resources.GetObject("ToolStripButton1.Image"), System.Drawing.Image) + Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton1.Name = "ToolStripButton1" + Me.ToolStripButton1.Size = New System.Drawing.Size(23, 22) + Me.ToolStripButton1.Text = "파일생성" + ' + 'ToolStripButton2 + ' + Me.ToolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.ToolStripButton2.Image = CType(resources.GetObject("ToolStripButton2.Image"), System.Drawing.Image) + Me.ToolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton2.Name = "ToolStripButton2" + Me.ToolStripButton2.Size = New System.Drawing.Size(23, 22) + Me.ToolStripButton2.Text = "파일열기" + ' + 'ToolStripButton3 + ' + Me.ToolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.ToolStripButton3.Image = CType(resources.GetObject("ToolStripButton3.Image"), System.Drawing.Image) + Me.ToolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton3.Name = "ToolStripButton3" + Me.ToolStripButton3.Size = New System.Drawing.Size(23, 22) + Me.ToolStripButton3.Text = "파일저장" + ' + 'ToolStripButton4 + ' + Me.ToolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.ToolStripButton4.Image = CType(resources.GetObject("ToolStripButton4.Image"), System.Drawing.Image) + Me.ToolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton4.Name = "ToolStripButton4" + Me.ToolStripButton4.Size = New System.Drawing.Size(23, 22) + Me.ToolStripButton4.Text = "다른이름으로 저장" + ' + 'ToolStripButton5 + ' + Me.ToolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.ToolStripButton5.Image = CType(resources.GetObject("ToolStripButton5.Image"), System.Drawing.Image) + Me.ToolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton5.Name = "ToolStripButton5" + Me.ToolStripButton5.Size = New System.Drawing.Size(23, 22) + Me.ToolStripButton5.Text = "건물개요" + ' + 'ToolStripButton6 + ' + Me.ToolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.ToolStripButton6.Image = CType(resources.GetObject("ToolStripButton6.Image"), System.Drawing.Image) + Me.ToolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton6.Name = "ToolStripButton6" + Me.ToolStripButton6.Size = New System.Drawing.Size(23, 22) + Me.ToolStripButton6.Text = "계산" + ' + 'ToolStripButton7 + ' + Me.ToolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image + Me.ToolStripButton7.Image = CType(resources.GetObject("ToolStripButton7.Image"), System.Drawing.Image) + Me.ToolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta + Me.ToolStripButton7.Name = "ToolStripButton7" + Me.ToolStripButton7.Size = New System.Drawing.Size(23, 22) + Me.ToolStripButton7.Text = "계산결과그래프보기" + ' + 'bt_test + ' + Me.bt_test.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.비교데이터백업ToolStripMenuItem, Me.데이터비교ToolStripMenuItem, Me.순실체적ToolStripMenuItem}) + Me.bt_test.Image = CType(resources.GetObject("bt_test.Image"), System.Drawing.Image) + Me.bt_test.ImageTransparentColor = System.Drawing.Color.Magenta + Me.bt_test.Name = "bt_test" + Me.bt_test.Size = New System.Drawing.Size(90, 22) + Me.bt_test.Text = "TestMenu" + Me.bt_test.Visible = False + ' + '비교데이터백업ToolStripMenuItem + ' + Me.비교데이터백업ToolStripMenuItem.Name = "비교데이터백업ToolStripMenuItem" + Me.비교데이터백업ToolStripMenuItem.Size = New System.Drawing.Size(170, 22) + Me.비교데이터백업ToolStripMenuItem.Text = "1.비교데이터백업" + ' + '데이터비교ToolStripMenuItem + ' + Me.데이터비교ToolStripMenuItem.Name = "데이터비교ToolStripMenuItem" + Me.데이터비교ToolStripMenuItem.Size = New System.Drawing.Size(170, 22) + Me.데이터비교ToolStripMenuItem.Text = "2.데이터비교" + ' + '순실체적ToolStripMenuItem + ' + Me.순실체적ToolStripMenuItem.Name = "순실체적ToolStripMenuItem" + Me.순실체적ToolStripMenuItem.Size = New System.Drawing.Size(170, 22) + Me.순실체적ToolStripMenuItem.Text = "3.순실체적" + ' 'ReportToolStripMenuItem ' Me.ReportToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.btNew, Me.신규코드업로드ToolStripMenuItem, Me.ToolStripMenuItem7, Me.btOpen, Me.bt_filesave, Me.btSaveNew, Me.정보ToolStripMenuItem, Me.bt_데이터관리, Me.btImport, Me.ToolStripMenuItem5, Me.lbl_p1, Me.lbl_p2, Me.lbl_p3, Me.lbl_p4, Me.lbl_p5, Me.ToolStripMenuItem6, Me.종료ToolStripMenuItem}) @@ -242,6 +436,12 @@ Partial Class MdiMain Me.bt_데이터관리.Text = "데이터관리" Me.bt_데이터관리.Visible = False ' + 'btImport + ' + Me.btImport.Name = "btImport" + Me.btImport.Size = New System.Drawing.Size(244, 22) + Me.btImport.Text = "가져오기" + ' 'ToolStripMenuItem5 ' Me.ToolStripMenuItem5.Name = "ToolStripMenuItem5" @@ -379,7 +579,7 @@ Partial Class MdiMain 'bt_etc ' Me.bt_etc.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right - Me.bt_etc.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItem8, Me.ToolStripMenuItem10, Me.ToolStripMenuItem11, Me.ToolStripSeparator5, Me.ToolStripMenuItem12, Me.ToolStripSeparator6, Me.ToolStripMenuItem13, Me.설정프로필ToolStripMenuItem, Me.ExportToolStripMenuItem, Me.ToolStripMenuItem1, Me.파일로부터기상데이터가져오기ToolStripMenuItem, Me.SaveXmlRawToolStripMenuItem, Me.FielCheckerToolStripMenuItem, Me.ToolStripMenuItem2}) + Me.bt_etc.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItem8, Me.ToolStripMenuItem10, Me.ToolStripMenuItem11, Me.ToolStripSeparator5, Me.ToolStripMenuItem12, Me.ToolStripSeparator6, Me.ToolStripMenuItem13, Me.설정프로필ToolStripMenuItem, Me.ExportToolStripMenuItem, Me.ToolStripMenuItem1, Me.파일로부터기상데이터가져오기ToolStripMenuItem, Me.SaveXmlRawToolStripMenuItem, Me.FielCheckerToolStripMenuItem, Me.ToolStripMenuItem2, Me.일괄계산ToolStripMenuItem}) Me.bt_etc.Image = CType(resources.GetObject("bt_etc.Image"), System.Drawing.Image) Me.bt_etc.Name = "bt_etc" Me.bt_etc.Size = New System.Drawing.Size(57, 20) @@ -466,198 +666,11 @@ Partial Class MdiMain Me.ToolStripMenuItem2.Name = "ToolStripMenuItem2" Me.ToolStripMenuItem2.Size = New System.Drawing.Size(259, 6) ' - 'WindowsMenu + '일괄계산ToolStripMenuItem ' - Me.WindowsMenu.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.NewWindowToolStripMenuItem, Me.CascadeToolStripMenuItem, Me.TileVerticalToolStripMenuItem, Me.TileHorizontalToolStripMenuItem, Me.CloseAllToolStripMenuItem, Me.ArrangeIconsToolStripMenuItem}) - Me.WindowsMenu.ForeColor = System.Drawing.Color.Red - Me.WindowsMenu.Name = "WindowsMenu" - Me.WindowsMenu.Size = New System.Drawing.Size(49, 20) - Me.WindowsMenu.Text = "창(&W)" - Me.WindowsMenu.Visible = False - ' - 'NewWindowToolStripMenuItem - ' - Me.NewWindowToolStripMenuItem.Name = "NewWindowToolStripMenuItem" - Me.NewWindowToolStripMenuItem.Size = New System.Drawing.Size(198, 22) - Me.NewWindowToolStripMenuItem.Text = "새 창(&N)" - ' - 'CascadeToolStripMenuItem - ' - Me.CascadeToolStripMenuItem.Name = "CascadeToolStripMenuItem" - Me.CascadeToolStripMenuItem.Size = New System.Drawing.Size(198, 22) - Me.CascadeToolStripMenuItem.Text = "계단식 배열(&C)" - ' - 'TileVerticalToolStripMenuItem - ' - Me.TileVerticalToolStripMenuItem.Name = "TileVerticalToolStripMenuItem" - Me.TileVerticalToolStripMenuItem.Size = New System.Drawing.Size(198, 22) - Me.TileVerticalToolStripMenuItem.Text = "세로 바둑판식 배열(&V)" - ' - 'TileHorizontalToolStripMenuItem - ' - Me.TileHorizontalToolStripMenuItem.Name = "TileHorizontalToolStripMenuItem" - Me.TileHorizontalToolStripMenuItem.Size = New System.Drawing.Size(198, 22) - Me.TileHorizontalToolStripMenuItem.Text = "가로 바둑판식 배열(&H)" - ' - 'CloseAllToolStripMenuItem - ' - Me.CloseAllToolStripMenuItem.Name = "CloseAllToolStripMenuItem" - Me.CloseAllToolStripMenuItem.Size = New System.Drawing.Size(198, 22) - Me.CloseAllToolStripMenuItem.Text = "모두 닫기(&L)" - ' - 'ArrangeIconsToolStripMenuItem - ' - Me.ArrangeIconsToolStripMenuItem.Name = "ArrangeIconsToolStripMenuItem" - Me.ArrangeIconsToolStripMenuItem.Size = New System.Drawing.Size(198, 22) - Me.ArrangeIconsToolStripMenuItem.Text = "아이콘 정렬(&A)" - ' - 'TreeView1 - ' - Me.TreeView1.ContextMenuStrip = Me.ContextMenuStrip1 - Me.TreeView1.Dock = System.Windows.Forms.DockStyle.Left - Me.TreeView1.Font = New System.Drawing.Font("돋움", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte)) - Me.TreeView1.Location = New System.Drawing.Point(0, 49) - Me.TreeView1.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2) - Me.TreeView1.Name = "TreeView1" - Me.TreeView1.Size = New System.Drawing.Size(185, 581) - Me.TreeView1.TabIndex = 23 - ' - 'ContextMenuStrip1 - ' - Me.ContextMenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.그룹추가ToolStripMenuItem, Me.그룹삭제ToolStripMenuItem, Me.그룹복사ToolStripMenuItem, Me.그룹변경ToolStripMenuItem}) - Me.ContextMenuStrip1.Name = "ContextMenuStrip1" - Me.ContextMenuStrip1.Size = New System.Drawing.Size(123, 92) - ' - '그룹추가ToolStripMenuItem - ' - Me.그룹추가ToolStripMenuItem.Name = "그룹추가ToolStripMenuItem" - Me.그룹추가ToolStripMenuItem.Size = New System.Drawing.Size(122, 22) - Me.그룹추가ToolStripMenuItem.Text = "그룹추가" - ' - '그룹삭제ToolStripMenuItem - ' - Me.그룹삭제ToolStripMenuItem.Name = "그룹삭제ToolStripMenuItem" - Me.그룹삭제ToolStripMenuItem.Size = New System.Drawing.Size(122, 22) - Me.그룹삭제ToolStripMenuItem.Text = "그룹삭제" - ' - '그룹복사ToolStripMenuItem - ' - Me.그룹복사ToolStripMenuItem.Name = "그룹복사ToolStripMenuItem" - Me.그룹복사ToolStripMenuItem.Size = New System.Drawing.Size(122, 22) - Me.그룹복사ToolStripMenuItem.Text = "그룹복사" - ' - '그룹변경ToolStripMenuItem - ' - Me.그룹변경ToolStripMenuItem.Name = "그룹변경ToolStripMenuItem" - Me.그룹변경ToolStripMenuItem.Size = New System.Drawing.Size(122, 22) - Me.그룹변경ToolStripMenuItem.Text = "그룹변경" - ' - 'ToolStrip1 - ' - Me.ToolStrip1.Font = New System.Drawing.Font("돋움", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(129, Byte)) - Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripButton1, Me.ToolStripButton2, Me.ToolStripButton3, Me.ToolStripButton4, Me.ToolStripButton5, Me.ToolStripButton6, Me.ToolStripButton7, Me.bt_test}) - Me.ToolStrip1.Location = New System.Drawing.Point(0, 24) - Me.ToolStrip1.Name = "ToolStrip1" - Me.ToolStrip1.Size = New System.Drawing.Size(1008, 25) - Me.ToolStrip1.TabIndex = 25 - Me.ToolStrip1.Text = "ToolStrip1" - ' - 'ToolStripButton1 - ' - Me.ToolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.ToolStripButton1.Image = CType(resources.GetObject("ToolStripButton1.Image"), System.Drawing.Image) - Me.ToolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta - Me.ToolStripButton1.Name = "ToolStripButton1" - Me.ToolStripButton1.Size = New System.Drawing.Size(23, 22) - Me.ToolStripButton1.Text = "파일생성" - ' - 'ToolStripButton2 - ' - Me.ToolStripButton2.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.ToolStripButton2.Image = CType(resources.GetObject("ToolStripButton2.Image"), System.Drawing.Image) - Me.ToolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta - Me.ToolStripButton2.Name = "ToolStripButton2" - Me.ToolStripButton2.Size = New System.Drawing.Size(23, 22) - Me.ToolStripButton2.Text = "파일열기" - ' - 'ToolStripButton3 - ' - Me.ToolStripButton3.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.ToolStripButton3.Image = CType(resources.GetObject("ToolStripButton3.Image"), System.Drawing.Image) - Me.ToolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta - Me.ToolStripButton3.Name = "ToolStripButton3" - Me.ToolStripButton3.Size = New System.Drawing.Size(23, 22) - Me.ToolStripButton3.Text = "파일저장" - ' - 'ToolStripButton4 - ' - Me.ToolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.ToolStripButton4.Image = CType(resources.GetObject("ToolStripButton4.Image"), System.Drawing.Image) - Me.ToolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta - Me.ToolStripButton4.Name = "ToolStripButton4" - Me.ToolStripButton4.Size = New System.Drawing.Size(23, 22) - Me.ToolStripButton4.Text = "다른이름으로 저장" - ' - 'ToolStripButton5 - ' - Me.ToolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.ToolStripButton5.Image = CType(resources.GetObject("ToolStripButton5.Image"), System.Drawing.Image) - Me.ToolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta - Me.ToolStripButton5.Name = "ToolStripButton5" - Me.ToolStripButton5.Size = New System.Drawing.Size(23, 22) - Me.ToolStripButton5.Text = "건물개요" - ' - 'ToolStripButton6 - ' - Me.ToolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.ToolStripButton6.Image = CType(resources.GetObject("ToolStripButton6.Image"), System.Drawing.Image) - Me.ToolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta - Me.ToolStripButton6.Name = "ToolStripButton6" - Me.ToolStripButton6.Size = New System.Drawing.Size(23, 22) - Me.ToolStripButton6.Text = "계산" - ' - 'ToolStripButton7 - ' - Me.ToolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image - Me.ToolStripButton7.Image = CType(resources.GetObject("ToolStripButton7.Image"), System.Drawing.Image) - Me.ToolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta - Me.ToolStripButton7.Name = "ToolStripButton7" - Me.ToolStripButton7.Size = New System.Drawing.Size(23, 22) - Me.ToolStripButton7.Text = "계산결과그래프보기" - ' - 'bt_test - ' - Me.bt_test.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.비교데이터백업ToolStripMenuItem, Me.데이터비교ToolStripMenuItem, Me.순실체적ToolStripMenuItem}) - Me.bt_test.Image = CType(resources.GetObject("bt_test.Image"), System.Drawing.Image) - Me.bt_test.ImageTransparentColor = System.Drawing.Color.Magenta - Me.bt_test.Name = "bt_test" - Me.bt_test.Size = New System.Drawing.Size(90, 22) - Me.bt_test.Text = "TestMenu" - Me.bt_test.Visible = False - ' - '비교데이터백업ToolStripMenuItem - ' - Me.비교데이터백업ToolStripMenuItem.Name = "비교데이터백업ToolStripMenuItem" - Me.비교데이터백업ToolStripMenuItem.Size = New System.Drawing.Size(170, 22) - Me.비교데이터백업ToolStripMenuItem.Text = "1.비교데이터백업" - ' - '데이터비교ToolStripMenuItem - ' - Me.데이터비교ToolStripMenuItem.Name = "데이터비교ToolStripMenuItem" - Me.데이터비교ToolStripMenuItem.Size = New System.Drawing.Size(170, 22) - Me.데이터비교ToolStripMenuItem.Text = "2.데이터비교" - ' - '순실체적ToolStripMenuItem - ' - Me.순실체적ToolStripMenuItem.Name = "순실체적ToolStripMenuItem" - Me.순실체적ToolStripMenuItem.Size = New System.Drawing.Size(170, 22) - Me.순실체적ToolStripMenuItem.Text = "3.순실체적" - ' - 'btImport - ' - Me.btImport.Name = "btImport" - Me.btImport.Size = New System.Drawing.Size(244, 22) - Me.btImport.Text = "가져오기" + Me.일괄계산ToolStripMenuItem.Name = "일괄계산ToolStripMenuItem" + Me.일괄계산ToolStripMenuItem.Size = New System.Drawing.Size(262, 22) + Me.일괄계산ToolStripMenuItem.Text = "일괄 계산" ' 'MdiMain ' @@ -779,5 +792,7 @@ Partial Class MdiMain Friend WithEvents FielCheckerToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents ToolStripMenuItem2 As System.Windows.Forms.ToolStripSeparator Friend WithEvents btImport As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents 일괄계산ToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem + Friend WithEvents prb1 As System.Windows.Forms.ToolStripProgressBar End Class diff --git a/ArinWarev1/MdiMain.resx b/ArinWarev1/MdiMain.resx index 1af5258..1a64911 100644 --- a/ArinWarev1/MdiMain.resx +++ b/ArinWarev1/MdiMain.resx @@ -223,31 +223,6 @@ L6EuGjGgPk0oQzDdcEUqKuriEBlSI/ysHKF+JVZscgSsxbTSfdjLTxLKEEzqLlH7nVJq2EmpDgUCfTIs m4uwZCqAyGthUR4nlCEYr79AT9dGJbbQCxioiwYpVeR1iI3dpbXqYLp1lNDfBIIgwO12Y7QmDy+qzklF Oe+cQb/qFGxlJ2C9nQOz4hh65dkwyo6A4zhpDgX/Psj6CQV66PBRu7f+AAAAAElFTkSuQmCC - - - - - R0lGODlhEAAQAIQAAJXD9Iasxm6MqnSn2lZtjVaRyEpXbYu767TX/2KZztvr/4Gy5KrT/3ut32+gzlFh - e+r0/0RNX9/u/9Ln+8Xg//n8/4e36CkxQz9GVkSCvKjL35/N/Je91K7T5bDS4////yH/C05FVFNDQVBF - Mi4wAwEBAAAh+QQAAAAAACwAAAAAEAAQAAAIuQA/CBxIsKDACRwScggQwIGAhwIICBDYQcEEgwg+bNjw - QKCHCQgkQBgpQcKBCg0AEBCoAaRIkhIsVBigUiAHCgwkKNjJU8GAAx0/3NwIAMABCwsaDHCwIGgAChuK - HjiQdMDSAQYEPpWKtKqDBA6yfgiAwGhXpUsTJIgg0AGCo0nRfi1QgO0HAQyQNpCrtkAGDAIFbKi69GsC - un8FEohqdEFavxkyXAhMoPKDBwYMRIiAAcOFoAZDCwwIADs= - - - - - iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m - dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIVSURBVDhPjVLJihpRFK1VFvmAXiSfkFV+Irt8Rpb5 - jGSXlfOMioIjiLgSxRERJ1QcUJxQcMSUitBJad/c8+gq2m4XeXCqXt2659zz7n0SEb1BLpf7GY/HFx6P - 5wnAHrF7uW8CkUjkIRAI/OX9zULM7/d/4O1Nvng8V5xwtSuDYrEYdbtdul6vdLlcqN1uixj+IQe5qiMh - wOqP/NbWdDqlcDhMzWZTIBQKidjL9cyRpGg06mJQp9MRFYFSqUSJRIK8Xq8A9ojBjaIo1Gq1CByHw+GX - uJLS7/epVqtRvV4XFVH99VIdVatVymazlE6nyWazKRLbk0+nE63XaxqNRjQej4nPR4PBQHOEfT6fp16v - R8lkUqDRaJDVapWlYDAoBA6HA+33e5rNZsJupVLReoCqaCKImUxGAG4tFouMBgoBWZZpt9vRZrOhxWIh - quJohUJBEGEZzuAEAihgNptliWf753w+0/F4pOVyKciTyYSGw6EYJZJBVJFKpYRYuVwmg8HwKPl8viQC - 8/lcHAMi6AUcQAD/0DQATlAZolyY9Hp9VuIxvePL8c3tdg+RtFqtaLvdimZCQG0aiOgN7gQTp4zvOp3u - vXYlXS7Xg9Pp/MGz/V0sFoUIxNBAjJhvHyyfmPiLiR9Vniagwm63f+L5+nhETyDizOwO5DCTP7/Ov/l4 - Ce7wF5PJlDYajQUmf72XA9wN/j9I+gdcby0cbkUDWAAAAABJRU5ErkJggg== @@ -331,72 +306,72 @@ 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 @@ -509,152 +484,152 @@ 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 - jeXAu4L+4QAAAABJRU5ErkJggg== + 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 + AuW0nr/YzwAAAABJRU5ErkJggg== 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 - BSza8KJ3IAsCAAAAAElFTkSuQmCC + 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 + AElFTkSuQmCC @@ -742,6 +717,31 @@ mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + R0lGODlhEAAQAIQAAJXD9Iasxm6MqnSn2lZtjVaRyEpXbYu767TX/2KZztvr/4Gy5KrT/3ut32+gzlFh + e+r0/0RNX9/u/9Ln+8Xg//n8/4e36CkxQz9GVkSCvKjL35/N/Je91K7T5bDS4////yH/C05FVFNDQVBF + Mi4wAwEBAAAh+QQAAAAAACwAAAAAEAAQAAAIuQA/CBxIsKDACRwScggQwIGAhwIICBDYQcEEgwg+bNjw + QKCHCQgkQBgpQcKBCg0AEBCoAaRIkhIsVBigUiAHCgwkKNjJU8GAAx0/3NwIAMABCwsaDHCwIGgAChuK + HjiQdMDSAQYEPpWKtKqDBA6yfgiAwGhXpUsTJIgg0AGCo0nRfi1QgO0HAQyQNpCrtkAGDAIFbKi69GsC + un8FEohqdEFavxkyXAhMoPKDBwYMRIiAAcOFoAZDCwwIADs= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIVSURBVDhPjVLJihpRFK1VFvmAXiSfkFV+Irt8Rpb5 + jGSXlfOMioIjiLgSxRERJ1QcUJxQcMSUitBJad/c8+gq2m4XeXCqXt2659zz7n0SEb1BLpf7GY/HFx6P + 5wnAHrF7uW8CkUjkIRAI/OX9zULM7/d/4O1Nvng8V5xwtSuDYrEYdbtdul6vdLlcqN1uixj+IQe5qiMh + wOqP/NbWdDqlcDhMzWZTIBQKidjL9cyRpGg06mJQp9MRFYFSqUSJRIK8Xq8A9ojBjaIo1Gq1CByHw+GX + uJLS7/epVqtRvV4XFVH99VIdVatVymazlE6nyWazKRLbk0+nE63XaxqNRjQej4nPR4PBQHOEfT6fp16v + R8lkUqDRaJDVapWlYDAoBA6HA+33e5rNZsJupVLReoCqaCKImUxGAG4tFouMBgoBWZZpt9vRZrOhxWIh + quJohUJBEGEZzuAEAihgNptliWf753w+0/F4pOVyKciTyYSGw6EYJZJBVJFKpYRYuVwmg8HwKPl8viQC + 8/lcHAMi6AUcQAD/0DQATlAZolyY9Hp9VuIxvePL8c3tdg+RtFqtaLvdimZCQG0aiOgN7gQTp4zvOp3u + vXYlXS7Xg9Pp/MGz/V0sFoUIxNBAjJhvHyyfmPiLiR9Vniagwm63f+L5+nhETyDizOwO5DCTP7/Ov/l4 + Ce7wF5PJlDYajQUmf72XA9wN/j9I+gdcby0cbkUDWAAAAABJRU5ErkJggg== diff --git a/ArinWarev1/MdiMain.vb b/ArinWarev1/MdiMain.vb index ab67258..d7ed9f0 100644 --- a/ArinWarev1/MdiMain.vb +++ b/ArinWarev1/MdiMain.vb @@ -1,24 +1,24 @@ -Imports System.IO +Imports System.IO Public Class MdiMain Enum E_MenuIdx NONE = 0 - Է = 1 - Է¸ - ó - - ޽ý - йý - ù - ùйý - ׿ - - ǹ = 20 - 뷮 + 입력존 = 1 + 입력면 + 공조처리 + 난방기기 + 난방공급시스템 + 난방분배시스템 + 냉방기기 + 냉방분배시스템 + 신재생및열병합 + 열관류율 + 건물개요 = 20 + 월별에너지사용량 End Enum - '''翭ִ ̸ Ѵ. + '''현재열려있는폼의 이름을 변경한다. Public OpenedForm As E_MenuIdx = E_MenuIdx.NONE Private Sub MdiMain_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed @@ -28,26 +28,26 @@ Public Class MdiMain Private Sub MdiMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 'If PrjChanged Then - ' Dim dlg As DialogResult = MsgBox(" մϴ" + vbCrLf + vbCrLf + _ - ' "Ͻðڽϱ?", MsgBoxStyle.Information Or MsgBoxStyle.YesNo, "Ȯ") + ' Dim dlg As DialogResult = MsgBox("변경된 내역이 존재합니다" + vbCrLf + vbCrLf + _ + ' "저장하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.YesNo, "확인") ' If dlg = Windows.Forms.DialogResult.Yes Then ' bt_filesave.PerformClick() ' End If 'End If - Dim quitmsg As String = CLang.ҷ + Dim quitmsg As String = CLang.종료할래 If Not Prj.Opened Then - If MsgBox(quitmsg, MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, CLang.Ȯ) = MsgBoxResult.Ok Then + If MsgBox(quitmsg, MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, CLang.확인) = MsgBoxResult.Ok Then End Else e.Cancel = True End If Else - quitmsg = " ִ Ͻðڽϱ?" - Dim dlg As DialogResult = MsgBox(quitmsg, MsgBoxStyle.Question Or MsgBoxStyle.YesNoCancel, "Ȯ") + quitmsg = "현재 열려있는 파일을 저장 후 종료하시겠습니까?" + Dim dlg As DialogResult = MsgBox(quitmsg, MsgBoxStyle.Question Or MsgBoxStyle.YesNoCancel, "확인") If dlg = Windows.Forms.DialogResult.Yes Then Me.Save_File(Prj.FileName) - '// + '//저장 ElseIf dlg = Windows.Forms.DialogResult.No Then '//quit ElseIf dlg = Windows.Forms.DialogResult.Cancel Then @@ -77,24 +77,24 @@ Public Class MdiMain End Sub Private Sub MdiMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load - '//vαפ + '//v프로그ㅐㄻ이 켜질떄 Me.Text = My.Application.Info.ProductName & " Ver" & My.Application.Info.Version.ToString() - Me.bt_filesave.Enabled = False '//ưȰ + Me.bt_filesave.Enabled = False '//저장버튼비활성 Me.Show() - My.Application.DoEvents() '//ȭ鿡 ǥ + My.Application.DoEvents() '//화면에 표시 Refresh_info() - Read_SEtting() '//ȯ漳 ´. Splah ߵ. - Read_FilHistory() '//ϻ볻 + Read_SEtting() '//환경설정을 가져온다. Splah를 변경했따. + Read_FilHistory() '//파일사용내역 - Dim F As New Frm_Intro '//αȭ ǥ - If F.ShowDialog <> Windows.Forms.DialogResult.OK Then End '//α Ϸ ߴٸ α׷ Ѵ. + Dim F As New Frm_Intro '//로그인화면을 표시 + If F.ShowDialog <> Windows.Forms.DialogResult.OK Then End '//로그인을 완료하지 못했다면 프로그램을 종료한다. - '//Version Ȯ + '//Version 정보를 확인 Dim MyVersion As String = Format(My.Application.Info.Version.Minor, "0000") & Format(My.Application.Info.Version.Build, "0000") @@ -104,64 +104,64 @@ Public Class MdiMain Select Case Prj.UserAuthType Case "ADMIN" Me.bt_etc.Visible = True - bt_Ͱ.Visible = True - bt_谳׷.Visible = True - bt_.Visible = True - bt_׷.Visible = True - 'bt_׷q.Visible = True - bt_򰡼.Visible = True + bt_데이터관리.Visible = True + bt_설계개선그래프.Visible = True + bt_계산결과.Visible = True + bt_계산결과그래프.Visible = True + 'bt_계산결과그래프q.Visible = True + bt_인증평가서.Visible = True btImport.Visible = True - Case "BOTH0" '//Ϲݻ - bt_Ͱ.Visible = False - bt_׷.Visible = True - 'bt_׷q.Visible = True + Case "BOTH0" '//일반사용자 + bt_데이터관리.Visible = False + bt_계산결과그래프.Visible = True + 'bt_계산결과그래프q.Visible = True Me.bt_etc.Visible = False - bt_谳׷.Visible = False - bt_.Visible = False - bt_򰡼.Visible = False + bt_설계개선그래프.Visible = False + bt_계산결과.Visible = False + bt_인증평가서.Visible = False btImport.Visible = False - '//κ 뿩 üũ + '//서버로부터 사용여부 체크 'If L.Check_guest <> "OK" Then - ' MsgBox("ϹݻڿԴ µ ʾҽϴ.", MsgBoxStyle.Information, "Ȯ") + ' MsgBox("일반사용자에게는 아직 오픈되지 않았습니다.", MsgBoxStyle.Information, "확인") ' End 'End If Case "BOTH" ' - bt_Ͱ.Visible = False + bt_데이터관리.Visible = False Me.bt_etc.Visible = False - bt_谳׷.Visible = False - bt_.Visible = True - bt_׷.Visible = True - 'bt_׷q.Visible = True - bt_򰡼.Visible = True + bt_설계개선그래프.Visible = False + bt_계산결과.Visible = True + bt_계산결과그래프.Visible = True + 'bt_계산결과그래프q.Visible = True + bt_인증평가서.Visible = True btImport.Visible = True Case "BOTH1" - bt_Ͱ.Visible = True + bt_데이터관리.Visible = True Me.bt_etc.Visible = False - bt_谳׷.Visible = False - bt_.Visible = True - bt_׷.Visible = True - 'bt_׷q.Visible = True - bt_򰡼.Visible = True + bt_설계개선그래프.Visible = False + bt_계산결과.Visible = True + bt_계산결과그래프.Visible = True + 'bt_계산결과그래프q.Visible = True + bt_인증평가서.Visible = True btImport.Visible = True Case "BOTH2" - bt_Ͱ.Visible = False + bt_데이터관리.Visible = False Me.bt_etc.Visible = False - bt_谳׷.Visible = False - bt_.Visible = False - bt_׷.Visible = False - 'bt_׷q.Visible = False - bt_򰡼.Visible = False + bt_설계개선그래프.Visible = False + bt_계산결과.Visible = False + bt_계산결과그래프.Visible = False + 'bt_계산결과그래프q.Visible = False + bt_인증평가서.Visible = False btImport.Visible = False End Select Try If Not Prj.UserId.ToLower().StartsWith("guest") AndAlso Not Prj.UserId.ToLower().StartsWith("user") Then - Work_msg("α׷ Ȯ") - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ - VersionInfo = L.Get_LastVersion("E") '// µ eco ٲ߰ ^^ ڸ ֵ սô! + Work_msg("프로그램 버젼확인중") + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 + VersionInfo = L.Get_LastVersion("E") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷! Else - VersionInfo = L.Get_LastVersion("EP") '// µ eco ٲ߰ ^^ ڸ ֵ սô! + VersionInfo = L.Get_LastVersion("EP") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷! End If Else VersionInfo.Ver = "0" @@ -172,47 +172,47 @@ Public Class MdiMain End Try 'Try - ' If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ - ' VersionInfo = L.Get_LastVersion("E") '// µ eco ٲ߰ ^^ ڸ ֵ սô! + ' If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 + ' VersionInfo = L.Get_LastVersion("E") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷! ' Else - ' VersionInfo = L.Get_LastVersion("EP") '// µ eco ٲ߰ ^^ ڸ ֵ սô! + ' VersionInfo = L.Get_LastVersion("EP") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷! ' End If 'Catch ex As Exception ' End 'End Try - If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0 ų ̹Ƿ Ѿ. + 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("새로운 버젼이 확인되었습니다" & 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 + If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소" + ' Msg.AppendLine("신규버젼을 확인하기위한 페이지를 여시겠습니까?") + If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then 'Shell("explorer " & VersionInfo.Link, AppWinStyle.NormalFocus) ' End End If - End '2011.03.08 α׷ ֽŹ ƴϸ α׷ Ų. + End '2011.03.08 프로그램이 최신버전이 아니면 프로그램을 종료시킨다. End If Work_msg("") - '//20160327 ӽ + '//20160327 임시저장폴더생성 Dim tempsave As String = My.Application.Info.DirectoryPath & "\TempSave" If Not System.IO.Directory.Exists(tempsave) Then Try System.IO.Directory.CreateDirectory(tempsave) Catch ex As Exception - MsgBox("ӽ " + vbCrLf + vbCrLf + tempsave + vbCrLf + vbCrLf + ex.Message, MsgBoxStyle.Critical, "Ȯ") + MsgBox("임시저장폴더 생성실패" + vbCrLf + vbCrLf + tempsave + vbCrLf + vbCrLf + ex.Message, MsgBoxStyle.Critical, "확인") End Try End If - '//ĶȮ + '//파라미터확인 Dim P As String = Command.ToString P = P.Replace(Chr(34), "") If P <> "" Then - If System.IO.File.Exists(P) Then '//ش ϸ + If System.IO.File.Exists(P) Then '//해당파일이 존재하면 ' MsgBox("open") Me.Open_File(P) End If @@ -230,33 +230,33 @@ Public Class MdiMain Public Sub Refresh_info() 'If Prj.Admin Then - ' Me.lb_usermode.Text = "[]" + ' Me.lb_usermode.Text = "[관리자]" 'Else - ' Me.lb_usermode.Text = "[Ϲ]" + ' Me.lb_usermode.Text = "[일반]" 'End If - '//ø + '//템플릿 정보파일 If Prj.EditTime = "" Then - Me.lbl_lastedit.Text = "[]" + 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.Text = "[이름]" Me.lbl_prjname.ToolTipText = "" Else Me.lbl_prjname.Text = "[" & Prj.Name.Trim.Replace(Space(1), "") & "]" Me.lbl_prjname.ToolTipText = Prj.Desc End If If Prj.SFType = "" Then - Me.lbl_FileInfo.Text = "[]" + Me.lbl_FileInfo.Text = "[버젼]" Else Me.lbl_FileInfo.Text = "[" & Prj.UIVersion.Trim & "]" End If If Prj.Password = "" Then - Me.lbl_password.Text = "[ȣ]" + Me.lbl_password.Text = "[비보호]" Else - Me.lbl_password.Text = "[ȣ]" + Me.lbl_password.Text = "[보호]" End If Me.lbl_user.Text = "[" & Prj.UserId & "]" @@ -270,7 +270,7 @@ Public Class MdiMain Sub ClearData() - '//翭ִƮ ݴ´. + '//현재열려있는프로젝트를 닫는다. DSET1.Clear() DSET2.Clear() DSETR1.Clear() @@ -295,7 +295,7 @@ Public Class MdiMain - Public Sub Open_File(ByVal FileName As String, Optional ByVal SyncServer As Boolean = False, Optional checkVersion As Boolean = True, Optional silent As Boolean = False, Optional isNew As Boolean = False) + Public Function Open_File(ByVal FileName As String, Optional ByVal SyncServer As Boolean = False, Optional checkVersion As Boolean = True, Optional silent As Boolean = False, Optional isNew As Boolean = False) As Boolean If SyncServer Then If Prj.UserId.ToLower().StartsWith("user") Then @@ -316,16 +316,16 @@ Public Class MdiMain fChild.Dispose() Next - '//翭ִƮ ݴ´. + '//현재열려있는프로젝트를 닫는다. ClearData() Else - Dim quitmsg As String = " ִ Ʈ Ͻðڽϱ?" - Dim dlg As DialogResult = MsgBox(quitmsg, MsgBoxStyle.Question Or MsgBoxStyle.YesNoCancel, "Ȯ") + Dim quitmsg As String = "현재 열려있는 프로젝트를 저장하시겠습니까?" + Dim dlg As DialogResult = MsgBox(quitmsg, MsgBoxStyle.Question Or MsgBoxStyle.YesNoCancel, "확인") If dlg = Windows.Forms.DialogResult.Yes Then If bt_filesave.Enabled = False Then - If Save_New() = False Then Return '//Ҹ ó + If Save_New() = False Then Return False '//취소를 누른경우 처리하지 않음 Else Me.Save_File(Prj.FileName, False) @@ -340,9 +340,9 @@ Public Class MdiMain fChild.Dispose() Next - '//翭ִƮ ݴ´. + '//현재열려있는프로젝트를 닫는다. ClearData() - '// + '//저장 ElseIf dlg = Windows.Forms.DialogResult.No Then For Each fChild As CForm In Me.MdiChildren If fChild.HasChanged Then @@ -352,38 +352,38 @@ Public Class MdiMain fChild.Dispose() Next - '//翭ִƮ ݴ´. + '//현재열려있는프로젝트를 닫는다. ClearData() '//quit ElseIf dlg = Windows.Forms.DialogResult.Cancel Then - Return + Return False End If End If End If - '//õ Ʈ带 Ѵ. + '//기존선택된 트리노드를 제거한다. Me.PreNode = Nothing pLog.Add("=======================================") pLog.Add(String.Format("Open File = {0}", FileName)) pLog.Add("=======================================", True) Prj.IsError = False '//160509 - '//  ø̸ ´ + '//파일을 열어서 템플릿이름을 가져온다 Dim FI As New System.IO.FileInfo(FileName) Dim Desbuf() As Byte = {} Dim FS As System.IO.Stream - '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 Է - If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.16 ߰ //eco ҷö ADMIN 'Prj.UserAuthType = "ADMIN" OrElse + '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 입력파일 변조 + If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.16 추가 //eco 파일 불러올때 ADMIN 제거 'Prj.UserAuthType = "ADMIN" OrElse Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(FI.FullName) If Source.Length < 4 Then Prj.IsError = True - MsgboxE("˼ų ջ Դϴ" + vbCrLf + FI.FullName, True) - Return + MsgboxE("알수없거나 손상된 파일입니다" + vbCrLf + FI.FullName, True) + Return False End If - pLog.Add("ȣȭ ") + pLog.Add("암호화 해제") Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42}) Else @@ -392,7 +392,7 @@ Public Class MdiMain ' FS = New IO.FileStream(FileName, IO.FileMode.Open) End If - If FI.Extension.ToLower().EndsWith("x") Then '//Ȯڰ xγ + If FI.Extension.ToLower().EndsWith("x") Then '//확장자가 x로끝나면 압축된 포맷 Dim datalen As Integer = BitConverter.ToInt32(Desbuf, 0) Dim RealData(Desbuf.Length - 4 - 1) As Byte Array.Copy(Desbuf, 4, RealData, 0, RealData.Length) @@ -408,7 +408,7 @@ Public Class MdiMain FS = New IO.MemoryStream(Desbuf, True) - '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 Է + '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 입력파일 변조 @@ -417,14 +417,14 @@ Public Class MdiMain Prj.Opened = False - '//̺ϱ(2) + '//세이브파일구조(2) Prj.SFType = STB(Br.ReadBytes(2)) pLog.Add("File Type = " + Prj.SFType) - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ //eco ҷö ADMIN 'Prj.UserAuthType = "ADMIN" OrElse + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 //eco 파일 불러올때 ADMIN 제거 'Prj.UserAuthType = "ADMIN" OrElse Select Case Prj.SFType - Case "00" '//⺻ + Case "00" '//기본버젼 Prj.UIVersion = STB(Br.ReadBytes(10)) Prj.LGVersino = STB(Br.ReadBytes(10)) Select Case Prj.LGVersino @@ -443,7 +443,7 @@ Public Class MdiMain Prj.EditTime = STB(Br.ReadBytes(19)) ' MsgBox(Br.BaseStream.Position) - '//DS1 ʱȭ + '//DS1 데이터초기화 및 오픈 DSET1.Clear() DSET1.AcceptChanges() @@ -453,12 +453,12 @@ Public Class MdiMain DS1Len = FS.Length - Br.BaseStream.Position - 2 End If 'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1Len, MsgBoxStyle.Information, Hex(DS1Len)) - Dim DS1() As Byte + Dim DS1() As Byte = Nothing Try DS1 = Br.ReadBytes(CInt(DS1Len)) Catch ex As Exception Prj.IsError = True - MsgBox(" ջǾϴ(Read Data Array)." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 byteRead Error") + MsgBox("파일이 손상되었습니다(Read Data Array)." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 byteRead Error") End Try 'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1.Length, MsgBoxStyle.Information, DS1Len) @@ -478,12 +478,15 @@ Public Class MdiMain tempds.Dispose() Catch ex As Exception Prj.IsError = True - MsgBox(" ջǾϴ(Read DataSet)" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error") + MsgBox("파일이 손상되었습니다(Read DataSet)" & 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 ̿Ͽ ó ؾѴ + If silent Then + Return String.Empty + End If + 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) @@ -495,15 +498,15 @@ Public Class MdiMain - '// ó Ѵ + '//각줄을 가지고 처리를 한다 line = line.Trim If line.ToLower.StartsWith("") Then - '//ͼ¼̹Ƿ Ѿ + '//데이터셋선언부이므로 넘어간다 ElseIf line.ToLower.StartsWith("") Then CurrentTable = line.Substring(1, line.Length - 2) dr = DSET1.Tables(CurrentTable).NewRow ElseIf line.ToLower.StartsWith("") Then - '//̺ + '//테이블의 종료 '// accCount += 1 DSET1.Tables(CurrentTable).Rows.Add(dr) @@ -512,51 +515,51 @@ Public Class MdiMain CurrentTable = line.Substring(1, line.Length - 2) dr = DSET1.Tables(CurrentTable).NewRow ElseIf line.ToLower.StartsWith("") 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(ʵ) = ΰ + 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() + 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, "Ȯ") + MsgBox(accCount.ToString() + "건의 자료가 복구되었습니다", MsgBoxStyle.Critical, "확인") DSET1.AcceptChanges() DSETR1.Clear() : DSETR1.AcceptChanges() Prj.IsError = False End If Else - '//° + '//에러가없는경우 다음진행 - '//DS1 ִٸ Լ Ѵ + '//DS1가 있다면 게속 한다 DSETR1.Clear() : DSETR1.AcceptChanges() DS1Len = Br.ReadInt64 DS1 = Br.ReadBytes(CInt(DS1Len)) @@ -574,7 +577,7 @@ Public Class MdiMain tempds.Dispose() Catch ex As Exception - MsgBox(" ϴ." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error") + MsgBox("기존 버전의 계산결과를 가져올 수 없습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error") End Try Prj.IsError = False @@ -584,7 +587,7 @@ Public Class MdiMain End If - Case "01" '//⺻(+ȣ + Case "01" '//기본버젼(+암호 Prj.UIVersion = STB(Br.ReadBytes(10)) Prj.LGVersino = STB(Br.ReadBytes(10)) Select Case Prj.LGVersino @@ -599,10 +602,10 @@ Public Class MdiMain 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ǹڰ ѱ ҰѴ + Prj.Password = STB(Br.ReadBytes(8)) '//암호에 8바이트할당한다. 즉 8개의문자가가능 한글은 불가로한다 ' MsgBox(Br.BaseStream.Position) - '//DS1 ʱȭ + '//DS1 데이터초기화 및 오픈 DSET1.Clear() : DSET1.AcceptChanges() Dim DS1Len As Int64 = Br.ReadInt64 'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1Len, MsgBoxStyle.Information, Hex(DS1Len)) @@ -621,10 +624,10 @@ Public Class MdiMain tempds.Dispose() Catch ex As Exception - MsgBox(" ջǾϴ." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error") + MsgBox("파일이 손상되었습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error") End Try - '//DS1 ִٸ Լ Ѵ + '//DS1가 있다면 게속 한다 DSETR1.Clear() : DSETR1.AcceptChanges() DS1Len = Br.ReadInt64 DS1 = Br.ReadBytes(CInt(DS1Len)) @@ -642,21 +645,21 @@ Public Class MdiMain Ms.Close() Catch ex As Exception - MsgBox(" ϴ." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error") + MsgBox("기존 버전의 계산결과를 가져올 수 없습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error") End Try Prj.IsError = False Case Else - MsgBox(" ҷ ϴ1", MsgBoxStyle.Critical, "ҷ") + MsgBox("파일을 불러올 수 없습니다1", MsgBoxStyle.Critical, "불러오기실패") Prj.IsError = True End Select Else Select Case Prj.SFType - Case "10" '//Ϲݰ + Case "10" '//일반공개버전 - SyncServer = True ' 2011.06.15 ߰ ڵ ڵ ڵ带 ȭ + SyncServer = True ' 2011.06.15 추가 공개버전은 자동적으로 공용코드와 기상코드를 동기화 Prj.UIVersion = STB(Br.ReadBytes(10)) Prj.LGVersino = STB(Br.ReadBytes(10)) Select Case Prj.LGVersino @@ -675,7 +678,7 @@ Public Class MdiMain Prj.EditTime = STB(Br.ReadBytes(19)) ' MsgBox(Br.BaseStream.Position) - '//DS1 ʱȭ + '//DS1 데이터초기화 및 오픈 DSET1.Clear() : DSET1.AcceptChanges() Dim DS1Len As Int64 = Br.ReadInt64 'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1Len, MsgBoxStyle.Information, Hex(DS1Len)) @@ -694,12 +697,12 @@ Public Class MdiMain tempds.Dispose() Catch ex As Exception - MsgBox(" ջǾϴ." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error") + MsgBox("파일이 손상되었습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 Open Error") End Try Prj.IsError = False Case Else - MsgBox(" ҷ ϴ2", MsgBoxStyle.Critical, "ҷ") + MsgBox("파일을 불러올 수 없습니다2", MsgBoxStyle.Critical, "불러오기실패") Prj.IsError = True End Select End If @@ -714,53 +717,53 @@ Public Class MdiMain 'e.m_initdata.Enabled = True 'Frm_Work.MdiParent = Me - Frm_Work.Label1.Text = "͸ Ȯϰ ֽϴ" + Frm_Work.Label1.Text = "데이터를 확인하고 있습니다" Frm_Work.Show() - FixData(isNew) '//221218 chi import ɰ ϱ и + FixData(isNew) '//221218 chi import 기능과 공유하기 위해 데이터 보정기능을 분리 Frm_Work.Close() '//weather Read_WeatherFile() - Calc = New Calculator(Prj.LGVersino, DSET1, DSETR1, Result1, False) '//Ŭ ʱȭ + Calc = New Calculator(Prj.LGVersino, DSET1, DSETR1, Result1, False) '//계삭식클래스 초기화 Me.bt_filesave.Enabled = True 'Me.bt_newsave.Enabled = True - Refresh_info() '//ȭϴ âǥ + Refresh_info() '//화면하단의 정보창표시 - 'If Prj.UserId.ToLower() <> "guest" AndAlso SyncServer Then '// ڵũ + 'If Prj.UserId.ToLower() <> "guest" AndAlso SyncServer Then '//공용및 기상데이터 자동싱크 ' pLog.Add("SyncServer ON") ' Read_CommonCode() ' Read_WeatherData() ' Read_ProfileData() 'End If - '//,Ȯ / 13-12-05 / arin + '//접수일,인증데인터확인 / 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.용도수수료입금일 = "" 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" + If Drdesc.공공 = "" Then Drdesc.공공 = "1" DSET1.tbl_Desc.AcceptChanges() - '//160327 uiüũ - If checkVersion Then + '//160327 ui버젼체크 + If checkVersion AndAlso silent = False Then If Prj.UIVersion <> CurrentUIVersion() Then If CInt(Prj.UIVersion.Substring(0, 4)) >= 2016 Then - MsgBox("ش α׷ ƴմϴ" + vbCrLf + vbCrLf + _ - " Version : " + Prj.UIVersion + vbCrLf + _ - " Version : " + CurrentUIVersion() + vbCrLf + vbCrLf + _ - " Ȥ ȭ ġ ֽϴ", MsgBoxStyle.Information, "Ȯ") + MsgBox("해당 파일은 현재 프로그램과 동일한 버젼에서 생성된 파일이 아닙니다" + vbCrLf + vbCrLf + _ + "파일 Version : " + Prj.UIVersion + vbCrLf + _ + "현재 Version : " + CurrentUIVersion() + vbCrLf + vbCrLf + _ + "파일을 생성한 버젼과 결과 혹은 화면이 일치하지 않을 수 있습니다", MsgBoxStyle.Information, "버전확인") Else - MsgBox("ش α׷ ƴմϴ" + vbCrLf + vbCrLf + _ - " Version : " + vbCrLf + _ - " Version : " + CurrentUIVersion() + vbCrLf + vbCrLf + _ - " Ȥ ȭ ġ ֽϴ", MsgBoxStyle.Information, "Ȯ") + MsgBox("해당 파일은 현재 프로그램과 동일한 버젼에서 생성된 파일이 아닙니다" + vbCrLf + vbCrLf + _ + "파일 Version : " + vbCrLf + _ + "현재 Version : " + CurrentUIVersion() + vbCrLf + vbCrLf + _ + "파일을 생성한 버젼과 결과 혹은 화면이 일치하지 않을 수 있습니다", MsgBoxStyle.Information, "버전확인") End If End If @@ -769,28 +772,28 @@ Public Class MdiMain - '// ϸ ش. + '//현재 연 파일명을 기록해준다. Me.Save_FilHistory(Prj.FileName) Me.Read_FilHistory() - Calc.validation() '//null + Calc.validation() '//null보정 - '//θ ʹȵǴ θ ϸ ݴϴ. + '//팡리명이 너무길면안되니 경로를 뺴고 딱 파일명만 보여줍니다. Me.lbl_filename.Text = Prj.FileName.Substring(Prj.FileName.LastIndexOf("\") + 1) If Prj.UserId.ToLower() <> "guest" AndAlso Not Prj.UserId.ToLower().StartsWith("user") Then '//191020 - '//Version Ȯ + '//Version 정보를 확인 Dim MyVersion As String = "" Dim VersionInfo As ArinLogin.ArinLOgin.sVersionInfo = Nothing - Work_msg(" Ȯ") + Work_msg("데이터 버젼확인중") '= Format(My.Application.Info.Version.Minor, "0000") & Format(My.Application.Info.Version.Build, "0000") Dim L As New ArinLogin.ArinLOgin - '/ڵȮ + '/공용코드버젼확인 Try MyVersion = DSET1.tbl_Desc.Rows(0)("versionc").ToString If MyVersion = "" Then MyVersion = "20100101" @@ -798,32 +801,32 @@ Public Class MdiMain MyVersion = "20100101" End Try - pLog.Add(String.Format("ڵ = {0}", MyVersion)) + pLog.Add(String.Format("공용코드버젼 = {0}", MyVersion)) Try - VersionInfo = L.Get_LastVersion("C2") '// µ eco ٲ߰ ^^ ڸ ֵ սô! - If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0 ų ̹Ƿ Ѿ. - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.08 ߰ + VersionInfo = L.Get_LastVersion("C2") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷! + If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0은 없거나 관리안함의 뜻이므로 넘어간다. + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.08 추가 Dim Msg As New System.Text.StringBuilder - Msg.AppendLine("ο ȮεǾϴ" & vbCrLf) - Msg.AppendLine(":" & MyVersion & " űԹ:" & VersionInfo.Ver) + 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 + If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소" + ' Msg.AppendLine("신규버젼을 확인하기위한 페이지를 여시겠습니까?") + If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then 'Shell("explorer " & VersionInfo.Link, AppWinStyle.NormalFocus) ' End End If End If End If Catch ex As Exception - MsgBox("ڵ " & ex.Message.ToString) + MsgBox("공용코드 에러" & ex.Message.ToString) End Try - '/ǥϹȮ '//2010.12.06 ߰ + '/표준프로파일버젼확인 '//2010.12.06 추가 Try MyVersion = DSET1.tbl_Desc.Rows(0)("versionp").ToString If MyVersion = "" Then MyVersion = "20100101" @@ -831,37 +834,37 @@ Public Class MdiMain MyVersion = "20100101" End Try - pLog.Add(String.Format("ǥϹ = {0}", MyVersion)) + pLog.Add(String.Format("표준프로파일버젼 = {0}", MyVersion)) Try - VersionInfo = L.Get_LastVersion("P2") '// µ eco ٲ߰ ^^ ڸ ֵ սô! - If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0 ų ̹Ƿ Ѿ. - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.08 ߰ + VersionInfo = L.Get_LastVersion("P2") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷! + If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0은 없거나 관리안함의 뜻이므로 넘어간다. + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.08 추가 Dim Msg As New System.Text.StringBuilder - Msg.AppendLine("ο ȮεǾϴ" & vbCrLf) - Msg.AppendLine(":" & MyVersion & " űԹ:" & VersionInfo.Ver) + 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 + If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소" + ' Msg.AppendLine("신규버젼을 확인하기위한 페이지를 여시겠습니까?") + If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then 'Shell("explorer " & VersionInfo.Link, AppWinStyle.NormalFocus) ' End End If End If End If Catch ex As Exception - MsgBox("ǥ " & ex.Message.ToString) + MsgBox("표준프로파일 에러" & ex.Message.ToString) End Try End If Read_WeatherFile() - Menu_ǹ() + Menu_건물개요() - '/͹Ȯ + '/기상데이터버젼확인 'Try ' MyVersion = DSET1.tbl_Desc.Rows(0)("versionw").ToString ' If MyVersion = "" Then MyVersion = "20100101" @@ -869,22 +872,22 @@ Public Class MdiMain ' MyVersion = "20100101" 'End Try - 'pLog.Add(String.Format("͹ = {0}", MyVersion)) + 'pLog.Add(String.Format("기상데이터버젼 = {0}", MyVersion)) 'If Prj.UserId.ToLower() <> "guest" AndAlso Not Prj.UserId.ToLower().StartsWith("user") Then '//191020 ' Try ' 'MyVersion = DSET1.tbl_Desc.Rows(0)("versionw").ToString - ' VersionInfo = L.Get_LastVersion("W2") '// µ eco ٲ߰ ^^ ڸ ֵ սô! - ' If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0 ų ̹Ƿ Ѿ. - ' If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.08 ߰ + ' VersionInfo = L.Get_LastVersion("W2") '//버젼을 가져오는데 eco 버젼만 가져오게 바꺼야겟죵 ^^ 구분자를 넣도록 합시닷! + ' If VersionInfo.Ver <> "0" AndAlso (CInt(VersionInfo.Ver) > CInt(MyVersion)) Then '//0은 없거나 관리안함의 뜻이므로 넘어간다. + ' If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.08 추가 ' Dim Msg As New System.Text.StringBuilder - ' Msg.AppendLine("ο ȮεǾϴ" & vbCrLf) - ' Msg.AppendLine(":" & MyVersion & " űԹ:" & VersionInfo.Ver) + ' 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 + ' If VersionInfo.Link.Trim = "" Then VersionInfo.Link = "http://홈페이지주소" + ' ' Msg.AppendLine("신규버젼을 확인하기위한 페이지를 여시겠습니까?") + ' If MsgBox(Msg.ToString, MsgBoxStyle.Information, "버젼확인") = MsgBoxResult.Ok Then ' 'Shell("explorer " & VersionInfo.Link, AppWinStyle.NormalFocus) ' ' End ' End If @@ -901,7 +904,7 @@ Public Class MdiMain Work_msg("") pLog.Add("FileOpened") - '// ִ´ 160509 + '//백업기능을 넣는다 160509 If Not FileName.ToLower.StartsWith("open_") Then Dim bakdi As New System.IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Backup") If bakdi.Exists = False Then bakdi.Create() @@ -910,111 +913,116 @@ Public Class MdiMain Try oldfi.CopyTo(newfi.FullName) Catch ex As Exception - pLog.Add("backup old=" + oldfi.FullName + ",new=" + newfi.FullName) + pLog.Add("backup 실패 old=" + oldfi.FullName + ",new=" + newfi.FullName) End Try End If + Return True + Else pLog.Add("Open File Error", True) - '//Ϻҷ зؼ ó ʴ´. - Dim bakdi As New System.IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Backup") - Dim oldfi As New System.IO.FileInfo(FileName) - Dim newfi As New System.IO.FileInfo(bakdi.FullName + "\open_" + oldfi.Name) - If newfi.Exists Then - If MsgBox(" մϴ." + vbCrLf + vbCrLf + _ - " : " + newfi.CreationTime.ToShortDateString + " " + newfi.CreationTime.ToShortTimeString + vbCrLf + " ҷðڽϱ?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "Ȯ") = MsgBoxResult.Yes Then - Open_File(newfi.FullName) + '//파일불러오기 실패로인해서 다음처리를 하지않는다. + If silent = False Then + Dim bakdi As New System.IO.DirectoryInfo(My.Application.Info.DirectoryPath & "\Backup") + Dim oldfi As New System.IO.FileInfo(FileName) + Dim newfi As New System.IO.FileInfo(bakdi.FullName + "\open_" + oldfi.Name) + If newfi.Exists Then + If MsgBox("백업된 파일이 존재합니다." + vbCrLf + vbCrLf + _ + "백업일자 : " + newfi.CreationTime.ToShortDateString + " " + newfi.CreationTime.ToShortTimeString + vbCrLf + "백업된 파일을 불러오시겠습니까?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, "확인") = MsgBoxResult.Yes Then + Open_File(newfi.FullName) + End If End If End If + Return False End If - End Sub + End Function Sub FixData(isNew As Boolean) - 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.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_profile.Rows.Add(New String() {"0", "()"}) - If DSET1.tbl_weather.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_weather.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_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.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_profile.Rows.Add(New String() {"0", "(없음)"}) + If DSET1.tbl_weather.Select("code='0'").GetUpperBound(0) = -1 Then DSET1.tbl_weather.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, "Ȯ") + MsgBox("건물개요데이터가 없으므로 초기자료를 생성합니다", MsgBoxStyle.Critical, "확인") Dim newdescdr As DS.tbl_DescRow = DSET1.tbl_Desc.NewRow - newdescdr.name = "" + newdescdr.name = "오류" newdescdr.buildarea = "010100" DSET1.tbl_Desc.Addtbl_DescRow(newdescdr) DSET1.tbl_Desc.AcceptChanges() Else - If isNew Then '//űۼ + If isNew Then '//신규작성파일이 ㄴ경우 Dim drDesc1 As DS.tbl_DescRow = DSET1.tbl_Desc.Rows(0) - drDesc1.buildarea = "010100" '// + drDesc1.buildarea = "010100" '//서울로 지정 drDesc1.EndEdit() End If End If - '//ǹ뵵⺻ - Dim 뵵 As String = DSET1.tbl_Desc.Rows(0)("isjugo").ToString - If IsNumeric(뵵) = False Then - pLog.Add(String.Format("ǹ 뵵 ڰƴϹǷ 1 մϴ")) + '//건물용도기본값 + Dim 용도 As String = DSET1.tbl_Desc.Rows(0)("isjugo").ToString + If IsNumeric(용도) = False Then + pLog.Add(String.Format("건물개요의 용도값이 숫자가아니므로 1로 설정합니다")) DSET1.tbl_Desc.Rows(0)("isjugo") = "1" End If - '//׷̾° ó(130810:arin) - For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("isnull(׷,'')=''") - pLog.Add(String.Format("׷̾ ̹Ƿ '⺻' մϴ Zone Code={0}", dr.code)) - dr.׷ = "⺻" + '//그룹명이없는경우 처리함(130810:arin) + For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Select("isnull(그룹,'')=''") + pLog.Add(String.Format("그룹명이없는 경우이므로 '기본'으로 설정합니다 Zone Code={0}", dr.code)) + dr.그룹 = "기본" Next - '//뷮Ϳ(130819:arin) + '//월별에너지사용량데이터영역생성(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}) '//,,ð,,,ڵ + DSET1.tbl_monuse.Rows.Add(New String() {y.ToString() + "차년도", i.ToString("00"), "0", "0", "0", idx}) '//년,월,도시가스,전력,지역난방,코드 Next Next End If - '//140808 ⺻ ó - '//Է + '//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 = "" + '//순실체적 재계산 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 + 면적 = DSET1.tbl_zone.Rows(i - 1)("면적").ToString Catch ex As Exception - = "" + 면적 = "" End Try Try - õ = DSET1.tbl_zone.Rows(i - 1)("õp").ToString + 천장고 = DSET1.tbl_zone.Rows(i - 1)("천장고p").ToString Catch ex As Exception - õ = "" + 천장고 = "" End Try Try - ü = DSET1.tbl_zone.Rows(i - 1)("ü").ToString + 순실체적 = 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(õ) + 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 _ @@ -1043,7 +1051,7 @@ Public Class MdiMain 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 _ @@ -1055,9 +1063,9 @@ Public Class MdiMain DSET1.tbl_myoun.Rows(i - 1)("code") = "0" + StrCode End If - Dim StrCode2 As String = DSET1.tbl_myoun.Rows(i - 1)("з").ToString + Dim StrCode2 As String = DSET1.tbl_myoun.Rows(i - 1)("존분류").ToString If StrCode2.Length = 4 Then - DSET1.tbl_myoun.Rows(i - 1)("з") = "0" + StrCode2 + DSET1.tbl_myoun.Rows(i - 1)("존분류") = "0" + StrCode2 End If Next DSET1.tbl_myoun.AcceptChanges() @@ -1074,9 +1082,9 @@ Public Class MdiMain DSET2.tbl_myoun.Rows(i - 1)("code") = "0" + StrCode End If - Dim StrCode2 As String = DSET2.tbl_myoun.Rows(i - 1)("з").ToString + Dim StrCode2 As String = DSET2.tbl_myoun.Rows(i - 1)("존분류").ToString If StrCode2.Length = 4 Then - DSET2.tbl_myoun.Rows(i - 1)("з") = "0" + StrCode2 + DSET2.tbl_myoun.Rows(i - 1)("존분류") = "0" + StrCode2 End If Next @@ -1088,27 +1096,27 @@ Public Class MdiMain Public Sub Open_File_Only_weather(ByVal FileName As String, Optional ByVal SyncServer As Boolean = False, Optional checkVersion As Boolean = True, Optional silent As Boolean = False, Optional isNew As Boolean = False) - '//õ Ʈ带 Ѵ. + '//기존선택된 트리노드를 제거한다. Me.PreNode = Nothing pLog.Add("=======================================") pLog.Add(String.Format("Open File = {0}", FileName)) pLog.Add("=======================================", True) Prj_test.IsError = False '//160509 - '//  ø̸ ´ + '//파일을 열어서 템플릿이름을 가져온다 Dim FI As New System.IO.FileInfo(FileName) Dim Desbuf() As Byte = {} Dim FS As System.IO.Stream - '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 Է - If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.16 ߰ //eco ҷö ADMIN 'Prj.UserAuthType = "ADMIN" OrElse + '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 입력파일 변조 + If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.16 추가 //eco 파일 불러올때 ADMIN 제거 'Prj.UserAuthType = "ADMIN" OrElse Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(FI.FullName) If Source.Length < 4 Then Prj.IsError = True - MsgboxE("˼ų ջ Դϴ" + vbCrLf + FI.FullName, True) + MsgboxE("알수없거나 손상된 파일입니다" + vbCrLf + FI.FullName, True) Return End If - pLog.Add("ȣȭ ") + pLog.Add("암호화 해제") Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42}) Else @@ -1116,7 +1124,7 @@ Public Class MdiMain ' FS = New IO.FileStream(FileName, IO.FileMode.Open) End If - If FI.Extension.ToLower().EndsWith("x") Then '//Ȯڰ xγ + If FI.Extension.ToLower().EndsWith("x") Then '//확장자가 x로끝나면 압축된 포맷 Dim datalen As Integer = BitConverter.ToInt32(Desbuf, 0) Dim RealData(Desbuf.Length - 4 - 1) As Byte Array.Copy(Desbuf, 4, RealData, 0, RealData.Length) @@ -1132,23 +1140,23 @@ Public Class MdiMain FS = New IO.MemoryStream(Desbuf, True) - '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 Է + '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 입력파일 변조 Dim Br As New IO.BinaryReader(FS, System.Text.Encoding.Default) Prj_test.FileName = FileName ' : Myini.Write("presetting", "filename", Prj.FileName) Prj_test.Opened = False - '//̺ϱ(2) + '//세이브파일구조(2) Prj_test.SFType = STB(Br.ReadBytes(2)) pLog.Add("File Type = " + Prj_test.SFType) 'im DSET1 As New DS() - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ //eco ҷö ADMIN 'Prj.UserAuthType = "ADMIN" OrElse + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 //eco 파일 불러올때 ADMIN 제거 'Prj.UserAuthType = "ADMIN" OrElse Select Case Prj.SFType - Case "00" '//⺻ + Case "00" '//기본버젼 Prj_test.UIVersion = STB(Br.ReadBytes(10)) Prj_test.LGVersino = STB(Br.ReadBytes(10)) Select Case Prj_test.LGVersino @@ -1167,19 +1175,19 @@ Public Class MdiMain Prj_test.EditTime = STB(Br.ReadBytes(19)) ' MsgBox(Br.BaseStream.Position) - '//DS1 ʱȭ + '//DS1 데이터초기화 및 오픈 DSET1_TEST.Clear() : DSET1_TEST.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 + Dim DS1() As Byte = Nothing Try DS1 = Br.ReadBytes(CInt(DS1Len)) Catch ex As Exception Prj_test.IsError = True - MsgBox(" ջǾϴ(Read Data Array)." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 byteRead Error") + MsgBox("파일이 손상되었습니다(Read Data Array)." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 byteRead Error") End Try 'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1.Length, MsgBoxStyle.Information, DS1Len) @@ -1191,13 +1199,13 @@ Public Class MdiMain Ms.Close() Catch ex As Exception Prj_test.IsError = True - MsgBox(" ջǾϴ(Read DataSet)" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1_test Open Error") + MsgBox("파일이 손상되었습니다(Read DataSet)" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1_test Open Error") End Try If Prj_test.IsError Then MsgBox("load error") Else - '//° + '//에러가없는경우 다음진행 DSET1_TEST.AcceptChanges() @@ -1224,7 +1232,7 @@ Public Class MdiMain MsgBox("(weather+profile) load ok") - '//DS1 ִٸ Լ Ѵ + '//DS1가 있다면 게속 한다 'DSETR1.Clear() : DSETR1.AcceptChanges() 'DS1Len = Br.ReadInt64 'DS1 = Br.ReadBytes(CInt(DS1Len)) @@ -1234,7 +1242,7 @@ Public Class MdiMain ' DSETR1.AcceptChanges() ' Ms.Close() 'Catch ex As Exception - ' MsgBox(" ϴ." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error") + ' MsgBox("기존 버전의 계산결과를 가져올 수 없습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error") 'End Try Prj.IsError = False @@ -1246,7 +1254,7 @@ Public Class MdiMain Case Else - MsgBox(" ҷ ϴ1", MsgBoxStyle.Critical, "ҷ") + MsgBox("파일을 불러올 수 없습니다1", MsgBoxStyle.Critical, "불러오기실패") Prj.IsError = True End Select @@ -1264,27 +1272,27 @@ Public Class MdiMain Public Sub Open_File_checker(ByVal FileName As String, Optional ByVal SyncServer As Boolean = False, Optional checkVersion As Boolean = True, Optional silent As Boolean = False, Optional isNew As Boolean = False) - '//õ Ʈ带 Ѵ. + '//기존선택된 트리노드를 제거한다. Me.PreNode = Nothing pLog.Add("=======================================") pLog.Add(String.Format("Open File = {0}", FileName)) pLog.Add("=======================================", True) Prj_test.IsError = False '//160509 - '//  ø̸ ´ + '//파일을 열어서 템플릿이름을 가져온다 Dim FI As New System.IO.FileInfo(FileName) Dim Desbuf() As Byte = {} Dim FS As System.IO.Stream - '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 Է - If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.16 ߰ //eco ҷö ADMIN 'Prj.UserAuthType = "ADMIN" OrElse + '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 입력파일 변조 + If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.16 추가 //eco 파일 불러올때 ADMIN 제거 'Prj.UserAuthType = "ADMIN" OrElse Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(FI.FullName) If Source.Length < 4 Then Prj.IsError = True - MsgboxE("˼ų ջ Դϴ" + vbCrLf + FI.FullName, True) + MsgboxE("알수없거나 손상된 파일입니다" + vbCrLf + FI.FullName, True) Return End If - pLog.Add("ȣȭ ") + pLog.Add("암호화 해제") Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42}) Else @@ -1292,7 +1300,7 @@ Public Class MdiMain ' FS = New IO.FileStream(FileName, IO.FileMode.Open) End If - If FI.Extension.ToLower().EndsWith("x") Then '//Ȯڰ xγ + If FI.Extension.ToLower().EndsWith("x") Then '//확장자가 x로끝나면 압축된 포맷 Dim datalen As Integer = BitConverter.ToInt32(Desbuf, 0) Dim RealData(Desbuf.Length - 4 - 1) As Byte Array.Copy(Desbuf, 4, RealData, 0, RealData.Length) @@ -1308,23 +1316,23 @@ Public Class MdiMain FS = New IO.MemoryStream(Desbuf, True) - '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 Է + '///////////////////////////////////////////////////////////////////////////////////////////////////2011.03.16 입력파일 변조 Dim Br As New IO.BinaryReader(FS, System.Text.Encoding.Default) Prj_test.FileName = FileName ' : Myini.Write("presetting", "filename", Prj.FileName) Prj_test.Opened = False - '//̺ϱ(2) + '//세이브파일구조(2) Prj_test.SFType = STB(Br.ReadBytes(2)) pLog.Add("File Type = " + Prj_test.SFType) 'im DSET1 As New DS() - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ //eco ҷö ADMIN 'Prj.UserAuthType = "ADMIN" OrElse + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 //eco 파일 불러올때 ADMIN 제거 'Prj.UserAuthType = "ADMIN" OrElse Select Case Prj.SFType - Case "00" '//⺻ + Case "00" '//기본버젼 Prj_test.UIVersion = STB(Br.ReadBytes(10)) Prj_test.LGVersino = STB(Br.ReadBytes(10)) Select Case Prj_test.LGVersino @@ -1343,19 +1351,19 @@ Public Class MdiMain Prj_test.EditTime = STB(Br.ReadBytes(19)) ' MsgBox(Br.BaseStream.Position) - '//DS1 ʱȭ + '//DS1 데이터초기화 및 오픈 DSET1_TEST.Clear() : DSET1_TEST.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 + Dim DS1() As Byte = Nothing Try DS1 = Br.ReadBytes(CInt(DS1Len)) Catch ex As Exception Prj_test.IsError = True - MsgBox(" ջǾϴ(Read Data Array)." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 byteRead Error") + MsgBox("파일이 손상되었습니다(Read Data Array)." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1 byteRead Error") End Try 'MsgBox("pos=" & Br.BaseStream.Position & vbCrLf & DS1.Length, MsgBoxStyle.Information, DS1Len) @@ -1367,13 +1375,13 @@ Public Class MdiMain Ms.Close() Catch ex As Exception Prj_test.IsError = True - MsgBox(" ջǾϴ(Read DataSet)" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1_test Open Error") + MsgBox("파일이 손상되었습니다(Read DataSet)" & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds1_test Open Error") End Try If Prj_test.IsError Then MsgBox("load error") Else - '//° + '//에러가없는경우 다음진행 DSET1_TEST.AcceptChanges() @@ -1465,7 +1473,7 @@ Public Class MdiMain MsgBox("(weather+profile) load ok") - '//DS1 ִٸ Լ Ѵ + '//DS1가 있다면 게속 한다 'DSETR1.Clear() : DSETR1.AcceptChanges() 'DS1Len = Br.ReadInt64 'DS1 = Br.ReadBytes(CInt(DS1Len)) @@ -1475,7 +1483,7 @@ Public Class MdiMain ' DSETR1.AcceptChanges() ' Ms.Close() 'Catch ex As Exception - ' MsgBox(" ϴ." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error") + ' MsgBox("기존 버전의 계산결과를 가져올 수 없습니다." & vbCrLf & ex.Message.ToString, MsgBoxStyle.Information, "Ds2 Open Error") 'End Try Prj.IsError = False @@ -1487,7 +1495,7 @@ Public Class MdiMain Case Else - MsgBox(" ҷ ϴ1", MsgBoxStyle.Critical, "ҷ") + MsgBox("파일을 불러올 수 없습니다1", MsgBoxStyle.Critical, "불러오기실패") Prj.IsError = True End Select @@ -1519,7 +1527,7 @@ Public Class MdiMain 'Dim ms As New MemoryStream() Using stm As System.IO.Stream = New System.IO.MemoryStream(buffer) - Dim bf As System.Runtime.Serialization.Formatters.Binary.BinaryFormatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 'ȭ ü Ŭ ȯ... Dim a As clsTEST = CType(bf.Deserialize(stm), clsTEST) stm.Close() + Dim bf As System.Runtime.Serialization.Formatters.Binary.BinaryFormatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter '역직렬화 후 객체 클래스로 형변환... Dim a As clsTEST = CType(bf.Deserialize(stm), clsTEST) stm.Close() Dim dt As DataTable = bf.Deserialize(stm) data.Clear() data.Merge(dt) @@ -1532,7 +1540,7 @@ Public Class MdiMain If System.IO.File.Exists(filename) = False Then Return Using stm As System.IO.Stream = System.IO.File.Open(filename, System.IO.FileMode.Open, System.IO.FileAccess.Read) - Dim bf As System.Runtime.Serialization.Formatters.Binary.BinaryFormatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 'ȭ ü Ŭ ȯ... Dim a As clsTEST = CType(bf.Deserialize(stm), clsTEST) stm.Close() + Dim bf As System.Runtime.Serialization.Formatters.Binary.BinaryFormatter = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter '역직렬화 후 객체 클래스로 형변환... Dim a As clsTEST = CType(bf.Deserialize(stm), clsTEST) stm.Close() Dim dt As DataTable = bf.Deserialize(stm) data.Clear() data.Merge(dt) @@ -1540,7 +1548,7 @@ Public Class MdiMain End Sub Sub Read_WeatherFile() - '// ܺϿ Ѵ + '//날씨정보는 외부파일에서 사용한다 DSET1.weather_cha.Clear() DSET1.weather_ilsa.Clear() DSET1.weather_supdo.Clear() @@ -1601,7 +1609,7 @@ Public Class MdiMain Dim buffer8 As Byte() = System.IO.File.ReadAllBytes(fi8d) Dim buffer9 As Byte() = System.IO.File.ReadAllBytes(fi9d) - ' ó4Ʈ ũⰡ + '데이터의 처음4바이트에는 파일 크기가 들어있음 Dim len1 As UInt32 = BitConverter.ToUInt32(buffer1, 0) Dim len2 As UInt32 = BitConverter.ToUInt32(buffer2, 0) Dim len3 As UInt32 = BitConverter.ToUInt32(buffer3, 0) @@ -1668,7 +1676,7 @@ Public Class MdiMain Else - '//ȣȭ̸ ҷ + '//암호화파이링 없으면 원본 불러오기 Dim fi1 As String = System.IO.Path.Combine(DataPath, DSET1.weather_cha.TableName + ".xml") Dim fi2 As String = System.IO.Path.Combine(DataPath, DSET1.weather_ilsa.TableName + ".xml") Dim fi3 As String = System.IO.Path.Combine(DataPath, DSET1.weather_supdo.TableName + ".xml") @@ -1685,47 +1693,47 @@ Public Class MdiMain If System.IO.File.Exists(fi1) Then DSET1.weather_cha.ReadXml(fi1) Else - MsgBox("#1 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#1 이 없습니다\r\n프로그램을 다시 설치하세요") End If If System.IO.File.Exists(fi2) Then DSET1.weather_ilsa.ReadXml(fi2) Else - MsgBox("#2 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#2 이 없습니다\r\n프로그램을 다시 설치하세요") End If If System.IO.File.Exists(fi3) Then DSET1.weather_supdo.ReadXml(fi3) Else - MsgBox("#3 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#3 이 없습니다\r\n프로그램을 다시 설치하세요") End If If System.IO.File.Exists(fi4) Then DSET1.weather_temp.ReadXml(fi4) Else - MsgBox("#4 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#4 이 없습니다\r\n프로그램을 다시 설치하세요") End If If System.IO.File.Exists(fi5) Then DSET1.tbl_weather.ReadXml(fi5) Else - MsgBox("#5 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#5 이 없습니다\r\n프로그램을 다시 설치하세요") End If If System.IO.File.Exists(fi6) Then DSET1.weather_group.ReadXml(fi6) Else - MsgBox("#6 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#6 이 없습니다\r\n프로그램을 다시 설치하세요") End If If System.IO.File.Exists(fi7) Then DSET1.weather_wind.ReadXml(fi7) Else - MsgBox("#7 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#7 이 없습니다\r\n프로그램을 다시 설치하세요") End If If System.IO.File.Exists(fi8) Then DSET1.weather_river.ReadXml(fi8) Else - MsgBox("#8 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#8 이 없습니다\r\n프로그램을 다시 설치하세요") End If If System.IO.File.Exists(fi9) Then DSET1.weather_water.ReadXml(fi9) Else - MsgBox("#9 ϴ\r\nα׷ ٽ ġϼ") + MsgBox("날씨데이터파일#9 이 없습니다\r\n프로그램을 다시 설치하세요") End If End If @@ -1746,40 +1754,40 @@ Public Class MdiMain DSET1.weather_group.AcceptChanges() End Sub - '''޴ 籸ϴ¼ҽ + '''좌측메뉴를 재구성하는소스 Public Sub RefreshMenuList(autoselecttagname) - Me.TreeView1.Nodes.Clear() '//Ʈʱȭ + Me.TreeView1.Nodes.Clear() '//기존트리목록초기화 - Dim ǹ̸ As String = DSET1.Tables("tbl_desc").Rows(0)("buildname").ToString() - Dim Tn As TreeNode = Me.TreeView1.Nodes.Add(ǹ̸) '//ǹ̸ ǥѴ. + Dim 건물이름 As String = DSET1.Tables("tbl_desc").Rows(0)("buildname").ToString() + Dim Tn As TreeNode = Me.TreeView1.Nodes.Add(건물이름) '//먼저건물이름을 표시한다. Tn.ForeColor = Color.Blue Tn.Tag = "" 'MsgBox(autoselecttagname) - '//߰Ҹ޴ - Dim Menus() As String = New String() {"Է", "ó", _ - "", "޽ý", "йý", "ù", _ - "ùйý", "׿", "", "뷮"} + '//추가할메뉴선택 + Dim Menus() As String = New String() {"입력존", "공조처리", _ + "난방기기", "난방공급시스템", "난방분배시스템", "냉방기기", _ + "냉방분배시스템", "신재생및열병합", "열관류율", "월별에너지사용량"} For Each m As String In Menus Select Case m - Case "Է" - '//üͰ ȯش. + Case "입력존" + '//전체데이터갯수를 반환해준다. Dim DataCount As Integer = DSET1.tbl_zone.Select("code <> '0'").Length Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DataCount.ToString() + ")") : ntn.Tag = "" GroupList_Zone = New ArrayList - '//׷캰 ǥش. + '//그룹별로 표시해준다. If DataCount = 0 Then ntn.Tag = m.ToString() + "|" Else For Each dr As DataRow In DSET1.tbl_zone.Select("code <> '0'") - Dim gname As String = dr("׷").ToString() - If GroupList_Zone.IndexOf(gname) = -1 Then '//ش׷̾ٸ ߰Ѵ. + Dim gname As String = dr("그룹").ToString() + If GroupList_Zone.IndexOf(gname) = -1 Then '//해당그룹이없다면 추가한다. - '//̱׷ - Dim drrow() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and ׷='" + gname + "'") + '//이그룹을 + Dim drrow() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 그룹='" + gname + "'") Dim ntc As Integer = drrow.Length Dim ntn2 As TreeNode = ntn.Nodes.Add(gname, gname + "(" + ntc.ToString() + ")") ntn2.Tag = m.ToString() + "|" + gname @@ -1789,19 +1797,19 @@ Public Class MdiMain End If Next - '//׷쿡 + '//하위그룹에대한 For Each stn As TreeNode In ntn.Nodes - '//ش׷쿡 ϴ Է¸ ãƼ . + '//해당그룹에 속한 존을 사용하는 입력면을 모두 찾아서 갯수를 센다. Dim gname As String = stn.Tag.ToString.Split("|")(1) - Dim drrow() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and ׷='" + gname + "'") + Dim drrow() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 그룹='" + gname + "'") Dim myouncount As UInt32 = 0 For Each drzrow As DS.tbl_zoneRow In drrow - ' myouncount += DSET1.tbl_myoun.Select("code <> '0' and з='" + drzrow.code + "'").Length + ' myouncount += DSET1.tbl_myoun.Select("code <> '0' and 존분류='" + drzrow.code + "'").Length Next - Dim stnm As TreeNode = stn.Nodes.Add("Է¸") - stnm.Tag = "Է¸|" + gname + Dim stnm As TreeNode = stn.Nodes.Add("입력면") + stnm.Tag = "입력면|" + gname '// @@ -1811,25 +1819,25 @@ Public Class MdiMain ntn.ExpandAll() - Case "ùйý" + Case "냉방분배시스템" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_bunbae.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - Case "" + Case "난방기기" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_nanbangkiki.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - Case "޽ý" + Case "난방공급시스템" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_kongkub.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - Case "ó" + Case "공조처리" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_kongjo.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - Case "йý" + Case "난방분배시스템" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_nbunbae.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - Case "ù" + Case "냉방기기" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_nangbangkiki.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - Case "׿" + Case "신재생및열병합" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_new.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - Case "" + Case "열관류율" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_yk.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - Case "" + Case "설정프로필" Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_profile.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() - 'Case "Է¸" + 'Case "입력면" ' Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m + "(" + DSET1.tbl_myoun.Select("code <> '0'").Length.ToString() + ")") : ntn.Tag = m.ToString() Case Else Dim ntn As TreeNode = Me.TreeView1.Nodes.Add(m) @@ -1837,13 +1845,13 @@ Public Class MdiMain End Select Next - '//Ʈ並 ߴ. ڵؾ Ʈ䰡 ־ٸ װ ش(ڵȮ) ٸ ⼱õ͸ ó + '//트리뷰를 모두 갱신했다. 만약 자동선택해야할 트리뷰가 있었다면 그것을 선택해준다(자동확장) 없다면 기선택데이터를 처리함 Dim seltag As String = autoselecttagname If seltag = "" AndAlso Not PreNode Is Nothing Then seltag = PreNode.Tag.ToString If seltag <> "" Then Dim buf() As String = autoselecttagname.Split("|") Dim astn As TreeNode = fintreenode(Nothing, seltag) - If Not astn Is Nothing Then '//õ±װմ? + If Not astn Is Nothing Then '//선택된태그가잇다? Me.TreeView1.SelectedNode = astn Me.TreeView1.SelectedNode.ExpandAll() Me.TreeView1.SelectedNode.ForeColor = Color.Blue @@ -1886,7 +1894,7 @@ Public Class MdiMain 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 @@ -1896,7 +1904,7 @@ Public Class MdiMain End If Next - If Exist = False Then '//̷M 1 ֵ Ѵ. + If Exist = False Then '//미뤄서 1번에 넣도록 한다. PreFile(4) = PreFile(3) PreFile(3) = PreFile(2) PreFile(2) = PreFile(1) @@ -1906,13 +1914,13 @@ Public Class MdiMain For i As Integer = 1 To 5 Myini.Write("presetting", "filename" & i, PreFile(i - 1)) Next - Read_FilHistory() '//Ŀ ٽ оѴ. + Read_FilHistory() '//저장한후에는 다시 읽어오도록한다. End Sub Private Sub Read_FilHistory() Dim Path As String Dim Name As String - '// Ʈ ϴȮ + '//현재 리스트가 존재하는지확인 For i As Integer = 1 To 5 Dim Filename As String = Myini.Read("presetting", "filename" & i, "") Filename = Filename.Replace(".\", My.Application.Info.DirectoryPath & "\") @@ -1957,12 +1965,12 @@ Public Class MdiMain 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) - '//̺ϱȣ(2) - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ eco admin Prj.UserAuthType = "ADMIN" OrElse + '//세이브파일구조번호저장(2) + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 eco 파일 저장할 때 admin 제거 Prj.UserAuthType = "ADMIN" OrElse Prj.SFType = "00" Else Prj.SFType = "10" @@ -1970,44 +1978,44 @@ Public Class MdiMain Bw.Write(System.Text.Encoding.Default.GetBytes(Prj.SFType)) - '// ReadMe.txt + '//저장순서는 ReadMe.txt 참조 Dim uiverstr As String = CurrentUIVersion() Dim UIVer() As Byte = System.Text.Encoding.Default.GetBytes(uiverstr) If UIVer.Length <> 10 Then - MsgBox("UI (" & UIVer.Length & ")") + MsgBox("UI버젼의 길이 오류(" & UIVer.Length & ")") GoTo ENDSTAT End If Bw.Write(UIVer) Dim LGVer() As Byte = System.Text.Encoding.Default.GetBytes(Prj.LGVersino) If LGVer.Length <> 10 Then - MsgBox("LG (" & LGVer.Length & ")") + MsgBox("LG버젼의 길이 오류(" & LGVer.Length & ")") GoTo ENDSTAT End If Bw.Write(LGVer) - '//ø ̸ (100ѱ 50) + '//템플릿 이름 저장(100한글 50자) Dim Name() As Byte = System.Text.Encoding.Default.GetBytes(Prj.Name) ReDim Preserve Name(99) 'MsgBox(Name.Length) Bw.Write(Name) - '//ø (256 ѱ 128) + '//템플릿 설명 저장(256 한글 128자) Dim Desc() As Byte = System.Text.Encoding.Default.GetBytes(Prj.Desc) ReDim Preserve Desc(255) 'MsgBox(Desc.Length) 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Ʈ߰Ѵ. + Case "01" '//암호 8바이트추가한다. If Prj.Password.Length > 8 Then - MsgBox("ȣDZ̰ 8 ʰմϴ" & vbCrLf & "ȣ ʽϴ", MsgBoxStyle.Information, "Ȯ") + MsgBox("암호의길이가 8을 초과합니다" & vbCrLf & "암호는 저장되지않습니다", MsgBoxStyle.Information, "확인") Prj.Password = "" End If Dim Pass() As Byte = System.Text.Encoding.Default.GetBytes(Prj.Password) @@ -2015,41 +2023,41 @@ Public Class MdiMain Bw.Write(Pass) End Select - '//1 ͼҽ մϴ. + '//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) '//ͼ´ٽ + Dim Dse1Len As Int64 = Pos1e - Pos1 '//데이터셋의 길이 + Bw.BaseStream.Position = Pos1 '//처음위치로이동 + Bw.Write(Dse1Len) '//데이터셋길이저장 + DSET1.WriteXml(Fs) '//데이터셋다시저장 - '//ͼ xml ӽ + '//데이터세 xml 임시저장 'Dim dsfile As String = My.Application.Info.DirectoryPath & "\dset1.xml" 'DSET1.WriteXml(dsfile) - '//2 ͼҽ մϴ. - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ eco admin Prj.UserAuthType = "ADMIN" OrElse + '//2번쨰 데이터소스를 저장합니다. + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 eco 파일 저장할 때 admin 제거 Prj.UserAuthType = "ADMIN" OrElse Dim Pos2 As Int64 = Bw.BaseStream.Position DSETR1.WriteXml(Fs) Dim Pos2e As Int64 = Bw.BaseStream.Position - Dim Dse2Len As Int64 = Pos2e - Pos2 '//ͼ - Bw.BaseStream.Position = Pos2 '//óġ̵ - Bw.Write(Dse2Len) '//ͼ± - DSETR1.WriteXml(Fs) '//ͼ´ٽ + Dim Dse2Len As Int64 = Pos2e - Pos2 '//데이터셋의 길이 + Bw.BaseStream.Position = Pos2 '//처음위치로이동 + Bw.Write(Dse2Len) '//데이터셋길이저장 + DSETR1.WriteXml(Fs) '//데이터셋다시저장 End If -ENDSTAT: '//߻ Ḧ б⹮ +ENDSTAT: '//오류발생시 강제종료를 위한 분기문 Bw.Flush() Bw.Close() Fs.Close() - '//Ͽ Ҷ(̸) ̸ ٲǷ ش ̺Ʈ ȭ Ұſ~ + '//파일열때랑 저장할때(새이름포함) 이름이 바뀔수잇으므로 해당 이벤트에만 화면을 갱신할거에요~ Dim fi As New System.IO.FileInfo(FileName) Me.lbl_filename.Text = fi.Name ' Prj.FileName.Substring(Prj.FileName.LastIndexOf("\") + 1) - '//Ѵ 220919 + '//압축을먼저진행한다 220919 Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(FileName) Dim Desbuf() As Byte = {} @@ -2064,9 +2072,9 @@ ENDSTAT: '// Array.Copy(Desbuf, 0, Source, 4, Desbuf.Length) End If - '///////////////////////////////////////////////////////////////////////////////////////////////////////////// 2011.03.16߰ + '/////////////////////////////////////////////////////////////////////////////////////////////////////////////저장파일 변조2011.03.16추가 '//Encoding - If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.09 ߰ eco admin Prj.UserAuthType = "ADMIN" OrElse + If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.09 추가 eco 파일 저장할 때 admin 제거 Prj.UserAuthType = "ADMIN" OrElse 'Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(FileName) Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42}) My.Computer.FileSystem.WriteAllBytes(FileName, Desbuf, False) @@ -2076,46 +2084,46 @@ ENDSTAT: '// - '///////////////////////////////////////////////////////////////////////////////////////////////////////////// 2011.03.16߰ + '/////////////////////////////////////////////////////////////////////////////////////////////////////////////저장파일 변조2011.03.16추가 - If prompt Then MsgBox(" Ǿϴ", MsgBoxStyle.Information, "Ȯ") + If prompt Then MsgBox("파일이 저장되었습니다", MsgBoxStyle.Information, "확인") Me.RefreshMenuList("") '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(IIf(Prj.Name = "", "프로젝트이름", Prj.Name))) + 'Bw.Write(CStr(IIf(Prj.Desc = "", "프로젝트설명", Prj.Desc))) + ''//템플릿 생성시간 'Bw.Write(CStr(Format(Now, "yyyy-MM-dd HH:mm:ss"))) 'DSET1.WriteXml(Fs) End Sub #Region "Show_Menu" - Private Sub Menu_ǹ() + Private Sub Menu_건물개요() If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If - 'Me.Toggle_Menu_Color(E_MenuIdx.ǹ) - show_menu(E_MenuIdx.ǹ.ToString) + 'Me.Toggle_Menu_Color(E_MenuIdx.건물개요) + show_menu(E_MenuIdx.건물개요.ToString) End Sub #End Region Private Sub Read_SEtting() - Work_msg(" Ȯϴ") + Work_msg("설정을 확인하는중") Pub.pLog = New ArinLog.ArinLog() pLog.Add("Read Setting") - 'Ʈ + '프로젝트 버젼정보 Prj.MaxUI = "20091231" Prj.MaxLG = "20091231" Prj.Admin = True - Prj.Password = "" '//ȣ ⺻Ǿ + Prj.Password = "" '//암호는 기본해제되어있음 Try For Each A As Net.NetworkInformation.NetworkInterface In ArinNet.MyNet.GetMacArray @@ -2138,10 +2146,10 @@ ENDSTAT: '// - '//͵丮 ȮѴ ̰ ͺ̽ Ÿ ϰѴ - '//̴ ͳݼġǰ ⋚̴ - Work_msg(" Ȯմϴ") - If DataDir.Exists = False Then DataDir.Create() '//ٸ + '//데이터디렉토리정보를 확인한다 이곳에서 데이터베이스및 기타 설정파일을 저장하게한다 + '//이는 인터넷설치버젼의경우 사용자폴더로 들어가기떄문이다 + Work_msg("데이터폴더를 확인합니다") + 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 @@ -2149,7 +2157,7 @@ ENDSTAT: '// 'End If End If - Work_msg("⺻ մϴ") + Work_msg("기본정보를 설정합니다") Myini = New CEnergy.MyINI(DataDir.FullName & "\arinwaret4.ini") Work_msg("") Me.Activate() @@ -2157,73 +2165,73 @@ ENDSTAT: '// Private Sub Read_PreFile(ByVal i As Short) If Prj.LoginTime = "" Then - MsgBox(" α ϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("먼저 로그인을 하세요", MsgBoxStyle.Information, "확인") Frm_Intro.Activate() Frm_Intro.tb_id.Focus() Return End If If PreFile(i).Trim <> "" Then - If MsgBox(PreFile(i) & " ҷðڽϱ?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "ҷ") <> MsgBoxResult.Ok Then Return + 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.Open_File(Filename) Else - MsgBox(" ų ҷ ϴ", MsgBoxStyle.Critical, "Ȯ") + MsgBox("기존파일이 없거나 불러올 수 없습니다", MsgBoxStyle.Critical, "확인") End If End If End Sub - '''ϸ 1~5 ưó + '''기존사용파일목록 1~5까지의 버튼처리 Private Sub ToolStripMenuItem10_Click(sender As System.Object, e As System.EventArgs) Handles lbl_p1.Click, lbl_p2.Click, lbl_p3.Click, lbl_p4.Click, lbl_p5.Click Dim but As Windows.Forms.ToolStripMenuItem = CType(sender, Windows.Forms.ToolStripMenuItem) Dim idx As Integer = CInt(but.Tag.ToString) Read_PreFile(idx) End Sub - Private Sub űToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles btNew.Click + Private Sub 신규ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles btNew.Click - 'ϴ if - If MsgBox(" ۼϽðڽϱ?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "Ȯ") <> MsgBoxResult.Ok Then Return '//ok ϸ + '물어야하니 if + If MsgBox("새파일을 작성하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return '//ok 안하면 빠져나가기 Dim new_string As String - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 new_string = "\newx.tplx" Else new_string = "\newx.ecox" End If Dim Srcfile As New System.IO.FileInfo(My.Application.Info.DirectoryPath & new_string) If Srcfile.Exists = False Then - MsgBox(" ʽϴ", MsgBoxStyle.Critical, "Ȯ") - Return '//ҿ + MsgBox("원본샘플파일이 존재하지않습니다", MsgBoxStyle.Critical, "확인") + Return '//복사할원본이 없으면 빠져나가기 End If 'Dim SD As New SaveFileDialog - 'If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ + 'If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 ' SD.FileName = "new" & Format(Now, "mmdd") & ".tpl" - ' SD.Filter = "ø(*.tplx)|*.tplx|(*.*)|*.*" + ' SD.Filter = "템플릿파일(*.tplx)|*.tplx|모든파일(*.*)|*.*" 'Else ' SD.FileName = "new" & Format(Now, "mmdd") & ".eco" - ' SD.Filter = "(*.ecox)|*.ecox|(*.*)|*.*" + ' SD.Filter = "데이터파일(*.ecox)|*.ecox|모든파일(*.*)|*.*" 'End If - 'If SD.ShowDialog <> Windows.Forms.DialogResult.OK Then Return '// ϸ Է¾ϸ + '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) - '///////////////////////////////////////////////////////////////////////////////////////////////////////////// 2011.03.16߰ - 'If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.09 ߰ + '/////////////////////////////////////////////////////////////////////////////////////////////////////////////저장파일 변조2011.03.16추가 + 'If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.09 추가 ' Dim Desbuf() As Byte = {} ' Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(SD.FileName) ' Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42}) ' My.Computer.FileSystem.WriteAllBytes(SD.FileName, Desbuf, False) 'End If - '///////////////////////////////////////////////////////////////////////////////////////////////////////////// 2011.03.16߰ + '/////////////////////////////////////////////////////////////////////////////////////////////////////////////저장파일 변조2011.03.16추가 Dim filesync As Boolean = False Me.Open_File(Srcfile.FullName, filesync, False, False, True) - Prj.UIVersion = CurrentUIVersion() '//׻ 160327 + Prj.UIVersion = CurrentUIVersion() '//항상현재버젼으로 160327 Refresh_info() ToolStripButton3.Enabled = False bt_filesave.Enabled = False @@ -2232,56 +2240,56 @@ ENDSTAT: '// Public PreNode As TreeNode = Nothing Private Sub TreeView1_MouseDoubleClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TreeView1.MouseDoubleClick - If Me.TreeView1.SelectedNode Is Nothing Then Return '//õȳ尡ٸ Ѵ. - Dim NodeID As String = Me.TreeView1.SelectedNode.Tag.ToString '//缱õȳ̸ + If Me.TreeView1.SelectedNode Is Nothing Then Return '//선택된노드가없다면 취소한다. + Dim NodeID As String = Me.TreeView1.SelectedNode.Tag.ToString '//현재선택된노드의이름 ' MsgBox(NodeID) - show_menu(NodeID) '//ش忡شϴ Ѵ. - If Not PreNode Is Nothing Then PreNode.ForeColor = Color.Black '// õ 尡մٸ 󺯰 + show_menu(NodeID) '//해당노드에해당하는 폼을 오픈한다. + If Not PreNode Is Nothing Then PreNode.ForeColor = Color.Black '//이전에 선택된 노드가잇다면 검정색으로 색상변경 - PreNode = Me.TreeView1.SelectedNode '//缱õȳ尪 Ѵ. + PreNode = Me.TreeView1.SelectedNode '//현재선택된노드값을 저장한다. If PreNode Is Nothing Then Return - PreNode.ForeColor = Color.Blue '//۾ ûκ + PreNode.ForeColor = Color.Blue '//글씨색을 청색으로변경 End Sub - '''翭ִ ޴ ݽϴ. + '''현재열려있는 메뉴를 닫습니다. Private Sub Close_menu() If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If If Me.OpenedForm <> E_MenuIdx.NONE Then - MsgBox("翭ִ :" + Me.OpenedForm.ToString()) + 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.ó + Case E_MenuIdx.공조처리 f = New Frm_kongjo(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.޽ý + Case E_MenuIdx.난방공급시스템 f = New Frm_kongkub(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx. + Case E_MenuIdx.난방기기 f = New Frm_Nanbang(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.йý + Case E_MenuIdx.난방분배시스템 f = New Frm_nBunbae(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.ù + Case E_MenuIdx.냉방기기 f = New Frm_NaengBang(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.ùйý + Case E_MenuIdx.냉방분배시스템 f = New Frm_Bunbae(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.׿ + Case E_MenuIdx.신재생및열병합 f = New Frm_New(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx. + Case E_MenuIdx.열관류율 f = New Frm_YK(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.Է¸ + Case E_MenuIdx.입력면 f = New Frm_V20091231_Myoun(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.Է + Case E_MenuIdx.입력존 f = New Frm_Zone(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.ǹ + Case E_MenuIdx.건물개요 f = New Frm_Desc(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) - Case E_MenuIdx.뷮 + Case E_MenuIdx.월별에너지사용량 f = New Frm_monuse(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) Case Else f = Nothing @@ -2317,7 +2325,7 @@ ENDSTAT: '// Private Sub show_menu(menutag As String) If menutag.Trim = "" Then Return If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If @@ -2342,9 +2350,9 @@ ENDSTAT: '// Next If Me.OpenedForm <> E_MenuIdx.NONE Then - '//ο ȭ ȭ ٸ ׳ ִʴ. + '//새로여는 화면이 기존화면과 같다면 그냥 있늦다. Dim curf As CForm = GetFormfromMenuIDX(Me.OpenedForm) - If Not curf Is Nothing Then '//Ͱ մٸ + If Not curf Is Nothing Then '//구폼데이터가 잇다면 If curf.HasChanged Then curf.AcceptChanged() PrjChanged = True @@ -2364,36 +2372,36 @@ ENDSTAT: '// f.WindowState = FormWindowState.Maximized f.TreeTag = menutag f.Show() - f.Activate() '//翭ִ ش. + f.Activate() '//현재열려있는폼을 변경해준다. Me.OpenedForm = nidx - '//Է ߰ - If Me.OpenedForm = E_MenuIdx.Է Then - Dim drzonerow() As DataRow = DSET1.tbl_zone.Select("׷='" + MenuParam + "'") + '//입력존은 새로 추가함 + If Me.OpenedForm = E_MenuIdx.입력존 Then + Dim drzonerow() As DataRow = DSET1.tbl_zone.Select("그룹='" + MenuParam + "'") If drzonerow.Length = 0 Then - 'CType(f, Frm_Zone).bt_add.PerformClick() '140410 ӽ ;; ϸ ϳ ܹ. + 'CType(f, Frm_Zone).bt_add.PerformClick() '140410 임시제거 오류낫음;; 존을 저장하면 하나가 무조건 생겨버린다. End If End If End If - '//Ʈ並 Ѵ. - 'MsgBox("Ʈ䰻Ź õ並 óش.") + '//트리뷰를 갱신한다. + 'MsgBox("트리뷰갱신및 선택된프리뷰를 처리해준다.") RefreshMenuList(menutag) Selectnode(Me.TreeView1.Nodes, menutag) End Sub - Private Sub α׷ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) + Private Sub 프로그램정보ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) End Sub - Private Sub ġToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) + Private Sub 나눔고딕설치ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Process.Start("http://hangeul.naver.com/share.nhn") End Sub Private Sub ToolStripMenuItem8_Click_1(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem8.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If Dim f As New Frm_V20091231_Weather(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) @@ -2403,10 +2411,10 @@ ENDSTAT: '// Private Sub ToolStripMenuItem10_Click_1(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem10.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If - 'Me.Toggle_Menu_Color(E_MenuIdx.κк) + 'Me.Toggle_Menu_Color(E_MenuIdx.부분부하율) Dim f As New Frm_V20091231_buha(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) f.ControlBox = True f.ShowDialog() @@ -2414,7 +2422,7 @@ ENDSTAT: '// Private Sub ToolStripMenuItem11_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem11.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If Frm_Common.ControlBox = True @@ -2424,7 +2432,7 @@ ENDSTAT: '// Private Sub ToolStripMenuItem12_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem12.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If Frm_RepResult_Admin.ControlBox = True @@ -2433,11 +2441,11 @@ ENDSTAT: '// Private Sub ToolStripMenuItem13_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem13.Click - If MsgBox(" ͸ Ͻðڽϱ?" & vbCrLf & _ - " Ͱ ǰ 絥Ͱ ϴ." & vbCrLf & _ - "۾ ǵ ϴ", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "Ȯ") <> MsgBoxResult.Ok Then Return + If MsgBox("정말로 서버의 데이터를 수정하시겠습니까?" & vbCrLf & _ + "서버의 기상데이터가 삭제되고 현재데이터가 씌여집니다." & vbCrLf & _ + "이작업은 되돌릴 수없습니다", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return - Dim pass As String = InputBox("ȣԷ") + Dim pass As String = InputBox("암호입력") If pass <> "raytrace" Then Return Dim Cn As New SqlClient.SqlConnection(My.Settings.cs) @@ -2459,30 +2467,30 @@ ENDSTAT: '// 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) + 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) + 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) + 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, _ + 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, _ + 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, "Ȯ") + MsgBox("업데이트완료", MsgBoxStyle.Information, "확인") End Sub -#Region "ܸ޴" +#Region "상단메뉴" - Private Sub ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem.Click + Private Sub 설정프로필ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 설정프로필ToolStripMenuItem.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If Dim f As New Frm_V20091231_Profile(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) @@ -2491,13 +2499,13 @@ ENDSTAT: '// End Sub - Private Sub ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles btOpen.Click + Private Sub 열기ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles btOpen.Click OpenFile() End Sub Sub OpenFile() If Prj.LoginTime = "" Then - MsgBox(" α ϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("먼저 로그인을 하세요", MsgBoxStyle.Information, "확인") Frm_Intro.Activate() Frm_Intro.tb_id.Focus() Return @@ -2506,10 +2514,10 @@ ENDSTAT: '// Dim Od As New OpenFileDialog 'Od.InitialDirectory = TemplateDir.FullName Od.FileName = Prj.FileName - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ - Od.Filter = "ø(*.TPL,*.TPLX)|*.tpl;*.tplx|(*.*)|*.*" + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 + Od.Filter = "템플릿파일(*.TPL,*.TPLX)|*.tpl;*.tplx|모든파일(*.*)|*.*" Else - Od.Filter = "(*.ECO,*.ECOX)|*.eco;*.ecox|(*.*)|*.*" + Od.Filter = "데이터파일(*.ECO,*.ECOX)|*.eco;*.ecox|모든파일(*.*)|*.*" End If Od.FilterIndex = 0 If Od.ShowDialog <> Windows.Forms.DialogResult.OK Then Return @@ -2518,28 +2526,28 @@ ENDSTAT: '// bt_filesave.Enabled = True End Sub - Private Sub ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles bt_filesave.Click - '/ ư Ŭ Ͼ ̺Ʈ ƽ ^^? + Private Sub 저장ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles bt_filesave.Click + '/여긴 버튼 클릭됫을떄 일어나는 이벤트 아시죵 ^^? If Prj.LoginTime = "" Then - MsgBox(" α ϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("먼저 로그인을 하세요", MsgBoxStyle.Information, "확인") Frm_Intro.Activate() Frm_Intro.tb_id.Focus() Return End If If Not Prj.Opened Then - MsgBox(CLang.Ͼ, MsgBoxStyle.Information, "Ȯ") + MsgBox(CLang.열린파일없음, MsgBoxStyle.Information, "확인") Return End If Dim fi As New System.IO.FileInfo(Prj.FileName) If fi.Extension.ToLower().EndsWith("x") = False Then - MsgBox(" Դϴ. [ٸ ̸] ϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("이 파일은 구버젼 형식입니다. [다른 이름]으로 저장 하세요", MsgBoxStyle.Information, "확인") Return End If ' Dim lastmenu As String = "" - If Me.OpenedForm <> E_MenuIdx.NONE Then '//ִ. + If Me.OpenedForm <> E_MenuIdx.NONE Then '//뭔가열려있다. ' lastmenu = Me.OpenedForm.ToString Dim curf As CForm = GetFormfromMenuIDX(Me.OpenedForm) curf.AcceptChanged() @@ -2554,10 +2562,10 @@ ENDSTAT: '// End Sub - Private Sub ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem.Click + Private Sub 정보ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 정보ToolStripMenuItem.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) - 'MsgBox(CLang.Ͼ, MsgBoxStyle.Information, "Ȯ") + Work_msg_timer(CLang.열린파일없음) + 'MsgBox(CLang.열린파일없음, MsgBoxStyle.Information, "확인") Return End If If Frm_FileInfo.ShowDialog = Windows.Forms.DialogResult.OK Then @@ -2565,7 +2573,7 @@ ENDSTAT: '// End If End Sub - Private Sub ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem.Click + Private Sub 종료ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 종료ToolStripMenuItem.Click Me.Close() End Sub @@ -2575,34 +2583,34 @@ ENDSTAT: '// End Sub - Private Sub ToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem1.Click + Private Sub 정보ToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) Handles 정보ToolStripMenuItem1.Click Frm_About.ShowDialog() End Sub - Private Sub 뷮ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Private Sub 월별에너지사용량등록ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub TestToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) - '//db׽Ʈ + '//db테스트영역 Dim msg As String = "" - msg = " /뿩Ȯ(üũȰ͸)" - For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("=true") - MsgBox(":" + dr.code + "," + dr.) + msg = "난방기기 개별기기적용/헤더적용여부확인(체크된것만)" + For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("개별기기적용=true") + MsgBox("개별기적용:" + dr.code + "," + dr.설명) Next - For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("=true") - MsgBox("뿩:" + dr.code + "," + dr.) + For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("헤더적용=true") + MsgBox("헤더적용여부:" + dr.code + "," + dr.설명) Next - '//뷮(1) + '//월별사용량데이터(1년차) Dim str As New System.Text.StringBuilder - Dim 1 As String = "" - For Each dr As DS.tbl_monuseRow In DSET1.tbl_monuse.Select("code='0001'", "") - If 1 = "" Then 1 = dr. - str.AppendLine(dr.code.ToString() + "," + dr. + ",ð=" + dr.ð + ",=" + dr. + ",=" + dr.) + Dim 년차1 As String = "" + For Each dr As DS.tbl_monuseRow In DSET1.tbl_monuse.Select("code='0001'", "월") + If 년차1 = "" Then 년차1 = dr.년 + str.AppendLine(dr.code.ToString() + "," + dr.월 + "월,도시가스=" + dr.도시가스 + ",전력=" + dr.전력 + ",지역난방=" + dr.지역난방) Next - MsgBox(str.ToString, MsgBoxStyle.Information, 1) + MsgBox(str.ToString, MsgBoxStyle.Information, 년차1) End Sub @@ -2613,57 +2621,57 @@ ENDSTAT: '// 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 + 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 + 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 System.EventArgs) Handles ׷߰ToolStripMenuItem.Click + Private Sub 그룹추가ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 그룹추가ToolStripMenuItem.Click If Me.TreeView1.SelectedNode Is Nothing Then Return - Dim newname As String = InputBox("׷̸", "űԱ׷̸ Էϼ", "׷") + 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 + 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 + 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 System.EventArgs) Handles ׷ToolStripMenuItem.Click - '//õȱ׷ + Private Sub 그룹삭제ToolStripMenuItem_Click(sender As System.Object, e As System.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) + "'") + 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 @@ -2672,16 +2680,16 @@ ENDSTAT: '// 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 + "'") + 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 System.EventArgs) Handles ׷캯ToolStripMenuItem.Click - '//õȱ׷ + Private Sub 그룹변경ToolStripMenuItem_Click(sender As System.Object, e As System.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 @@ -2689,20 +2697,20 @@ ENDSTAT: '// Dim t() As String = tag.Split("|") Dim m As New System.Text.StringBuilder - Dim newname As String = InputBox(" ׷̸ Էϼ", "׷캯", t(1)) + 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 + 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() RefreshMenuList("") End If End Sub - Private Sub ׷캹ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ׷캹ToolStripMenuItem.Click - '//õȱ׷ + Private Sub 그룹복사ToolStripMenuItem_Click(sender As System.Object, e As System.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 @@ -2710,20 +2718,20 @@ ENDSTAT: '// Dim t() As String = tag.Split("|") Dim m As New System.Text.StringBuilder - Dim newname As String = InputBox("ο ׷̸ Էϼ", "׷캹", t(1)) + 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) + "'") + 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) '//ڵ尪 ش. + newdr("그룹") = newname + DuplicateZoneRow(dr.code, newcode) '//이존의코드값을 지정해준다. DSET1.tbl_zone.Rows.Add(newdr) Next DSET1.tbl_zone.AcceptChanges() @@ -2732,24 +2740,24 @@ ENDSTAT: '// 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) + '//이입력존을 사용하는 입력면을 복제해서 연결해준다. + 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) + 신규입력면(기존컬럼.ColumnName) = 기존입력면(기존컬럼.ColumnName) End If Next - űԷ¸.з = newzoneCode - DSET1.tbl_myoun.Rows.Add(űԷ¸) + 신규입력면.존분류 = 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) @@ -2762,11 +2770,11 @@ ENDSTAT: '// 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 + Dim Dr_myoun As DataRow = DSET1.tbl_myoun.Select("", "존분류 desc")(0) + If Dr("code") >= Dr_myoun("존분류") Then Return Format(CInt(Dr("code")) + 1, "00000") Else - Return Format(CInt(Dr_myoun("з")) + 1, "00000") + Return Format(CInt(Dr_myoun("존분류")) + 1, "00000") End If Catch ex As Exception Return "00001" @@ -2778,31 +2786,31 @@ ENDSTAT: '// - Private Sub TestToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_׷.Click + Private Sub TestToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_계산결과그래프.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If - Report_׷.ControlBox = True - Report_׷.Show() + Report_그래프.ControlBox = True + Report_그래프.Show() End Sub - Private Sub 谳׷ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_谳׷.Click + Private Sub 설계개선그래프ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bt_설계개선그래프.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If - Report_谳.ControlBox = True - Report_谳.Show() + Report_설계개선.ControlBox = True + Report_설계개선.Show() End Sub Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click btNew.PerformClick() End Sub - Private Sub 뷮ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) + Private Sub 월별에너지사용량등록ToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If Dim f As New Frm_monuse(Now.Second.ToString() + "00" + Now.Millisecond.ToString()) @@ -2823,27 +2831,27 @@ ENDSTAT: '// btSaveNew.PerformClick() End Sub Private Sub ToolStripButton5_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton5.Click - ToolStripMenuItem1.PerformClick() + 실행ToolStripMenuItem1.PerformClick() End Sub Private Sub ToolStripButton6_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton6.Click - ToolStripMenuItem.PerformClick() + 실행ToolStripMenuItem.PerformClick() End Sub Private Sub ToolStripButton7_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton7.Click - bt_׷.PerformClick() + bt_계산결과그래프.PerformClick() End Sub - Private Sub ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem.Click + Private Sub 실행ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 실행ToolStripMenuItem.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If ' Dim lastmenu As String = "" - If Me.OpenedForm <> E_MenuIdx.NONE Then '//ִ. + If Me.OpenedForm <> E_MenuIdx.NONE Then '//뭔가열려있다. ' lastmenu = Me.OpenedForm.ToString Dim curf As CForm = GetFormfromMenuIDX(Me.OpenedForm) curf.AcceptChanged() @@ -2852,29 +2860,29 @@ ENDSTAT: '// - '//絥ͻ¸ + '//현재데이터상태를 저장 DSET1.AcceptChanges() DSETR1.AcceptChanges() - '//ϰϴ ¸ ȭ鿡 ϰѴ. + '//계산하고자하는 형태를 화면에서 선택하게한다. If Frm_Calc.ShowDialog <> Windows.Forms.DialogResult.OK Then Return '// - Dim Type As Calculator.ECalc = Frm_Calc.Type '//Ÿ - Dim showmsg As String = "" '//߰ǥø޼ - Dim St As Date = Now '// + Dim Type As Calculator.ECalc = Frm_Calc.Type '//계산타입 + Dim showmsg As String = "" '//추가표시메세지 + Dim St As Date = Now '//계산시작 pLog.Add(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>") - pLog.Add(String.Format("({0})", Type.ToString())) - pLog.Add(String.Format("۽ð : {0}", St.ToString())) + pLog.Add(String.Format("계산실행({0})", Type.ToString())) + pLog.Add(String.Format("시작시간 : {0}", St.ToString())) pLog.Add("----------------------------------") - '//谳ǰ ӽõͿ Ѵ. - '//ӽõͰؼ 絥͸ ؼ Ѵ. - If Type = Calculator.ECalc.谳 Then - showmsg = "谳" + vbCrLf + '//설계개선안의경우 임시데이터에서 계산을 진행한다. + '//임시데이터계산을위해서 현재데이터를 모두 복제해서 사용한다. + If Type = Calculator.ECalc.설계개선안 Then + showmsg = "설계개선안" + vbCrLf DSET2.Clear() DSET2.AcceptChanges() DSET2.Merge(DSET1) @@ -2883,23 +2891,23 @@ ENDSTAT: '// DSETR2.AcceptChanges() DSETR2.Merge(DSETR1) DSETR2.AcceptChanges() - Calc = New Calculator(Prj.LGVersino, DSET2, DSETR2, Result2, True) '//Ŭ ʱȭ + Calc = New Calculator(Prj.LGVersino, DSET2, DSETR2, Result2, True) '//계삭식클래스 초기화 End If Dim Result As Boolean = Calc.Start(showmsg, Type, LogSB, 0) - Dim Ts As TimeSpan = Now - St '//ð ǥش. + Dim Ts As TimeSpan = Now - St '//계산경과시간을 표시해준다. Dim calc_ok As Integer = 0 - If Result Then '//Ķ True ҿ䷮ ߰ Իȴ. + If Result Then '//파라미터 True 라면 소요량이 추가로 게산된다. Calc.Summary.All() If LogSB.ToString <> "" Then - '// ߻ߴٸ Ŀ ֵѴ. + '//에러기록이 발생했다면 저장후에 보여주도록한다. Dim logfile As New System.IO.FileInfo(My.Application.Info.DirectoryPath & "\log\calc_okmsg_" + Now.ToString("yyMMddHHmmss") + ".txt") If logfile.Directory.Exists = False Then logfile.Directory.Create() My.Computer.FileSystem.WriteAllText(logfile.FullName, LogSB.ToString, False) Shell("notepad " + logfile.FullName, AppWinStyle.NormalFocus) Else - MsgBox("۾ ϷǾϴ." & vbCrLf & "ð:" + Ts.ToString, MsgBoxStyle.Information, "Ϸ") - calc_ok = 1 '================================2014.04.17 ϷǸ ׷ + MsgBox("계산작업이 완료되었습니다." & vbCrLf & "경과시간:" + Ts.ToString, MsgBoxStyle.Information, "완료") + calc_ok = 1 '================================2014.04.17 계산이 완료되면 그래프를 보여줌 End If Else @@ -2909,30 +2917,25 @@ ENDSTAT: '// My.Computer.FileSystem.WriteAllText(logfile.FullName, LogSB.ToString, False) Shell("notepad " + logfile.FullName, AppWinStyle.NormalFocus) End If - MsgBox("۾ ߴܵǾϴ." & vbCrLf & "ð:" + Ts.ToString, MsgBoxStyle.Critical, "Ϸ(߻)") + MsgBox("계산작업이 중단되었습니다." & vbCrLf & "경과시간:" + Ts.ToString, MsgBoxStyle.Critical, "완료(오류발생)") End If - '//¸޼â ִٸ ش. - If Not msgf Is Nothing Then - msgf.Close() - msgf.Dispose() - msgf = Nothing - End If + closemessagewindow() - '//ùķ̼Ǹ忴ٸ Ѵ. - If Calc.IsSimulation Then Calc = New Calculator(Prj.LGVersino, DSET1, DSETR1, Result1, False) '//κ + '//시뮬레이션모드였다면 원래계산모드로 변경한다. + If Calc.IsSimulation Then Calc = New Calculator(Prj.LGVersino, DSET1, DSETR1, Result1, False) '//원래계산식으로변경함 If lastmenutag <> "" Then Me.show_menu(lastmenutag) End If If calc_ok = 1 Then - If Type <> Calculator.ECalc.谳 Then - Report_׷.Visible = False - Report_׷.Show() + If Type <> Calculator.ECalc.설계개선안 Then + Report_그래프.Visible = False + Report_그래프.Show() Else - Report_谳.Visible = False - Report_谳.Show() + Report_설계개선.Visible = False + Report_설계개선.Show() End If End If @@ -2940,24 +2943,34 @@ ENDSTAT: '// End Sub - Private Sub ToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem1.Click - Menu_ǹ() + Sub closemessagewindow() + '//상태메세지창이 열려있다면 제거해준다. + If Not msgf Is Nothing Then + msgf.Close() + msgf.Dispose() + msgf = Nothing + End If + End Sub - Private Sub ToolStripMenuItem_Click_1(sender As System.Object, e As System.EventArgs) Handles ToolStripMenuItem.Click + Private Sub 실행ToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) Handles 실행ToolStripMenuItem1.Click + Menu_건물개요() + End Sub + + Private Sub 계산결과ToolStripMenuItem_Click_1(sender As System.Object, e As System.EventArgs) Handles 계산결과ToolStripMenuItem.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.08 ߰ + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.08 추가 Report_Total.ControlBox = True Report_Total.Show() End If End Sub - Private Sub 򰡼ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles bt_򰡼.Click + Private Sub 인증평가서ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles bt_인증평가서.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If @@ -2966,12 +2979,12 @@ ENDSTAT: '// End Sub Private Sub ToolStripMenuItem1_Click(sender As System.Object, e As System.EventArgs) - For Each dr As DSR.꿡Row In DSETR1.꿡.Rows - MsgBox(dr.¿) + For Each dr As DSR.생산에너지Row In DSETR1.생산에너지.Rows + MsgBox(dr.전력열병합) Next End Sub - Private Sub ٸ̸ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles btSaveNew.Click + Private Sub 다른이름으로저장ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles btSaveNew.Click Save_New() End Sub @@ -2979,14 +2992,14 @@ ENDSTAT: '// Function Save_New() As Boolean If Prj.LoginTime = "" Then - MsgBox(" α ϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("먼저 로그인을 하세요", MsgBoxStyle.Information, "확인") Frm_Intro.Activate() Frm_Intro.tb_id.Focus() Return False End If If Prj.FileName = "" Then - MsgBox(CLang.Ͼ, MsgBoxStyle.Information, "Ȯ") + MsgBox(CLang.열린파일없음, MsgBoxStyle.Information, "확인") Return False End If @@ -3000,10 +3013,10 @@ ENDSTAT: '// Dim SD As New SaveFileDialog SD.FileName = newfilename - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ - SD.Filter = "ø(*.tplx)|*.tplx|(*.*)|*.*" + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 + SD.Filter = "템플릿파일(*.tplx)|*.tplx" Else - SD.Filter = "(*.ecox)|*.ecox|(*.*)|*.*" + SD.Filter = "데이터파일(*.ecox)|*.ecox" End If SD.FilterIndex = 0 @@ -3011,7 +3024,7 @@ ENDSTAT: '// Prj.FileName = SD.FileName ' Dim lastmenu As String = "" - If Me.OpenedForm <> E_MenuIdx.NONE Then '//ִ. + If Me.OpenedForm <> E_MenuIdx.NONE Then '//뭔가열려있다. ' lastmenu = Me.OpenedForm.ToString Dim curf As CForm = GetFormfromMenuIDX(Me.OpenedForm) curf.AcceptChanged() @@ -3029,14 +3042,14 @@ ENDSTAT: '// - Private Sub ȯ漳ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ȯ漳ToolStripMenuItem.Click + Private Sub 환경설정ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 환경설정ToolStripMenuItem.Click End Sub - Private Sub ToolStripMenuItem1_Click_1(sender As System.Object, e As System.EventArgs) Handles bt_Ͱ.Click - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2010.12.27 ߰ + Private Sub ToolStripMenuItem1_Click_1(sender As System.Object, e As System.EventArgs) Handles bt_데이터관리.Click + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2010.12.27 추가 If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If Frm_Import.ShowDialog() @@ -3045,20 +3058,20 @@ ENDSTAT: '// Dim Bak_DS As DS Dim Bak_DSR As DSR - Private Sub 񱳵͹ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 񱳵͹ToolStripMenuItem.Click + Private Sub 비교데이터백업ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 비교데이터백업ToolStripMenuItem.Click Bak_DS = New DS Bak_DSR = New DSR Bak_DS = Pub.DSET1.Copy Bak_DSR = Pub.DSETR1.Copy - MsgBox("Ͱ Ǿϴ" + vbCrLf + "񱳱 ֽϴ", MsgBoxStyle.Information, "Ȯ") + MsgBox("데이터가 백업되었습니다" + vbCrLf + "비교기능을 사용할 수 있습니다", MsgBoxStyle.Information, "확인") End Sub - Private Sub ͺToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ͺToolStripMenuItem.Click + Private Sub 데이터비교ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 데이터비교ToolStripMenuItem.Click If Bak_DS Is Nothing OrElse Bak_DSR Is Nothing Then - MsgBox(" Ͱ ϴ", MsgBoxStyle.Information, "Ȯ") + MsgBox("백업된 원본데이터가 없습니다", MsgBoxStyle.Information, "확인") Return End If @@ -3067,7 +3080,7 @@ ENDSTAT: '// Dim Line As New System.Text.StringBuilder Dim Lines As New System.Text.StringBuilder - '//̺ ͸ Ѵ. + '//모든테이블의 데이터를 비교한다. For i As Integer = 1 To Bak_DS.Tables.Count Dim Tb As DataTable = Bak_DS.Tables(i - 1) Dim TbS As DataTable = DSET1.Tables(i - 1) @@ -3087,7 +3100,7 @@ ENDSTAT: '// Next Dim LineChange As Boolean = False - '// ͸ ȮѴ. + '//각줄의 데이터를 확인한다. For r As Integer = 1 To Tb.Rows.Count Dim Change As Boolean = False @@ -3096,7 +3109,7 @@ ENDSTAT: '// Dim Dr As DataRow = Tb.Rows(r - 1) Dim Drs As DataRow = TbS.Rows(r - 1) - Line.Append("ٹȣ=" + r.ToString()) + Line.Append("줄번호=" + r.ToString()) For ic As Integer = 1 To Tb.Columns.Count Try @@ -3125,7 +3138,7 @@ ENDSTAT: '// Next - ''//̺ ͸ Ѵ. + ''//모든테이블의 데이터를 비교한다. 'For i As Integer = 1 To Bak_DSR.Tables.Count ' Dim Tb As DataTable = Bak_DSR.Tables(i - 1) ' Dim TbS As DataTable = DSETR1.Tables(i - 1) @@ -3145,7 +3158,7 @@ ENDSTAT: '// ' Next ' Dim LineChange As Boolean = False - ' '// ͸ ȮѴ. + ' '//각줄의 데이터를 확인한다. ' For r As Integer = 1 To Tb.Rows.Count ' Dim Change As Boolean = False @@ -3186,21 +3199,21 @@ ENDSTAT: '// Shell("explorer " + file, AppWinStyle.NormalFocus) End Sub - Private Sub üToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles üToolStripMenuItem.Click + Private Sub 순실체적ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 순실체적ToolStripMenuItem.Click Dim b As New System.Text.StringBuilder Dim i As Integer = 0 For Each dr As DS.tbl_zoneRow In DSET1.tbl_zone.Rows i += 1 - b.AppendLine("," + i.ToString() + ": (" + dr. + "),õp(" + dr.õp + "),ü(" + dr.ü + ")") + b.AppendLine("," + i.ToString() + ": 면적(" + dr.면적 + "),천장고p(" + dr.천장고p + "),순실체적(" + dr.순실체적 + ")") Next MsgBox(b.ToString) End Sub - Private Sub εToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles εToolStripMenuItem.Click + Private Sub 업로드양식ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 업로드양식ToolStripMenuItem.Click If Not Prj.Opened Then - Work_msg_timer(CLang.Ͼ) + Work_msg_timer(CLang.열린파일없음) Return End If @@ -3221,18 +3234,18 @@ ENDSTAT: '// End Sub - Private Sub űڵεToolStripMenuItem_Click(sender As Object, e As EventArgs) + Private Sub 신규코드업로드ToolStripMenuItem_Click(sender As Object, e As EventArgs) If Prj.Opened Then - Work_msg_timer("ִ ݾƾ մϴ", 10) + Work_msg_timer("열려있는 파일을 닫아야 사용 가능합니다", 10) Return End If - If MsgBox("ű ڵ带 Ͻðڽϱ?", MsgBoxStyle.Information Or MsgBoxStyle.YesNo, "Ȯ") = MsgBoxResult.Yes Then + If MsgBox("신규파일의 코드를 갱신하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.YesNo, "확인") = MsgBoxResult.Yes Then - 'ϴ if + '물어야하니 if Dim new_string As String - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 new_string = "\new" Else new_string = "\new1" @@ -3242,37 +3255,37 @@ ENDSTAT: '// End If End Sub - Private Sub űڵεToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles űڵεToolStripMenuItem.Click + Private Sub 신규코드업로드ToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles 신규코드업로드ToolStripMenuItem.Click If Prj.Opened Then - Work_msg_timer("ִ ݾּ", 10) + Work_msg_timer("열려있는 파일을 닫아주세요", 10) Return End If - 'ϴ if - If MsgBox("ϼҽ Ʈ Ͻðڽϱ?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "Ȯ") <> MsgBoxResult.Ok Then Return '//ok ϸ + '물어야하니 if + If MsgBox("새파일소스를 업데이트 하시겠습니까?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return '//ok 안하면 빠져나가기 Dim new_string As String - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 new_string = "\new" Else new_string = "\new1" End If Dim Srcfile As New System.IO.FileInfo(My.Application.Info.DirectoryPath & new_string) If Srcfile.Exists = False Then - MsgBox(" ʽϴ", MsgBoxStyle.Critical, "Ȯ") - Return '//ҿ + MsgBox("원본샘플파일이 존재하지않습니다", MsgBoxStyle.Critical, "확인") + Return '//복사할원본이 없으면 빠져나가기 End If - '///////////////////////////////////////////////////////////////////////////////////////////////////////////// 2011.03.16߰ - 'If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.09 ߰ + '/////////////////////////////////////////////////////////////////////////////////////////////////////////////저장파일 변조2011.03.16추가 + 'If Not (Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1") Then '//2011.03.09 추가 ' Dim Desbuf() As Byte = {} ' Dim Source() As Byte = My.Computer.FileSystem.ReadAllBytes(SD.FileName) ' Desbuf = DeCryptArea(Source, New Byte() {&HAC, &H29, &H55, &H42}) ' My.Computer.FileSystem.WriteAllBytes(SD.FileName, Desbuf, False) 'End If - '///////////////////////////////////////////////////////////////////////////////////////////////////////////// 2011.03.16߰ + '/////////////////////////////////////////////////////////////////////////////////////////////////////////////저장파일 변조2011.03.16추가 Me.Open_File(Srcfile.FullName, True) End Sub @@ -3303,7 +3316,7 @@ ENDSTAT: '// Frm_Export.Show() End Sub - Private Sub ǹToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ǹToolStripMenuItem.Click + Private Sub 건물개요ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 건물개요ToolStripMenuItem.Click End Sub @@ -3311,11 +3324,11 @@ ENDSTAT: '// End Sub - Private Sub ϷκͱͰToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ϷκͱͰToolStripMenuItem.Click - '//Ͱ + Private Sub 파일로부터기상데이터가져오기ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 파일로부터기상데이터가져오기ToolStripMenuItem.Click + '//기상데이터가져오기 If Prj.LoginTime = "" Then - MsgBox(" α ϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("먼저 로그인을 하세요", MsgBoxStyle.Information, "확인") Frm_Intro.Activate() Frm_Intro.tb_id.Focus() Return @@ -3324,10 +3337,10 @@ ENDSTAT: '// Dim Od As New OpenFileDialog 'Od.InitialDirectory = TemplateDir.FullName Od.FileName = Prj.FileName - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ - Od.Filter = "ø(*.TPL)|*.tpl|(*.*)|*.*" + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 + Od.Filter = "템플릿파일(*.TPL)|*.tpl|모든파일(*.*)|*.*" Else - Od.Filter = "(*.ECO)|*.eco|(*.*)|*.*" + Od.Filter = "데이터파일(*.ECO)|*.eco|모든파일(*.*)|*.*" End If Od.FilterIndex = 0 If Od.ShowDialog <> Windows.Forms.DialogResult.OK Then Return @@ -3336,12 +3349,12 @@ ENDSTAT: '// End Sub - Private Sub ϷκͿ뵵ʺȯToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) - '//뵵ʰ + Private Sub 파일로부터용도프로필변환ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) + '//용도프로필가져오기 If Prj.LoginTime = "" Then - MsgBox(" α ϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("먼저 로그인을 하세요", MsgBoxStyle.Information, "확인") Frm_Intro.Activate() Frm_Intro.tb_id.Focus() Return @@ -3350,10 +3363,10 @@ ENDSTAT: '// Dim Od As New OpenFileDialog 'Od.InitialDirectory = TemplateDir.FullName Od.FileName = Prj.FileName - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ - Od.Filter = "ø(*.TPL)|*.tpl|(*.*)|*.*" + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 + Od.Filter = "템플릿파일(*.TPL)|*.tpl|모든파일(*.*)|*.*" Else - Od.Filter = "(*.ECO)|*.eco|(*.*)|*.*" + Od.Filter = "데이터파일(*.ECO)|*.eco|모든파일(*.*)|*.*" End If Od.FilterIndex = 0 If Od.ShowDialog <> Windows.Forms.DialogResult.OK Then Return @@ -3371,10 +3384,10 @@ ENDSTAT: '// End Sub Private Sub FielCheckerToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles FielCheckerToolStripMenuItem.Click - '//Ͱ + '//기상데이터가져오기 If Prj.LoginTime = "" Then - MsgBox(" α ϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("먼저 로그인을 하세요", MsgBoxStyle.Information, "확인") Frm_Intro.Activate() Frm_Intro.tb_id.Focus() Return @@ -3383,10 +3396,10 @@ ENDSTAT: '// Dim Od As New OpenFileDialog 'Od.InitialDirectory = TemplateDir.FullName Od.FileName = Prj.FileName - If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 ߰ - Od.Filter = "ø(*.TPL)|*.tpl|(*.*)|*.*" + If Prj.UserAuthType = "ADMIN" OrElse Prj.UserAuthType = "BOTH" OrElse Prj.UserAuthType = "BOTH2" OrElse Prj.UserAuthType = "BOTH1" Then '//2011.03.09 추가 + Od.Filter = "템플릿파일(*.TPL)|*.tpl|모든파일(*.*)|*.*" Else - Od.Filter = "(*.ECO)|*.eco|(*.*)|*.*" + Od.Filter = "데이터파일(*.ECO)|*.eco|모든파일(*.*)|*.*" End If Od.FilterIndex = 0 If Od.ShowDialog <> Windows.Forms.DialogResult.OK Then Return @@ -3401,13 +3414,13 @@ ENDSTAT: '// Private Sub ImportToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles btImport.Click If Prj.Opened = False Then - MsgBox(" ҷ ٽ õϼ", MsgBoxStyle.Information, "Ȯ") + MsgBox("파일을 불러온 후 다시 시도하세요", MsgBoxStyle.Information, "확인") Return End If Dim od As New OpenFileDialog - od.Filter = "xml file|*.xml|(*.*)|*.*" + od.Filter = "xml file|*.xml|모든파일(*.*)|*.*" od.RestoreDirectory = True If od.ShowDialog <> Windows.Forms.DialogResult.OK Then Return @@ -3428,12 +3441,12 @@ ENDSTAT: '// tempds.AcceptChanges() Dim sb As New System.Text.StringBuilder() - sb.AppendLine("--- ߰ ---") + sb.AppendLine("--- 추가된 정보 ---") - '// ̺ ⺻ Ѵ + '//가져온 테이블을 기본 정보에서 삭제한다 For Each tb As DataTable In tempds.Tables - '//ڷᰡ ̺ ó ʴ´ + '//자료가 없는 테이블은 처리하지 않는다 If tb.Rows.Count < 1 Then Continue For Dim tablename As String = tb.TableName.ToLower() @@ -3445,39 +3458,521 @@ ENDSTAT: '// sb.AppendLine("[" + tb.TableName + "] " + tb.Rows.Count.ToString() + " Lines") - '// + '//값의 공백제거 For Each dr As DataRow In tb.Rows For Each dc As DataColumn In tb.Columns If dr(dc.ColumnName) Is DBNull.Value OrElse dc.ReadOnly Then Else - dr(dc.ColumnName) = dr(dc.ColumnName).ToString().Trim() '// ڵ + dr(dc.ColumnName) = dr(dc.ColumnName).ToString().Trim() '//공백 자동 제거 End If Next dr.EndEdit() dr.AcceptChanges() Next - '//ڷ + '//기존자료삭제 DSET1.Tables(tb.TableName).Clear() DSET1.Tables(tb.TableName).AcceptChanges() - '// + '//현재 정보로 저장 DSET1.Tables(tb.TableName).Merge(tb) Next DSET1.AcceptChanges() - FixData(False) '//ͺ - Calc.validation() '//null - Menu_ǹ() + FixData(False) '//데이터보정 + Calc.validation() '//null보정 + Menu_건물개요() Me.RefreshMenuList("") MsgboxI(sb.ToString()) Catch ex As Exception - MsgboxE("ܺ \n" + ex.Message) + MsgboxE("외부파일 가져오기 실패\n" + ex.Message) End Try End Sub + + Private Function func_calc(Optional msg As String = "계산중", Optional silent As Boolean = False) As Boolean + + Dim ST As Date = Now + Dim LogSB As New System.Text.StringBuilder + Dim Result As Boolean = Calc.Start(msg, Calculator.ECalc.All, LogSB, 0) + Dim Ts As TimeSpan = Now - ST '//계산경과시간을 표시해준다. + Dim calc_ok As Integer = 0 + If Result Then '//파라미터 True 라면 소요량이 추가로 게산된다. + Calc.Summary.All() + If LogSB.ToString <> "" Then + '//에러기록이 발생했다면 저장후에 보여주도록한다. + Dim logfile As New System.IO.FileInfo(My.Application.Info.DirectoryPath & "\log\calc_okmsg_" + Now.ToString("yyMMddHHmmss") + ".txt") + If logfile.Directory.Exists = False Then logfile.Directory.Create() + My.Computer.FileSystem.WriteAllText(logfile.FullName, LogSB.ToString, False) + Shell("notepad " + logfile.FullName, AppWinStyle.NormalFocus) + Return False + Else + If silent = False Then + MsgBox("계산작업이 완료되었습니다." & vbCrLf & "경과시간:" + Ts.ToString, MsgBoxStyle.Information, "완료") + End If + + calc_ok = 1 '================================2014.04.17 계산이 완료되면 그래프를 보여줌 + Return True + End If + Else + If LogSB.ToString <> "" Then + Dim logfile As New System.IO.FileInfo(My.Application.Info.DirectoryPath & "\log\calc_errmsg_" + Now.ToString("yyMMddHHmmss") + ".txt") + If logfile.Directory.Exists = False Then logfile.Directory.Create() + My.Computer.FileSystem.WriteAllText(logfile.FullName, LogSB.ToString, False) + Shell("notepad " + logfile.FullName, AppWinStyle.NormalFocus) + End If + + MsgBox("계산작업이 중단되었습니다." & vbCrLf & "경과시간:" + Ts.ToString, MsgBoxStyle.Critical, "완료(오류발생)") + Return False + End If + + + End Function + + Private Sub 일괄계산ToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles 일괄계산ToolStripMenuItem.Click + Dim f As New frm_Macro() + If f.ShowDialog() = Windows.Forms.DialogResult.OK Then + If MsgBox("run?", MsgBoxStyle.Information Or MsgBoxStyle.OkCancel, "확인") <> MsgBoxResult.Ok Then Return '//ok 안하면 빠져나가기 + + Dim path As String = f.tbPath.Text + Dim di As New System.IO.DirectoryInfo(path) + Dim files() As System.IO.FileInfo + + files = di.GetFiles("*.tpl", IO.SearchOption.TopDirectoryOnly) + + + Dim savefile As String = System.IO.Path.Combine(path, "report.tab") + + + prb1.Value = 0 + prb1.Maximum = files.Length + Dim ermsg As New System.Text.StringBuilder + Dim first As Boolean = True + Dim report As New List(Of String()) + + Dim title1item As New List(Of String) + title1item.AddRange(New String() {"파일명", "계산"}) + For i As Integer = 1 To 21 + title1item.Add("건축부문 평가항목") + Next + + For i As Integer = 1 To 16 + title1item.Add("기계부문 평가항목") + Next + + + For i As Integer = 1 To 7 + title1item.Add("신재생 및 열병합 부문 평가항목") + Next + + For i As Integer = 1 To 10 + title1item.Add("평가결과") + Next + report.Add(title1item.ToArray()) + + '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + Dim title2item As New List(Of String) + title2item.AddRange(New String() {"--", "--", "벽체면적", "창및문면적", "창및문면적비"}) + For i As Integer = 1 To 9 + title2item.Add("창 열관류율") + Next + + For i As Integer = 1 To 9 + title2item.Add("일사에너지투과율") + Next + + + For i As Integer = 1 To 7 + title2item.Add("온열원설비") + Next + + For i As Integer = 1 To 6 + title2item.Add("냉열원설비") + Next + + For i As Integer = 1 To 3 + title2item.Add("급탕설비") + Next + For i As Integer = 1 To 7 + title2item.Add("태양광") + Next + For i As Integer = 1 To 5 + title2item.Add("에너지생산량") + Next + For i As Integer = 1 To 5 + title2item.Add("1차에너지생산량") + Next + report.Add(title2item.ToArray()) + + Dim title3item As New List(Of String) + title3item.AddRange(New String() {"--", "--", "--", "--", "--"}) + title3item.Add("평균") + title3item.Add("남") + title3item.Add("남동") + title3item.Add("동") + title3item.Add("북동") + title3item.Add("북") + title3item.Add("북서") + title3item.Add("서") + title3item.Add("남서") + title3item.Add("평균") + title3item.Add("남") + title3item.Add("남동") + title3item.Add("동") + title3item.Add("북동") + title3item.Add("북") + title3item.Add("북서") + title3item.Add("서") + title3item.Add("남서") + title3item.Add("보일러방식") + title3item.Add("지역난방방식") + title3item.Add("난방용량") + title3item.Add("히트펌프난방COP(7도)") + title3item.Add("히트펌프난방COP(-15도)") + title3item.Add("실내외기의 최대배관길이") + title3item.Add("시스템 종류") + title3item.Add("압축식 냉동기 종류") + title3item.Add("냉동기 압축방식") + title3item.Add("왕복동/스크롤압축기 제어방식") + title3item.Add("열생산연결방식") + title3item.Add("냉동기 설비시스템") + title3item.Add("제어방식") + title3item.Add("축열탱크방식") + title3item.Add("축열탱크 용량") + title3item.Add("펌프 정격동력") + title3item.Add("용량") + title3item.Add("효율") + title3item.Add("모듈면적") + title3item.Add("모듈기울기") + title3item.Add("모듈방위") + title3item.Add("모듈종류") + title3item.Add("모듈적용타입") + title3item.Add("난방") + title3item.Add("냉방") + title3item.Add("급탕") + title3item.Add("조명") + title3item.Add("환기") + title3item.Add("난방") + title3item.Add("냉방") + title3item.Add("급탕") + title3item.Add("조명") + title3item.Add("환기") + report.Add(title3item.ToArray()) + + For Each fi As System.IO.FileInfo In files + If prb1.Value < prb1.Maximum Then prb1.Value += 1 + + Dim dataitem As New List(Of String) + dataitem.Add(fi.Name) '(0) = fi.Name + '//close file + + '//open file + Dim retopen As String = Open_File(fi.FullName, False, True, True) + + '//calc + Dim ret As Boolean = False + + Dim msg As String = String.Format("계산중({0}/{1})" + vbCrLf + "{2}" + vbCrLf, prb1.Value, prb1.Maximum, fi.Name) + If String.IsNullOrWhiteSpace(retopen) = False Then ret = func_calc(msg, True) + + '//get message + + + Dim xlsfile As String = fi.FullName.Replace(".tplx", ".xls").Replace(".tpl", ".xls") + Dim fxls As New Frm_Upload(xlsfile, True) + Dim drlt = fxls.ShowDialog() + If drlt = DialogResult.OK Then + ermsg.AppendLine("OK" + vbTab + fi.FullName) + dataitem.Add("OK") + Else + ermsg.AppendLine("NG" + vbTab + fi.FullName) + dataitem.Add("NG") + End If + + 'If lbl_user.Text.ToLower = "[arin]" Then '//160327 + ' Shell("explorer " + Chr(&H22) + sd.FileName + Chr(&H22), AppWinStyle.NormalFocus) + 'End If + + '//벽체면적 + + Dim WallArea As Decimal = 0 + Dim WindowArea As Decimal = 0 + Dim 열관류율합 As Double + Dim 존수 As Integer = 0 + Dim 비연결 As Integer = 0 + Dim 비연결존 As String = "" + Dim 방위목록() As String = New String() {"수평", "남", "남동", "동", "북동", "북", "북서", "서", "남서"} + For Each 방위 As String In 방위목록 + Dim filter As String = "code <> '0' and (건축부위방식='외벽' or 건축부위방식 ='외부창' or 건축부위방식='내벽' or 건축부위방식 ='내부창')" + If 방위 <> "" Then filter += " and 방위='" + 방위 + "'" + Dim 면데이터() As DS.tbl_myounRow = DSET1.tbl_myoun.Select(filter) + Dim 열관없는갯수 As Integer = 0 + Try + For Each Dr입력면 As DS.tbl_myounRow In 면데이터 + Dim 열관 As Single = 0 + + If Dr입력면.열관류율2 = "0" OrElse Dr입력면.열관류율2 = "" Then + 열관없는갯수 += 1 + End If + + Dim Dryk1 As DS.tbl_ykRow = Nothing + If Dr입력면.열관류율2 <> "0" Then ' + Dryk1 = DSET1.tbl_yk.Select("code='" & Dr입력면.열관류율2 & "'")(0) + 열관 = TOSG(Dryk1("열관류율").ToString) + Else '//선택안된경우 + 열관 = TOSG(Dr입력면.열관류율) + End If + + Dim 존코드 As String = Dr입력면.존분류 + Dim dr존() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code='" + 존코드 + "'") + If dr존.GetUpperBound(0) = -1 Then + 존수 = 1 + Else + If IsNumeric(dr존(0).입력존의수) Then + 존수 = CInt(dr존(0).입력존의수) + Else + 존수 = 1 + End If + End If + + Select Case Dr입력면.건축부위방식 + Case "외벽" + 열관류율합 += 열관 * 1 * TOSG(Dr입력면.건축부위면적) * 존수 + Case "내벽" + 열관류율합 += 열관 * 0.7 * TOSG(Dr입력면.건축부위면적) * 존수 + Case "외부창" + 열관류율합 += 열관 * 1 * TOSG(Dr입력면.건축부위면적) * 존수 + Case "내부창" + 열관류율합 += 열관 * 0.8 * TOSG(Dr입력면.건축부위면적) * 존수 + End Select + + '// Debug.WriteLine(Dr입력면.열관류율2 + "/" + Dr입력면.code + "/" + 열관.ToString() + "/" + Dr입력면.설명 + "/" + Dr입력면.건축부위면적.ToCharArray() + "/" + 존수.ToString() + "/" + 열관류율합.ToString(), True) + + If Dryk1 Is Nothing Then + 비연결 += 1 + + '//사용한 존 + If dr존 Is Nothing Then + Else + 비연결존 = dr존(0).설명 + "의 " + Dr입력면.설명 + End If + + + '//열관류 선택안된경우 + Select Case Dr입력면.건축부위방식 + Case "외벽" + If Dr입력면.방위 <> "수평" AndAlso Dr입력면.방위 <> "일사없음" AndAlso Dr입력면.방위 <> "(없음)" Then + WallArea = WallArea + TOSG(Dr입력면.건축부위면적) * 존수 + End If + Case "내벽" ' + WallArea = WallArea + TOSG(Dr입력면.건축부위면적) * 존수 + Case "외부창" + If Dr입력면.방위 <> "수평" AndAlso Dr입력면.방위 <> "일사없음" AndAlso Dr입력면.방위 <> "(없음)" Then + WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수 + End If + Case "내부창" + WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수 + End Select + + Else + + Dim 면형태이름 As String = Get_CName("1088", Dryk1.면형태) + Select Case 면형태이름 + Case "외벽(벽체)" + WallArea = WallArea + TOSG(Dr입력면.건축부위면적) * 존수 + Case "내벽(벽체)" + WallArea = WallArea + TOSG(Dr입력면.건축부위면적) * 존수 + Case "외부창" + If Dr입력면.방위 <> "수평" AndAlso Dr입력면.방위 <> "일사없음" AndAlso Dr입력면.방위 <> "(없음)" Then + WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수 + End If + Case "내부창" + WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수 + End Select + End If + + 'Debug.WriteLine(Dr입력면.code + ":wall=" + WallArea.ToString() + ",win=" + WindowArea.ToString()) + Next + 'For Each Dr입력면 As DS.tbl_myounRow In DSET1.tbl_myoun.Select("건축부위방식='외부창'") + ' WindowArea = WindowArea + TOSG(Dr입력면.건축부위면적) * 존수 + 'Next + Catch ex As Exception + + End Try + Next + + dataitem.Add(WallArea.ToString()) + dataitem.Add(WindowArea.ToString()) + + Dim 창및문면적비 As Decimal + Try + 창및문면적비 = WindowArea / (WallArea + WindowArea) * 100 + Catch ex As Exception + 창및문면적비 = 0 '//게삭과정에 오류가낫다면 0처리합니다. + End Try + If WallArea + WindowArea = 0 Then + dataitem.Add("0 %") + Else + dataitem.Add(창및문면적비.ToString("N1") & " %") '//N1은 소수점 1자리 N0ㄴ소수점 없음 N다음에 숫자가 소수점 자릿수에요 + End If + + '//창 열관류율 평균 W/㎡•K 면적가중평균 + Dim 외벽열관류율_평균 As Decimal + Dim 외벽열관류율_남 As Decimal + Dim 외벽열관류율_남동 As Decimal + Dim 외벽열관류율_동 As Decimal + Dim 외벽열관류율_북동 As Decimal + Dim 외벽열관류율_북 As Decimal + Dim 외벽열관류율_북서 As Decimal + Dim 외벽열관류율_서 As Decimal + Dim 외벽열관류율_남서 As Decimal + + Dim 창열관류율_평균 As Decimal + Dim 창열관류율_남 As Decimal + Dim 창열관류율_남동 As Decimal + Dim 창열관류율_동 As Decimal + Dim 창열관류율_북동 As Decimal + Dim 창열관류율_북 As Decimal + Dim 창열관류율_북서 As Decimal + Dim 창열관류율_서 As Decimal + Dim 창열관류율_남서 As Decimal + + Dim 일사에너지투과율_평균 As Decimal + Dim 일사에너지투과율_남 As Decimal + Dim 일사에너지투과율_남동 As Decimal + Dim 일사에너지투과율_동 As Decimal + Dim 일사에너지투과율_북동 As Decimal + Dim 일사에너지투과율_북 As Decimal + Dim 일사에너지투과율_북서 As Decimal + Dim 일사에너지투과율_서 As Decimal + Dim 일사에너지투과율_남서 As Decimal + + Dim DsReport As New DSR + Pub.항목별평가결과(DsReport) + Dim drYK As DSR.Pyonga_YKRow = DsReport.Pyonga_YK.Rows(0) + + calc_창및문면적비(창및문면적비, 외벽열관류율_평균, 창열관류율_평균, 일사에너지투과율_평균) + calc_창및문면적비(창및문면적비, 외벽열관류율_남, 창열관류율_남, 일사에너지투과율_남, "남") + calc_창및문면적비(창및문면적비, 외벽열관류율_남동, 창열관류율_남동, 일사에너지투과율_남동, "남동") + calc_창및문면적비(창및문면적비, 외벽열관류율_동, 창열관류율_동, 일사에너지투과율_동, "동") + calc_창및문면적비(창및문면적비, 외벽열관류율_북동, 창열관류율_북동, 일사에너지투과율_북동, "북동") + calc_창및문면적비(창및문면적비, 외벽열관류율_북, 창열관류율_북, 일사에너지투과율_북, "북") + calc_창및문면적비(창및문면적비, 외벽열관류율_북서, 창열관류율_북서, 일사에너지투과율_북서, "북서") + calc_창및문면적비(창및문면적비, 외벽열관류율_서, 창열관류율_서, 일사에너지투과율_서, "서") + calc_창및문면적비(창및문면적비, 외벽열관류율_남서, 창열관류율_남서, 일사에너지투과율_남서, "남서") + + + dataitem.Add(창열관류율_평균.ToString("N3")) + dataitem.Add(창열관류율_남.ToString("N3")) + dataitem.Add(창열관류율_남동.ToString("N3")) + dataitem.Add(창열관류율_동.ToString("N3")) + dataitem.Add(창열관류율_북동.ToString("N3")) + dataitem.Add(창열관류율_북.ToString("N3")) + dataitem.Add(창열관류율_북서.ToString("N3")) + dataitem.Add(창열관류율_서.ToString("N3")) + dataitem.Add(창열관류율_남서.ToString("N3")) + + + dataitem.Add(일사에너지투과율_평균.ToString("N3")) + dataitem.Add(일사에너지투과율_남.ToString("N3")) + dataitem.Add(일사에너지투과율_남동.ToString("N3")) + dataitem.Add(일사에너지투과율_동.ToString("N3")) + dataitem.Add(일사에너지투과율_북동.ToString("N3")) + dataitem.Add(일사에너지투과율_북.ToString("N3")) + dataitem.Add(일사에너지투과율_북서.ToString("N3")) + dataitem.Add(일사에너지투과율_서.ToString("N3")) + dataitem.Add(일사에너지투과율_남서.ToString("N3")) + + report.Add(dataitem.ToArray()) + + + '//save to csv + '//엑셀내보내기기능 추가 + 'Dim content As String = fi.Name + 'If String.IsNullOrWhiteSpace(retopen) = True Then + ' content += vbTab + "open fail" + 'ElseIf ret = False Then + ' content += vbTab + "fail" + 'Else + ' content += vbTab + Makemacrostring() + 'End If + 'content += vbCrLf + + 'If first = False Then + ' System.IO.File.AppendAllText(savefile, content, System.Text.Encoding.Default) + 'Else + ' System.IO.File.WriteAllText(savefile, "파일" + vbTab + "오류" + vbTab + "구분" + vbTab + "신재생" + vbTab + "난방" + vbTab + "냉방" + vbTab + "급탕" + vbTab + "조명" + vbTab + "환기" + vbTab + "합계" + vbCrLf, System.Text.Encoding.Default) + ' System.IO.File.AppendAllText(savefile, content, System.Text.Encoding.Default) + ' first = False + 'End If + + Application.DoEvents() + + Next + + closemessagewindow() + + Dim reportbuffer As New System.Text.StringBuilder + + Dim maxlin As Integer = 0 + For Each item() As String In report + 'reportbuffer.Append(vbTab) + 'reportbuffer.Append(item(0)) '//filename + If item.Length > maxlin Then + maxlin = item.Length + End If + Next + + For r As Integer = 0 To maxlin - 1 + For Each item() As String In report + reportbuffer.Append(vbTab) + + If r < item.Length Then + reportbuffer.Append(item(r)) '//filename + Else + reportbuffer.Append("") + + End If + + Next + reportbuffer.AppendLine() + Next + + '//save to csv + '//엑셀내보내기기능 추가 + 'Dim content As String = fi.Name + 'If String.IsNullOrWhiteSpace(retopen) = True Then + ' content += vbTab + "open fail" + 'ElseIf ret = False Then + ' content += vbTab + "fail" + 'Else + ' content += vbTab + Makemacrostring() + 'End If + 'content += vbCrLf + + 'If first = False Then + ' System.IO.File.AppendAllText(savefile, content, System.Text.Encoding.Default) + 'Else + ' System.IO.File.WriteAllText(savefile, "파일" + vbTab + "오류" + vbTab + "구분" + vbTab + "신재생" + vbTab + "난방" + vbTab + "냉방" + vbTab + "급탕" + vbTab + "조명" + vbTab + "환기" + vbTab + "합계" + vbCrLf, System.Text.Encoding.Default) + ' System.IO.File.AppendAllText(savefile, content, System.Text.Encoding.Default) + ' first = False + 'End If + + + + Dim rptfile As String = System.IO.Path.Combine(path, "report.tab") + System.IO.File.WriteAllText(rptfile, reportbuffer.ToString(), System.Text.Encoding.Default) + + + Dim logfile As String = System.IO.Path.Combine(path, "log.txt") + System.IO.File.WriteAllText(logfile, ermsg.ToString(), System.Text.Encoding.Default) + + MsgBox("end") + + End If + End Sub End Class \ No newline at end of file diff --git a/ArinWarev1/Module/Pub.vb b/ArinWarev1/Module/Pub.vb index 4fe2c37..01916db 100644 --- a/ArinWarev1/Module/Pub.vb +++ b/ArinWarev1/Module/Pub.vb @@ -84,15 +84,772 @@ End If End Sub + Public Sub 항목별평가결과(ByRef DSR As Eco2Ar.DSR) + Dim NDr As DSR.Pyonga_YKRow = DSR.Pyonga_YK.NewPyonga_YKRow + + '//기준(*)데이터가없는경우에는 1번째데이터를 쓰도록한다. + Dim 외벽벽체찾음 As Boolean = False + Dim 외벽지붕찾음 As Boolean = False + Dim 외벽바닥찾음 As Boolean = False + + For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") + Dim gcode As String = dr.면형태.ToString() + Dim gname As String = Get_CName("1088", gcode) + + If gname = "외벽(벽체)" OrElse gname = "내벽(벽체)" Then + If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기 + NDr.벽체값 = dr.열관류율 + + Dim 최대저항값 As Decimal = 0 + '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 + For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") + If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. + 외벽벽체찾음 = True + NDr.벽체종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" + 최대저항값 = CDec(ddr.열저항) + End If + Next + End If + ElseIf gname = "외벽(지붕)" OrElse gname = "내벽(지붕)" Then + If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기 + NDr.지붕값 = dr.열관류율 + + Dim 최대저항값 As Decimal = 0 + '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 + For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") + If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. + 외벽지붕찾음 = True + NDr.지붕종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" + 최대저항값 = CDec(ddr.열저항) + End If + Next + End If + ElseIf gname = "외벽(바닥)" OrElse gname = "내벽(바닥)" Then + If dr.설명.Substring(0, 1) = "*" Then '//기준데이터가져오기 + NDr.바닥값 = dr.열관류율 + + Dim 최대저항값 As Decimal = 0 + '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 + For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") + If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. + 외벽바닥찾음 = True + NDr.바닥종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" + 최대저항값 = CDec(ddr.열저항) + End If + Next + End If + End If + Next + + If Not 외벽벽체찾음 Then + For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") + Dim gcode As String = dr.면형태.ToString() + Dim gname As String = Get_CName("1088", gcode) + If gname = "외벽(벽체)" OrElse gname = "내벽(벽체)" Then + NDr.벽체값 = dr.열관류율 + Dim 최대저항값 As Decimal = 0 + '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 + For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") + If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. + 외벽벽체찾음 = True + NDr.벽체종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" + 최대저항값 = CDec(ddr.열저항) + End If + Next + If 외벽벽체찾음 Then Exit For + End If + Next + If Not 외벽벽체찾음 Then + NDr.벽체종류 = "" + NDr.벽체값 = 0 + End If + End If + + If Not 외벽지붕찾음 Then + For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") + Dim gcode As String = dr.면형태.ToString() + Dim gname As String = Get_CName("1088", gcode) + If gname = "외벽(지붕)" OrElse gname = "내벽(지붕)" Then + NDr.지붕값 = dr.열관류율 + Dim 최대저항값 As Decimal = 0 + '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 + For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") + If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. + 외벽지붕찾음 = True + NDr.지붕종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" + 최대저항값 = CDec(ddr.열저항) + End If + Next + If 외벽지붕찾음 Then Exit For + End If + Next + If Not 외벽지붕찾음 Then + NDr.지붕종류 = "" + NDr.지붕값 = 0 + End If + End If + + + If Not 외벽바닥찾음 Then + For Each dr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") + Dim gcode As String = dr.면형태.ToString() + Dim gname As String = Get_CName("1088", gcode) + If gname = "외벽(바닥)" OrElse gname = "내벽(바닥)" Then + NDr.바닥값 = dr.열관류율 + Dim 최대저항값 As Decimal = 0 + '//세부데이터글가져온다 이중열저항이 가장큰것을 가져아야한다 + For Each ddr As DS.tbl_ykdetailRow In DSET1.tbl_ykdetail.Select("code <> '0' and pcode = '" + dr.code + "'") + If CDec(ddr.열저항) > 최대저항값 Then '//최대저항값의설명을 가져와야한다. + 외벽바닥찾음 = True + NDr.바닥종류 = ddr.설명 + Space(1) + ddr.두께 + "mm" + 최대저항값 = CDec(ddr.열저항) + End If + Next + If 외벽바닥찾음 Then Exit For + End If + Next + If Not 외벽바닥찾음 Then + NDr.바닥종류 = "" + NDr.바닥값 = 0 + End If + End If + + '//지열설비정보확인 + Dim Sum_지열히트펌프용량_난방 As Single = 0 + Dim Sum_지열히트펌프용량_냉방 As Single = 0 + Dim Max_난방 As Single = 0 + Dim Max_냉방 As Single = 0 + Dim JDROW() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='지열'", "설명") + If JDROW.GetUpperBound(0) = -1 Then '//지열데이터가없는경우엔 빈값처리 + NDr.지열히트펌프용량냉방 = "" + NDr.지열히트펌프용량 = "" + NDr.지열비고 = "" + NDr.지열난방COP = "" + NDr.지열냉방COP = "" + Else '//데이터가있다면 1번째 데이터를 이용한다. + + + Dim Max_Row_난방 As DS.tbl_newRow = Nothing + Dim MAx_Row_냉방 As DS.tbl_newRow = Nothing + + NDr.지열비고 = JDROW(0).지열비고 + + For Each jdrowrow As DS.tbl_newRow In JDROW + + Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & jdrowrow.code.ToString & "'").GetUpperBound(0) + 1) + Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & jdrowrow.code.ToString & "'").GetUpperBound(0) + 1) + + Dim 난방값 As String = jdrowrow.열성능비난방 + Dim 냉방값 As String = jdrowrow.열성능비냉방 + + If 난방연결수 > 0 AndAlso 난방값 <> "" AndAlso IsNumeric(난방값) AndAlso 난방값 <> "0" Then + Sum_지열히트펌프용량_난방 += jdrowrow.지열히트펌프용량 + If TOSG(jdrowrow.지열히트펌프용량) > Max_난방 Then + Max_난방 = TOSG(jdrowrow.지열히트펌프용량) + Max_Row_난방 = jdrowrow + End If + End If + + If 냉방연결수 > 0 AndAlso 냉방값 <> "" AndAlso IsNumeric(냉방값) AndAlso 냉방값 <> "0" Then + Sum_지열히트펌프용량_냉방 += jdrowrow.지열히트펌프용량 + If TOSG(jdrowrow.지열히트펌프용량) > Max_냉방 Then + Max_냉방 = TOSG(jdrowrow.지열히트펌프용량) + MAx_Row_냉방 = jdrowrow + End If + End If + Next + + + NDr.지열히트펌프용량냉방 = Sum_지열히트펌프용량_냉방.ToString() + NDr.지열히트펌프용량 = Sum_지열히트펌프용량_난방.ToString() + + 'NDr.지열히트펌프용량냉방 = Sum_지열히트펌프용량_냉방.ToString() + "(" + Max_냉방.ToString() + ")" + + 'If Sum_지열히트펌프용량_난방 > 0 Then + ' NDr.지열히트펌프용량 = Sum_지열히트펌프용량_난방.ToString() + ' 'NDr.지열히트펌프용량 = "난방: " + Sum_지열히트펌프용량_난방.ToString() + "(" + Max_난방.ToString() + ")" + 'Else + ' NDr.지열히트펌프용량 = "" + 'End If + + 'If Sum_지열히트펌프용량_냉방 > 0 Then + ' NDr.지열히트펌프용량 += " / 냉방: " + NDr.지열히트펌프용량냉방 + 'End If + + If Max_난방 <> 0 Then + NDr.지열난방COP = Max_Row_난방.열성능비난방 + Else + NDr.지열난방COP = "" + End If + If Max_냉방 <> 0 Then + NDr.지열냉방COP = MAx_Row_냉방.열성능비냉방 + Else + NDr.지열냉방COP = "" + End If + End If + + '//###################### + '//13-12-08 + '//###################### + '//태양열시스템 + Dim JDROW2() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='태양열'", "설명") + Dim Max_태양열면적 As Single = -999 + Dim Max_집열기유형 As String = "" + Dim Max_집열판방위 As String = "" + Dim Sum_태양열면적 As Single = 0 + For Each rowsun As DS.tbl_newRow In JDROW2 + + Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1) + Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1) + + If 난방연결수 > 0 OrElse 냉방연결수 > 0 Then + + Dim 태양면적 As String = rowsun.집열판면적 + If 태양면적 <> "" AndAlso IsNumeric(태양면적) AndAlso 태양면적 <> "0" Then + Sum_태양열면적 += TOSG(태양면적) + If TOSG(태양면적) > Max_태양열면적 Then + Max_태양열면적 = TOSG(태양면적) + Max_집열기유형 = rowsun.집열기유형 + Max_집열판방위 = rowsun.집열판방위 + End If + End If + + End If + + Next + If Sum_태양열면적 > 0 Then + NDr.태양열집열판면적 = Sum_태양열면적.ToString() + "(" + Max_태양열면적.ToString + ")" + NDr.태양열집열기유형 = Max_집열기유형 + NDr.태양열집열판방위 = Max_집열판방위 + Else + NDr.태양열집열판면적 = "" + NDr.태양열집열기유형 = "" + NDr.태양열집열판방위 = "" + End If + + + + '//태양광시스템 + Dim JDROW3() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='태양광'", "설명") + Dim Max_태양광면적 As Single = -999 + Dim Max_태양광종류 As String = "" + Dim Max_태양광방위 As String = "" + Dim Max_태양광기울기 As String = "" + Dim Max_태양광적용타입 As String = "" + Dim Sum_태양광면적 As Single = 0 + + For Each rowsun As DS.tbl_newRow In JDROW3 + Dim 태양면적 As String = rowsun.태양광모듈면적 + If 태양면적 <> "" AndAlso IsNumeric(태양면적) AndAlso 태양면적 <> "0" Then + Sum_태양광면적 += TOSG(태양면적) + If TOSG(태양면적) > Max_태양광면적 Then + Max_태양광면적 = TOSG(태양면적) + Max_태양광종류 = rowsun.태양광모듈종류 + Max_태양광방위 = rowsun.태양광모듈방위 + Max_태양광기울기 = rowsun.태양광모듈기울기 + Max_태양광적용타입 = rowsun.태양광모듈적용타입 + End If + End If + Next + If Sum_태양광면적 > 0 Then + NDr.태양광모듈면적 = Sum_태양광면적.ToString() '+ "(" + Max_태양광면적.ToString + ")" + NDr.태양광모듈종류 = Max_태양광종류 + NDr.태양광모듈방위 = Max_태양광방위 + NDr.태양광모듈기울기 = Max_태양광기울기 + NDr.태양광모듈적용타입 = Max_태양광적용타입 + If NDr.태양광모듈방위 = "(없음)" Then + NDr.태양광모듈방위 = "" + End If + Else + NDr.태양광모듈면적 = "" + NDr.태양광모듈종류 = "" + NDr.태양광모듈방위 = "" + NDr.태양광모듈기울기 = "" + NDr.태양광모듈적용타입 = "" + End If + + + '//열병합시스템 + Dim JDROW4() As DS.tbl_newRow = DSET1.tbl_new.Select("code <> '0' and 기기종류='열병합'", "설명") + Dim Max_열병합능력 As Single = -999 + Dim Max_열병합생산효율 As String = "" + Dim Max_열병합발전효율 As String = "" + Dim Max_열병합가동연료 As String = "" + Dim Sum_열병합능력 As Single = 0 + + For Each rowsun As DS.tbl_newRow In JDROW4 + + + Dim 난방연결수 As Integer = (DSET1.tbl_nanbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1) + Dim 냉방연결수 As Integer = (DSET1.tbl_nangbangkiki.Select("신재생연결여부='시스템연결' and 연결된시스템='" & rowsun.code.ToString & "'").GetUpperBound(0) + 1) + + If 난방연결수 > 0 OrElse 냉방연결수 > 0 Then + Dim 값 As String = rowsun.열생산능력 + If 값 <> "" AndAlso IsNumeric(값) AndAlso 값 <> "0" Then + Sum_열병합능력 += TOSG(값) + If TOSG(값) > Max_열병합능력 Then + Max_열병합능력 = TOSG(값) + Max_열병합생산효율 = rowsun.열생산효율.ToString + Max_열병합발전효율 = rowsun.발전효율.ToString + Max_열병합가동연료 = rowsun.가동연료 + End If + End If + End If + Next + + If Sum_열병합능력 > 0 Then + NDr.열병합열생산능력 = Sum_열병합능력.ToString() + "(" + Max_열병합능력.ToString + ")" + NDr.열병합열생산효율 = Max_열병합생산효율 + NDr.열병합발전효율 = Max_열병합발전효율 + NDr.열병합가동연료 = Max_열병합가동연료 + Else + NDr.열병합열생산능력 = "" + NDr.열병합열생산효율 = "" + NDr.열병합발전효율 = "" + NDr.열병합가동연료 = "" + End If + + '//창호종류 및 창호값확인 + Dim 창호종류찾음 As Boolean = False + + + Dim 창호그룹 As New Dictionary(Of String, Double) + + For Each drmyoun As DS.tbl_myounRow In DSET1.tbl_myoun.Select("code <> '0'") + If drmyoun.열관류율2 = "" OrElse drmyoun.열관류율2 = "0" Then Continue For + + For Each cdr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code= '" + drmyoun.열관류율2 + "'") + + + Dim 면코드 As String = cdr.면형태 + If 면코드 = "" Then Continue For + Dim 면이름 As String = Get_CName("1088", 면코드) + If 면이름 = "" Then Continue For + If 면이름.IndexOf("외부창") <> -1 Then '//이름에 외부창이잇는것을 찾음 + + If Not 창호그룹.ContainsKey(cdr.code) Then + 창호그룹.Add(cdr.code, TOSG(drmyoun.건축부위면적)) + Else + 창호그룹.Item(cdr.code) = 창호그룹.Item(cdr.code) + TOSG(drmyoun.건축부위면적) + End If + + End If + Next + + Next + + Dim 최대면적 As Double = 0 + Dim 최대면적면코드 As String = "" + For Each item As System.Collections.Generic.KeyValuePair(Of String, Double) In 창호그룹 + If item.Value > 최대면적 Then + 최대면적 = item.Value + 최대면적면코드 = item.Key + End If + Next + + For Each cdr As DS.tbl_ykRow In DSET1.tbl_yk.Select("code <> '0'") + Dim 면코드 As String = cdr.code + If 면코드 = 최대면적면코드 Then + NDr.창호종류 = cdr.창호세부설명 + NDr.창호값 = TOSG(cdr.열관류율) + Exit For + End If + Next + + + + + + + + '//조명설비값(모든존 ; sum(면적*조명에너지부하율) / sum(면적) + Dim 존면적합 As Decimal = 0 + Dim 존면적부하율 As Decimal = 0 + For Each drz As DS.tbl_zoneRow In DSET1.tbl_zone.Select("code <> '0'") + + If drz.조명부하산출방법 = "계산치" Then + 존면적합 += TOSG(drz.면적) + 존면적부하율 += TOSG(drz.면적) * TOSG(drz.조명에너지부하율계산치) + ElseIf drz.조명부하산출방법 = "입력치" Then + 존면적합 += TOSG(drz.면적) + 존면적부하율 += TOSG(drz.면적) * TOSG(drz.조명에너지부하율입력치) + End If + Next + If 존면적합 <> 0 Then + NDr.주거실조명전력 = Math.Round(존면적부하율 / 존면적합, 2) + End If + + '//주조명광원값() + NDr.주조명광원 = DSET1.tbl_Desc.Rows(0)("주조명").ToString + + + '///################################################################################# + '///################################################################################# + '//설비방식및사용연료 + '//난방(입력존에서 가장많이 사용한놈) + Dim fndr As DS.tbl_nanbangkikiRow = Nothing + Dim fndrcnt As Integer = 0 + + Dim sum_보일러 As Single = 0 + Dim sum_히트펌프 As Single = 0 + Dim sum_지역난방 As Single = 0 + Dim sum_전기보일러 As Single = 0 + + For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0'") + Dim cnt As Integer = 0 + Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산난방생산기기='" & dr.code & "' or 공조난방생산기기='" & dr.code & "'") + + '//131207 + If zDR.Length > 0 Then + Select Case dr.열생산기기방식 + Case "보일러" + sum_보일러 += TOSG(dr.보일러정격출력) + Case "히트펌프" + sum_히트펌프 += TOSG(dr.히트난방용량) + Case "지역난방" + sum_지역난방 += TOSG(dr.열교환기정격출력) + Case "전기보일러" + sum_전기보일러 += TOSG(dr.보일러정격출력) + End Select + End If + Next + + + '//합이 가장 큰 그룹을 검색 + Dim maxvalue As Single = 0 + ' Dim maxindex As Integer = 0 + maxvalue = Math.Max(sum_보일러, sum_히트펌프) + maxvalue = Math.Max(maxvalue, sum_지역난방) + maxvalue = Math.Max(maxvalue, sum_전기보일러) + + Dim searchfilter As String = "" + + If maxvalue = 0 Then + searchfilter = "" + ' maxindex = 0 '//없음 + ElseIf maxvalue = sum_보일러 Then + ' maxindex = 1 + searchfilter = "열생산기기방식='보일러'" + ElseIf maxvalue = sum_히트펌프 Then + 'maxindex = 2 + searchfilter = "열생산기기방식='히트펌프'" + ElseIf maxvalue = sum_지역난방 Then + ' maxindex = 3 + searchfilter = "열생산기기방식='지역난방'" + ElseIf maxvalue = sum_전기보일러 Then + ' maxindex = 4 + searchfilter = "열생산기기방식='전기보일러'" + End If + + '//가장큰 그룹내의 개별 대표값 찾기 + If searchfilter <> "" Then + For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and " + searchfilter) + Dim cnt As Integer = 0 + Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산난방생산기기='" & dr.code & "' or 공조난방생산기기='" & dr.code & "'") + + '/// + For Each drow As DS.tbl_zoneRow In zDR + Dim 입력존수문자 As Integer = drow.입력존의수 + If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1" + cnt += CInt(입력존수문자) + Next + + If cnt > fndrcnt Then '//최대값찾기 + fndr = dr + fndrcnt = cnt + End If + + + + If Not fndr Is Nothing Then + + '//20160327 + If Not IsNumeric(fndr.보일러대수) Then fndr.보일러대수 = "0" + If CInt(fndr.보일러대수) = 0 AndAlso (fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동") Then + MsgBox("다음 난방기기의 보일러 대수 가 입력되지 않았습니다" + vbCrLf + vbCrLf + _ + "난방기기 : " + fndr.설명 + vbCrLf + _ + "운전방식 : " + fndr.운전방식 + vbCrLf + _ + "보일러대수 : " + fndr.보일러대수 + vbCrLf + vbCrLf + _ + "단독가동이 아닌 경우에는 보일러 대수가 입력되어야 합니다", MsgBoxStyle.Critical, "확인") + End If + + NDr.온열원설비방식 = fndr.열생산기기방식 + Select Case fndr.열생산기기방식 + Case "보일러" + NDr.온열원설비연료 = fndr.사용연료 + If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then + NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")" + Else + NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" + End If + + NDr.온열원효율 = fndr.정격보일러효율 + "%" + Case "히트펌프" + NDr.온열원설비연료 = fndr.히트연료 + If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then + NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")" + Else + NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" + End If + NDr.온열원효율 = fndr.히트난방정격7 + Case "지역난방" + NDr.온열원설비연료 = "지역난방" 'fndr.사용연료 + If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then + NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")" + Else + NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" + End If + NDr.온열원효율 = fndr.정격보일러효율 + "%" + Case "전기보일러" + NDr.온열원설비연료 = "전기" ' fndr.사용연료 + If fndr.운전방식 = "동시가동" OrElse fndr.운전방식 = "순차가동" Then + NDr.온열원용량 = maxvalue * CInt(fndr.보일러대수) '+ "(" + fndr.보일러정격출력 + ")" + Else + NDr.온열원용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" + End If + NDr.온열원효율 = fndr.정격보일러효율 + "%" + End Select + End If + Next + Else + NDr.온열원설비연료 = "" + NDr.온열원용량 = "" + NDr.온열원효율 = "" + End If + + + '///################################################################################# + '///################################################################################# + '//급탕(입력존에서 가장많이 사용한놈) + fndr = Nothing + fndrcnt = 0 + + sum_보일러 = 0 + sum_히트펌프 = 0 + sum_지역난방 = 0 + sum_전기보일러 = 0 + + For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0'") + Dim cnt As Integer = 0 + Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산급탕생산기기='" & dr.code & "'") + + '//131207 + If zDR.Length > 0 Then + Select Case dr.열생산기기방식 + Case "보일러" + sum_보일러 += TOSG(dr.보일러정격출력) + Case "히트펌프" + sum_히트펌프 += TOSG(dr.히트난방용량) + Case "지역난방" + sum_지역난방 += TOSG(dr.열교환기정격출력) + Case "전기보일러" + sum_전기보일러 += TOSG(dr.보일러정격출력) + End Select + End If + + + + Next + + '//합이 가장 큰 그룹을 검색 + maxvalue = 0 + maxvalue = Math.Max(sum_보일러, sum_히트펌프) + maxvalue = Math.Max(maxvalue, sum_지역난방) + maxvalue = Math.Max(maxvalue, sum_전기보일러) + + searchfilter = "" + + If maxvalue = 0 Then + searchfilter = "" + ElseIf maxvalue = sum_보일러 Then + searchfilter = "열생산기기방식='보일러'" + ElseIf maxvalue = sum_히트펌프 Then + searchfilter = "열생산기기방식='히트펌프'" + ElseIf maxvalue = sum_지역난방 Then + searchfilter = "열생산기기방식='지역난방'" + ElseIf maxvalue = sum_전기보일러 Then + searchfilter = "열생산기기방식='전기보일러'" + End If + + '//가장큰 그룹내의 개별 대표값 찾기 + NDr.급탕설비방식 = "" + NDr.급탕설비연료 = "" + NDr.급탕용량 = "" + NDr.급탕효율 = "" + + If searchfilter <> "" Then + + For Each dr As DS.tbl_nanbangkikiRow In DSET1.tbl_nanbangkiki.Select("code <> '0' and " + searchfilter) + Dim cnt As Integer = 0 + Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("code <> '0' and 열생산급탕생산기기='" & dr.code + "'") + + For Each drow As DS.tbl_zoneRow In zDR + Dim 입력존수문자 As Integer = drow.입력존의수 + If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1" + cnt += CInt(입력존수문자) + Next + If cnt > fndrcnt Then '//최대값찾기 + fndr = dr + fndrcnt = cnt + End If + + If Not fndr Is Nothing Then + NDr.급탕설비방식 = fndr.열생산기기방식 + + + Select Case fndr.열생산기기방식 + Case "보일러" + NDr.급탕설비연료 = fndr.사용연료 + NDr.급탕용량 = maxvalue.ToString() '+ "(" + fndr.보일러정격출력 + ")" + NDr.급탕효율 = fndr.정격보일러효율 + "%" + Case "히트펌프" + NDr.급탕설비연료 = fndr.히트연료 + NDr.급탕용량 = maxvalue.ToString() ' + "(" + fndr.히트난방용량 + ")" + NDr.급탕효율 = fndr.히트난방정격7 + Case "지역난방" + NDr.급탕설비연료 = "지역난방" ' fndr.사용연료 + NDr.급탕용량 = maxvalue.ToString() '+ "(" + fndr.열교환기정격출력 + ")" + NDr.급탕효율 = fndr.정격보일러효율 + "%" + Case "전기보일러" + NDr.급탕설비연료 = "전기" ' fndr.사용연료 + NDr.급탕용량 = maxvalue.ToString() ' + "(" + fndr.보일러정격출력 + ")" + NDr.급탕효율 = fndr.정격보일러효율 + "%" + End Select + + End If + + Next + End If + + + + + + + + + + '///################################################################################# + '///################################################################################# + '//냉방(입력존에서 가장많이 사용한놈) + Dim fndr2 As DS.tbl_nangbangkikiRow = Nothing + Dim fndr2cnt As Integer = 0 + + Dim sum_압축식 As Single = 0 + Dim sum_압축식_LNG As Single = 0 + Dim sum_지역냉방 As Single = 0 + Dim sum_흡수식 As Single = 0 + + For Each dr As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0'") + Dim cnt2 As Integer = 0 + Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("열생산냉방생산기기='" & dr.code & "' or 공조냉방생산기기='" & dr.code & "'") + + '//131207 + If zDR.Length > 0 Then + Select Case dr.냉동기방식 + Case "압축식" + sum_압축식 += TOSG(dr.냉동기용량) + Case "압축식(LNG)" + sum_압축식_LNG += TOSG(dr.냉동기용량) + Case "지역냉방" + sum_지역냉방 += TOSG(dr.냉동기용량) + Case "흡수식" + sum_흡수식 += TOSG(dr.냉동기용량) + End Select + End If + + + Next + + '//합이 가장 큰 그룹을 검색 + maxvalue = 0 + maxvalue = Math.Max(sum_압축식, sum_압축식_LNG) + maxvalue = Math.Max(maxvalue, sum_지역냉방) + maxvalue = Math.Max(maxvalue, sum_흡수식) + + searchfilter = "" + + If maxvalue = 0 Then + searchfilter = "" + ElseIf maxvalue = sum_압축식 Then + searchfilter = "냉동기방식='압축식'" + ElseIf maxvalue = sum_압축식_LNG Then + searchfilter = "냉동기방식='압축식(LNG)'" + ElseIf maxvalue = sum_지역냉방 Then + searchfilter = "냉동기방식='지역냉방'" + ElseIf maxvalue = sum_흡수식 Then + searchfilter = "냉동기방식='흡수식'" + End If + + + + + '//가장큰 그룹내의 개별 대표값 찾기 + If searchfilter <> "" Then + For Each dr As DS.tbl_nangbangkikiRow In DSET1.tbl_nangbangkiki.Select("code <> '0' and " + searchfilter) + Dim cnt2 As Integer = 0 + Dim zDR() As DS.tbl_zoneRow = DSET1.tbl_zone.Select("열생산냉방생산기기='" & dr.code & "' or 공조냉방생산기기='" & dr.code & "'") + + For Each drow As DS.tbl_zoneRow In zDR + Dim 입력존수문자 As Integer = drow.입력존의수 + If IsNumeric(입력존수문자) = False Then 입력존수문자 = "1" + cnt2 += CInt(입력존수문자) + Next + If cnt2 > fndr2cnt Then '//최대값찾기 + fndr2 = dr + fndr2cnt = cnt2 + End If + + If Not fndr2 Is Nothing Then + NDr.냉열원설비방식 = fndr2.냉동기방식 + NDr.냉열원용량 = maxvalue.ToString() + "(" + fndr2.냉동기용량 + ")" + NDr.냉열원효율 = fndr2.열성능비 + Select Case fndr2.냉동기방식 + Case "압축식" + NDr.냉열원설비연료 = "전기" + Case "압축식(LNG)" + NDr.냉열원설비연료 = "천연가스" + Case "지역냉방" + NDr.냉열원설비연료 = "지역냉방" + Case "흡수식" + If fndr2.열생산연결방식 = "직화식" Then + NDr.냉열원설비연료 = fndr2.사용연료 + ElseIf fndr2.열생산연결방식 = "외부연결" Then + Dim 온수열생산기기코드 As String = fndr2.온수열생산기기 + If 온수열생산기기코드 <> "" Then + Dim 난방기기() As DS.tbl_nanbangkikiRow = DSET1.tbl_nanbangkiki.Select("code='" + 온수열생산기기코드 + "'") + If 난방기기.GetUpperBound(0) = 0 Then + NDr.냉열원설비연료 = fndr2.사용연료 + End If + End If + End If + End Select + + End If + + Next + Else + NDr.냉열원설비방식 = "" + NDr.냉열원용량 = "" + NDr.냉열원효율 = "" + End If + + + DSR.Pyonga_YK.Rows.Add(NDr) + DSR.Pyonga_YK.AcceptChanges() + + End Sub + ''' ''' 모든입력면의 창,문의 면적비를 계산하여 반환한다(frm_myoun의 Display_info 함수에서 가져옴) ''' ''' ''' - Public Function calc_창및문면적비(ByRef 면적비 As Decimal, ByRef 열관류율 As Decimal, Optional 방위 As String = "") As Boolean + Public Function calc_창및문면적비(ByRef 면적비 As Decimal, ByRef 열관류율 As Decimal, ByRef 창열관류율 As Decimal, ByRef 일사에너지투과율 As Decimal, Optional 방위 As String = "") As Boolean 면적비 = 0 열관류율 = 0 - + 창열관류율 = 0 + 일사에너지투과율 = 0 Dim filter As String = "code <> '0' and (건축부위방식='외벽' or 건축부위방식 ='외부창' or 건축부위방식='내벽' or 건축부위방식 ='내부창')" If 방위 <> "" Then filter += " and 방위='" + 방위 + "'" @@ -101,6 +858,9 @@ Dim WindowArea As Decimal = 0 Dim WallArea As Decimal = 0 Dim 열관류율합 As Double = 0 + Dim 창열관류율합 As Double = 0 + Dim 투과율합 As Decimal = 0 + For Each Dr입력면 As DS.tbl_myounRow In 면데이터 Dim 존수 As Integer = 1 @@ -108,6 +868,8 @@ 'If Dr입력면.열관류율2 = "0" Then Continue For '//열관류율이 연결되어 있어야한다 + + Dim Dryk() As DS.tbl_ykRow = Nothing If Dr입력면.열관류율2 <> "0" Then Dryk = DSET1.tbl_yk.Select("code='" & Dr입력면.열관류율2 & "'") @@ -134,8 +896,12 @@ 열관류율합 += 열관 * 0.7 * TOSG(Dr입력면.건축부위면적) * 존수 Case "외부창" 열관류율합 += 열관 * 1 * TOSG(Dr입력면.건축부위면적) * 존수 + 창열관류율합 += 열관 * 1 * TOSG(Dr입력면.건축부위면적) * 존수 + 투과율합 += Dr입력면.투과율 * TOSG(Dr입력면.건축부위면적) * 존수 Case "내부창" 열관류율합 += 열관 * 0.8 * TOSG(Dr입력면.건축부위면적) * 존수 + 창열관류율합 += 열관 * 0.8 * TOSG(Dr입력면.건축부위면적) * 존수 + 투과율합 += Dr입력면.투과율 * TOSG(Dr입력면.건축부위면적) * 존수 End Select If Dryk Is Nothing Then @@ -188,6 +954,14 @@ 열관류율 = 열관류율합 / (WallArea + WindowArea) End If + If WindowArea = 0 Then + 창열관류율 = (0.0F) + 일사에너지투과율 = (0.0F) + Else + 창열관류율 = 창열관류율합 / (WindowArea) + 일사에너지투과율 = 투과율합 / (WindowArea) + End If + Return True End Function diff --git a/ArinWarev1/My Project/AssemblyInfo.vb b/ArinWarev1/My Project/AssemblyInfo.vb index 5129589..124ca49 100644 --- a/ArinWarev1/My Project/AssemblyInfo.vb +++ b/ArinWarev1/My Project/AssemblyInfo.vb @@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices ' 지정되도록 할 수 있습니다. ' - - + + diff --git a/ArinWarev1/단축키.txt b/ArinWarev1/단축키.txt index 28cce01..7aca3a1 100644 --- a/ArinWarev1/단축키.txt +++ b/ArinWarev1/단축키.txt @@ -3,4 +3,8 @@ alt+d ư Ŭ : ü.. ȭ 1° ۿ ٿֱⰡ -ȭ鿡 ϺҷŰ f1,f2,f3,f4 \ No newline at end of file +ȭ鿡 ϺҷŰ f1,f2,f3,f4 + + + + diff --git a/SetupIS/SetupIS.isl b/SetupIS/SetupIS.isl index 7d4802d..5fc9152 100644 --- a/SetupIS/SetupIS.isl +++ b/SetupIS/SetupIS.isl @@ -2491,7 +2491,7 @@ CustomExpress<ISProjectDataFolder>Default2103302Intel10330100010240MediaLocationhttp://758053 DVD-10Express<ISProjectDataFolder>Default3103302Intel103308.75120480MediaLocationhttp://758053 DVD-18Express<ISProjectDataFolder>Default3103302Intel1033015.83120480MediaLocationhttp://758053 - DVD-5ExpressC:\eco2\Setup_ECO2_2022V2_20170122_1003Default3104201Intel104204.38120480MediaLocationhttp://758053 + DVD-5ExpressC:\eco2\Setup_ECO2_2022V2_20170122_1004Default3104201Intel104204.38120480MediaLocationhttp://758053 DVD-9Express<ISProjectDataFolder>Default3103302Intel103307.95120480MediaLocationhttp://758053 SingleImageExpressC:\eco2\Setup_2016_191020_guest_patchPackageName1104201Intel104200000MediaLocationhttp://1087013 WebDeploymentExpress<ISProjectDataFolder>PackageName4103321Intel103300000MediaLocationhttp://1249413