Public Class 安培容量計算 Dim 開始計算 As Boolean Private Sub Set_電線清單() Dim ds1 As New DataSet : 電線清單_dgv.DataSource = Nothing : ds1.Clear() 電線清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 電線清單_dgv.ColumnHeadersHeight = 25 電線清單_dgv.AllowUserToAddRows = False SQL_電線清單() da.Fill(ds1) : 電線清單_dgv.DataSource = ds1.Tables(0) : conn.Close() End Sub Private Sub Set_電纜清單() Dim ds1 As New DataSet : 電纜清單_dgv.DataSource = Nothing : ds1.Clear() 電纜清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 電纜清單_dgv.ColumnHeadersHeight = 25 電纜清單_dgv.AllowUserToAddRows = False If 表定安培容量1_tb.Text = "" Then : 表定安培容量1_tb.Text = "0" : End If SQL_電纜清單() da.Fill(ds1) : 電纜清單_dgv.DataSource = ds1.Tables(0) : conn.Close() End Sub Private Sub 安培容量計算_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub 安培容量計算_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown 開始計算 = False : 最高容許溫度_cb.SelectedIndex = 0 : 周圍溫度_cb.SelectedIndex = 0 : 電線_cb.SelectedIndex = 0 : 施工方式_cb.SelectedIndex = 0 額定電壓_cb.SelectedIndex = 0 : 周圍溫度1_cb.Text = "30" : 開始計算 = True End Sub Private Sub 電線總類_dgv_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 電線清單_dgv.CellClick If e.RowIndex = -1 Then : Else 線別_cb.Text = 電線清單_dgv("線別", e.RowIndex).Value.ToString 公稱截面積_cb.Text = 電線清單_dgv("公稱截面積", e.RowIndex).Value.ToString : 根數直徑_cb.Text = 電線清單_dgv("根數/直徑", e.RowIndex).Value.ToString End If End Sub Private Sub 電纜清單_dgv_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 電纜清單_dgv.CellClick If e.RowIndex = -1 Then : Else : 公稱截面積1_cb.Text = 電纜清單_dgv("公稱截面積", e.RowIndex).Value.ToString : End If End Sub '-------------------電線-------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub 最高容許溫度_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 最高容許溫度_cb.SelectedIndexChanged PA1 = 最高容許溫度_cb.Text : SQL_電線總類清單1() : 電線_cb.Items.Clear() : While (dr.Read()) : 電線_cb.Items.Add(Strings.Mid(dr("絕緣電線種類"), 3, 50)) : End While : conn.Close() If 開始計算 = True Then If 正向計算_ch.Checked = True Then PA9 = 周圍溫度_cb.Text : SQL_安培容量表基數4() If dr.Read() Then If 最高容許溫度_cb.Text = "60" Then : 修正係數_tb.Text = dr("60℃").ToString : ElseIf 最高容許溫度_cb.Text = "75" Then : 修正係數_tb.Text = dr("75℃").ToString ElseIf 最高容許溫度_cb.Text = "80" Then : 修正係數_tb.Text = dr("80℃").ToString : ElseIf 最高容許溫度_cb.Text = "90" Then : 修正係數_tb.Text = dr("90℃").ToString : End If End If : 計算安培數() Else PA9 = 周圍溫度_cb.Text : SQL_安培容量表基數4() If dr.Read() Then If 最高容許溫度_cb.Text = "60" Then : 修正係數_tb.Text = dr("60℃").ToString : ElseIf 最高容許溫度_cb.Text = "75" Then : 修正係數_tb.Text = dr("75℃").ToString ElseIf 最高容許溫度_cb.Text = "80" Then : 修正係數_tb.Text = dr("80℃").ToString : ElseIf 最高容許溫度_cb.Text = "90" Then : 修正係數_tb.Text = dr("90℃").ToString : End If End If : 安培容量反推() End If End If End Sub Private Sub 配線方式_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 配線方式_cb.SelectedIndexChanged If 正向計算_ch.Checked = True Then PA9 = 配線方式_cb.Text SQL_安培容量表基數3() : 導線數_cb.Items.Clear() : While (dr.Read()) : 導線數_cb.Items.Add(dr("導線管內導線數")) : End While : conn.Close() : 計算安培數() Else PA9 = 配線方式_cb.Text SQL_安培容量表基數3() : 導線數_cb.Items.Clear() : While (dr.Read()) : 導線數_cb.Items.Add(dr("導線管內導線數")) : End While : conn.Close() : 安培容量反推() End If End Sub Private Sub 線別_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 線別_cb.SelectedIndexChanged PA9 = 線別_cb.Text SQL_安培容量表基數1() : 公稱截面積_cb.Items.Clear() : While (dr.Read()) : 公稱截面積_cb.Items.Add(dr("公稱截面積")) : End While : conn.Close() SQL_安培容量表基數2() : 根數直徑_cb.Items.Clear() : While (dr.Read()) : 根數直徑_cb.Items.Add(dr("根數/直徑")) : End While : conn.Close() If 正向計算_ch.Checked = True Then : 計算安培數() : Else : End If End Sub Private Sub 周圍溫度_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 周圍溫度_cb.SelectedIndexChanged PA9 = 周圍溫度_cb.Text : SQL_安培容量表基數4() If dr.Read() Then If 最高容許溫度_cb.Text = "60" Then : 修正係數_tb.Text = dr("60℃").ToString : ElseIf 最高容許溫度_cb.Text = "75" Then : 修正係數_tb.Text = dr("75℃").ToString ElseIf 最高容許溫度_cb.Text = "80" Then : 修正係數_tb.Text = dr("80℃").ToString : ElseIf 最高容許溫度_cb.Text = "90" Then : 修正係數_tb.Text = dr("90℃").ToString : End If End If If 正向計算_ch.Checked = True Then : 計算安培數() : Else : End If End Sub Private Sub 根數直徑_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 根數直徑_cb.SelectedIndexChanged PA9 = 根數直徑_cb.Text : SQL_安培容量表基數5() : If dr.Read() Then : 公稱截面積_cb.Text = dr("公稱截面積").ToString : End If If 正向計算_ch.Checked = True Then : 計算安培數() : Else : End If End Sub Private Sub 導線數_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 導線數_cb.SelectedIndexChanged If 正向計算_ch.Checked = True Then : 計算安培數() : Else : 安培容量反推() : End If End Sub Private Sub 計算安培數() PA1 = 配線方式_cb.Text : PA2 = 線別_cb.Text : PA3 = 根數直徑_cb.Text : PA4 = 最高容許溫度_cb.Text : PA5 = 導線數_cb.Text SQL_安培容量表基數6() : If dr.Read() Then : 表定安培容量_tb.Text = dr("安培容量").ToString : Else : 表定安培容量_tb.Text = "" : End If End Sub Private Sub 表定安培容量_tb_TextChanged(sender As Object, e As EventArgs) Handles 表定安培容量_tb.TextChanged If 正向計算_ch.Checked = True Then If IsNumeric(表定安培容量_tb.Text) = True And IsNumeric(修正係數_tb.Text) = True Then If 修正係數_tb.Text = "0" Then : 表定安培容量_tb.Text = 安培容量_tb.Text : Else 安培容量_tb.Text = Strings.Format(CInt(表定安培容量_tb.Text) * CDbl(修正係數_tb.Text), "#,##0.0") End If Else : 安培容量_tb.Text = "" : End If Else : End If End Sub Private Sub 修正係數_tb_TextChanged(sender As Object, e As EventArgs) Handles 修正係數_tb.TextChanged If 正向計算_ch.Checked = True Then If IsNumeric(表定安培容量_tb.Text) = True And IsNumeric(修正係數_tb.Text) = True Then If 修正係數_tb.Text = "0" Then : 表定安培容量_tb.Text = 安培容量_tb.Text : Else 安培容量_tb.Text = Strings.Format(CInt(表定安培容量_tb.Text) * CDbl(修正係數_tb.Text), "#,##0.0") End If Else : 安培容量_tb.Text = "" : End If Else If IsNumeric(安培容量_tb.Text) = True And IsNumeric(修正係數_tb.Text) = True Then If 修正係數_tb.Text = "0" Then : 表定安培容量_tb.Text = 安培容量_tb.Text : Else 表定安培容量_tb.Text = CInt(CInt(安培容量_tb.Text) / CDbl(修正係數_tb.Text)) End If Else : 安培容量_tb.Text = "" : End If End If End Sub Private Sub 正向計算_ch_CheckedChanged(sender As Object, e As EventArgs) Handles 正向計算_ch.Click 正向計算_ch.Checked = True : 反向計算_ch.Checked = False 最高容許溫度_lb.ForeColor = Color.Red : 線別_lb.ForeColor = Color.Red : 配線方式_lb.ForeColor = Color.Red 導線數_lb.ForeColor = Color.Red : 根數直徑_lb.ForeColor = Color.Red : 表定安培容量_lb.Text = "表定安培容量" End Sub Private Sub 反向計算_ch_CheckedChanged(sender As Object, e As EventArgs) Handles 反向計算_ch.Click 正向計算_ch.Checked = False : 反向計算_ch.Checked = True 最高容許溫度_lb.ForeColor = Color.Red : 線別_lb.ForeColor = Color.Black : 配線方式_lb.ForeColor = Color.Red 導線數_lb.ForeColor = Color.Red : 根數直徑_lb.ForeColor = Color.Black : 表定安培容量_lb.Text = "推算安培容量" End Sub Private Sub 安培容量反推() If 安培容量_tb.Text = "" Then : 安培容量_tb.Text = "0" : End If If 修正係數_tb.Text = "0" Then : 表定安培容量_tb.Text = 安培容量_tb.Text : Else 表定安培容量_tb.Text = CInt(CInt(安培容量_tb.Text) / CDbl(修正係數_tb.Text)) End If PA1 = 配線方式_cb.Text : PA2 = 最高容許溫度_cb.Text : PA3 = 表定安培容量_tb.Text : PA4 = 導線數_cb.Text Set_電線清單() End Sub Private Sub 安培容量_tb_TextChanged(sender As Object, e As EventArgs) Handles 安培容量_tb.TextChanged If 正向計算_ch.Checked = True Then : Else : 安培容量反推() : End If End Sub '-------------------電纜-------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub 正向計算1_ch_CheckedChanged(sender As Object, e As EventArgs) Handles 正向計算1_ch.Click 正向計算1_ch.Checked = True : 反向計算1_ch.Checked = False : 表定安培容量1_lb.Text = "表定安培容量" : 公稱截面積1_lb.ForeColor = Color.Red End Sub Private Sub 反向計算1_ch_CheckedChanged(sender As Object, e As EventArgs) Handles 反向計算1_ch.Click 正向計算1_ch.Checked = False : 反向計算1_ch.Checked = True : 表定安培容量1_lb.Text = "推算安培容量" : 公稱截面積1_lb.ForeColor = Color.Black End Sub Private Sub 施工方式_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 施工方式_cb.SelectedIndexChanged PA9 = 施工方式_cb.Text SQL_電纜安培容量表基數1() : 電纜_cb.Items.Clear() : While (dr.Read()) : 電纜_cb.Items.Add(dr("材質")) : End While : conn.Close() PA9 = 周圍溫度1_cb.Text : SQL_電纜安培容量表基數5() If dr.Read() Then If 施工方式_cb.Text = "地下管路敷設" Or 施工方式_cb.Text = "直埋敷設" Then : 修正係數1_tb.Text = dr("地下敷設").ToString Else : 修正係數1_tb.Text = dr("暗渠空架").ToString : End If End If End Sub Private Sub 電纜_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 電纜_cb.SelectedIndexChanged PA9 = 施工方式_cb.Text : PA8 = 電纜_cb.Text SQL_電纜安培容量表基數2() : 管路_心數_cb.Items.Clear() : While (dr.Read()) : 管路_心數_cb.Items.Add(dr("管路數/心數")) : End While : conn.Close() PA9 = 施工方式_cb.Text : PA8 = 電纜_cb.Text : PA7 = 額定電壓_cb.Text SQL_電纜安培容量表基數3() : 公稱截面積1_cb.Items.Clear() : While (dr.Read()) : 公稱截面積1_cb.Items.Add(dr("公稱截面積")) : End While : conn.Close() End Sub Private Sub 額定電壓_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 額定電壓_cb.SelectedIndexChanged PA9 = 施工方式_cb.Text : PA8 = 電纜_cb.Text : PA7 = 額定電壓_cb.Text : If 正向計算1_ch.Checked = True Then : 表定安培容量1_tb.Text = "" : End If SQL_電纜安培容量表基數3() : 公稱截面積1_cb.Items.Clear() : While (dr.Read()) : 公稱截面積1_cb.Items.Add(dr("公稱截面積")) : End While : conn.Close() If 正向計算1_ch.Checked = True Then : Else PA1 = 施工方式_cb.Text : PA2 = 電纜_cb.Text : PA3 = 表定安培容量1_tb.Text : PA4 = 額定電壓_cb.Text : PA5 = 管路_心數_cb.Text : Set_電纜清單() End If End Sub Private Sub 公稱截面積1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 公稱截面積1_cb.SelectedIndexChanged If 正向計算1_ch.Checked = True Then If 管路_心數_cb.Text = "" Then : 表定安培容量1_tb.Text = "" : Else PA9 = 施工方式_cb.Text : PA8 = 電纜_cb.Text : PA7 = 額定電壓_cb.Text : PA6 = 公稱截面積1_cb.Text : PA5 = 管路_心數_cb.Text SQL_電纜安培容量表基數4() : If dr.Read() Then : 表定安培容量1_tb.Text = dr("安培容量").ToString : End If End If Else : End If End Sub Private Sub 周圍溫度1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 周圍溫度1_cb.SelectedIndexChanged PA9 = 周圍溫度1_cb.Text : SQL_電纜安培容量表基數5() If dr.Read() Then If 施工方式_cb.Text = "地下管路敷設" Or 施工方式_cb.Text = "直埋敷設" Then : 修正係數1_tb.Text = dr("地下敷設").ToString Else : 修正係數1_tb.Text = dr("暗渠空架").ToString : End If End If End Sub Private Sub 表定安培容量1_tb_TextChanged(sender As Object, e As EventArgs) Handles 表定安培容量1_tb.TextChanged If 正向計算1_ch.Checked = True Then If 表定安培容量1_tb.Text <> "" And 表定安培容量1_tb.Text <> "" Then 安培容量1_tb.Text = Strings.Format(CInt(表定安培容量1_tb.Text) * CDbl(修正係數1_tb.Text), "#,##0.00") Else : 安培容量1_tb.Text = "0" : End If Else PA1 = 施工方式_cb.Text : PA2 = 電纜_cb.Text : PA3 = 表定安培容量1_tb.Text : PA4 = 額定電壓_cb.Text : PA5 = 管路_心數_cb.Text : Set_電纜清單() End If End Sub Private Sub 修正係數1_tb_TextChanged(sender As Object, e As EventArgs) Handles 修正係數1_tb.TextChanged If 正向計算1_ch.Checked = True Then If 表定安培容量1_tb.Text <> "" And 表定安培容量1_tb.Text <> "" Then 安培容量1_tb.Text = Strings.Format(CInt(表定安培容量1_tb.Text) * CDbl(修正係數1_tb.Text), "#,##0.00") Else : 安培容量1_tb.Text = "0" : End If Else If 修正係數1_tb.Text <> "" And 安培容量1_tb.Text <> "" Then 表定安培容量1_tb.Text = Strings.Format(CInt(安培容量1_tb.Text) / CDbl(修正係數1_tb.Text), "#,##0.00") Else : 安培容量1_tb.Text = "0" : End If End If End Sub Private Sub 安培容量1_tb_TextChanged(sender As Object, e As EventArgs) Handles 安培容量1_tb.TextChanged If 正向計算1_ch.Checked = True Then : Else If 修正係數1_tb.Text <> "" And 安培容量1_tb.Text <> "" Then 表定安培容量1_tb.Text = Strings.Format(CInt(安培容量1_tb.Text) / CDbl(修正係數1_tb.Text), "#,##0.00") Else : 安培容量1_tb.Text = "0" : End If End If End Sub Private Sub 管路_心數_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 管路_心數_cb.SelectedIndexChanged If 正向計算1_ch.Checked = True Then : Else PA1 = 施工方式_cb.Text : PA2 = 電纜_cb.Text : PA3 = 表定安培容量1_tb.Text : PA4 = 額定電壓_cb.Text : PA5 = 管路_心數_cb.Text : Set_電纜清單() End If End Sub End Class