Imports System.Windows.Forms.DataVisualization.Charting Public Class 財務_彙總表_ICS ReadOnly ds, ds1, ds2, ds3, ds4, ds5, ds6, ds7, ds8, ds9 As New DataSet '-----------------------------第一區----------------------------------------------------------------------------------------------------------------------- Private Sub Set_清單() 主表_dgv.DataSource = Nothing : ds.Clear() : 主表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表_dgv.ColumnHeadersHeight = 30 : 主表_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 日期, 子項, 子細項, SUM(金額) AS 金額 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項_cb.Text & "') AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 日期, 子項, 子細項 ORDER BY 日期, 子項, 子細項" CmdSet_For_DGV() : da.Fill(ds) : 主表_dgv.DataSource = ds.Tables(0) : conn.Close() 主表_dgv.Columns(0).FillWeight = 70 : 主表_dgv.Columns(1).FillWeight = 100 : 主表_dgv.Columns(2).FillWeight = 120 : 主表_dgv.Columns(3).FillWeight = 80 主表_dgv.Columns(3).DefaultCellStyle.Format = "#,##0" 主表_dgv.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight Set_清單2() : Set_清單1() End Sub Private Sub Set_清單1() 主表1_dgv.DataSource = Nothing : ds1.Clear() : 主表1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表1_dgv.ColumnHeadersHeight = 30 : 主表1_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT TOP(10) 子細項, SUM(金額) AS 金額, ABS(SUM(金額)) AS 比例 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項_cb.Text & "') AND 子細項 NOT LIKE '%借款%' AND 子細項 NOT LIKE '%還款%' AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 子細項 ORDER BY 金額" CmdSet_For_DGV() : da.Fill(ds1) : 主表1_dgv.DataSource = ds1.Tables(0) : conn.Close() 主表1_dgv.Columns(1).FillWeight = 130 : 主表1_dgv.Columns(1).FillWeight = 80 : 主表1_dgv.Columns(2).Visible = False 主表1_dgv.Columns(1).DefaultCellStyle.Format = "#,##0" 主表1_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表1_dgv.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表1_dgv.Sort(主表1_dgv.Columns("比例"), System.ComponentModel.ListSortDirection.Descending) End Sub Private Sub Set_清單2() 主表2_dgv.DataSource = Nothing : ds2.Clear() : 主表2_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表2_dgv.ColumnHeadersHeight = 30 : 主表2_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 日期, SUM(金額) AS 金額 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項_cb.Text & "') AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 日期 ORDER BY 日期" CmdSet_For_DGV() : da.Fill(ds2) : 主表2_dgv.DataSource = ds2.Tables(0) : conn.Close() 主表2_dgv.Columns(0).FillWeight = 70 主表2_dgv.Columns(1).DefaultCellStyle.Format = "#,##0" 主表2_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 加總_tb.Text = "0" : 隱加總_tb.Text = "0" For I As Integer = 0 To 主表2_dgv.Rows.Count - 1 加總_tb.Text = Val(加總_tb.Text) + 主表2_dgv.Rows(I).Cells("金額").Value 隱加總_tb.Text = Val(隱加總_tb.Text) + 主表2_dgv.Rows(I).Cells("金額").Value Next 加總_tb.Text = Format(Val(加總_tb.Text), "#,##0") For I As Integer = 0 To 主表2_dgv.Rows.Count - 1 If 主項_cb.Text = "歲出合計" Then 主表2_dgv.Rows(I).Cells("金額").Value = 主表2_dgv.Rows(I).Cells("金額").Value * -1 End If Next End Sub '-----------------------------第二區----------------------------------------------------------------------------------------------------------------------- Private Sub Set_清單3() 主表3_dgv.DataSource = Nothing : ds3.Clear() : 主表3_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表3_dgv.ColumnHeadersHeight = 30 : 主表3_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 日期, 子項, 子細項, SUM(金額) AS 金額 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項1_cb.Text & "') AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 日期, 子項, 子細項 ORDER BY 日期, 子項, 子細項" CmdSet_For_DGV() : da.Fill(ds3) : 主表3_dgv.DataSource = ds3.Tables(0) : conn.Close() 主表3_dgv.Columns(0).FillWeight = 70 : 主表3_dgv.Columns(1).FillWeight = 100 : 主表3_dgv.Columns(2).FillWeight = 120 : 主表3_dgv.Columns(3).FillWeight = 80 主表3_dgv.Columns(3).DefaultCellStyle.Format = "#,##0" 主表3_dgv.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight Set_清單5() : Set_清單4() End Sub Private Sub Set_清單4() 主表4_dgv.DataSource = Nothing : ds4.Clear() : 主表4_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表4_dgv.ColumnHeadersHeight = 30 : 主表4_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT TOP(10) 子細項, SUM(金額) AS 金額, ABS(SUM(金額)) AS 比例 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項1_cb.Text & "') AND 子細項 NOT LIKE '%借款%' AND 子細項 NOT LIKE '%還款%' AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 子細項 ORDER BY 金額" CmdSet_For_DGV() : da.Fill(ds4) : 主表4_dgv.DataSource = ds4.Tables(0) : conn.Close() 主表4_dgv.Columns(1).FillWeight = 130 : 主表4_dgv.Columns(1).FillWeight = 80 : 主表4_dgv.Columns(2).Visible = False 主表4_dgv.Columns(1).DefaultCellStyle.Format = "#,##0" : 主表4_dgv.Columns(2).DefaultCellStyle.Format = "#,##0" 主表4_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表4_dgv.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表4_dgv.Sort(主表4_dgv.Columns("比例"), System.ComponentModel.ListSortDirection.Descending) End Sub Private Sub Set_清單5() 主表5_dgv.DataSource = Nothing : ds5.Clear() : 主表5_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表5_dgv.ColumnHeadersHeight = 30 : 主表5_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 日期, SUM(金額) AS 金額 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項1_cb.Text & "') AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 日期 ORDER BY 日期" CmdSet_For_DGV() : da.Fill(ds5) : 主表5_dgv.DataSource = ds5.Tables(0) : conn.Close() 主表5_dgv.Columns(0).FillWeight = 70 主表5_dgv.Columns(1).DefaultCellStyle.Format = "#,##0" 主表5_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 加總1_tb.Text = "0" : 隱加總1_tb.Text = "0" For I As Integer = 0 To 主表5_dgv.Rows.Count - 1 加總1_tb.Text = Val(加總1_tb.Text) + 主表5_dgv.Rows(I).Cells("金額").Value 隱加總1_tb.Text = Val(隱加總1_tb.Text) + 主表5_dgv.Rows(I).Cells("金額").Value Next 加總1_tb.Text = Format(Val(加總1_tb.Text), "#,##0") For I As Integer = 0 To 主表5_dgv.Rows.Count - 1 If 主項1_cb.Text = "歲出合計" Then 主表5_dgv.Rows(I).Cells("金額").Value = 主表5_dgv.Rows(I).Cells("金額").Value * -1 End If Next End Sub '-----------------------------第三區----------------------------------------------------------------------------------------------------------------------- Private Sub Set_清單6() 主表6_dgv.DataSource = Nothing : ds6.Clear() : 主表6_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表6_dgv.ColumnHeadersHeight = 30 : 主表6_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 日期, 子項, 子細項, SUM(金額) AS 金額 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項2_cb.Text & "') AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 日期, 子項, 子細項 ORDER BY 日期, 子項, 子細項" CmdSet_For_DGV() : da.Fill(ds6) : 主表6_dgv.DataSource = ds6.Tables(0) : conn.Close() 主表6_dgv.Columns(0).FillWeight = 70 : 主表6_dgv.Columns(1).FillWeight = 100 : 主表6_dgv.Columns(2).FillWeight = 120 : 主表6_dgv.Columns(3).FillWeight = 80 主表6_dgv.Columns(3).DefaultCellStyle.Format = "#,##0" 主表6_dgv.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight Set_清單8() : Set_清單7() End Sub Private Sub Set_清單7() 主表7_dgv.DataSource = Nothing : ds7.Clear() : 主表7_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表7_dgv.ColumnHeadersHeight = 30 : 主表7_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT TOP(10) 子細項, SUM(金額) AS 金額, ABS(SUM(金額)) AS 比例 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項2_cb.Text & "') AND 子細項 NOT LIKE '%借款%' AND 子細項 NOT LIKE '%還款%' AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 子細項 ORDER BY 金額" CmdSet_For_DGV() : da.Fill(ds7) : 主表7_dgv.DataSource = ds7.Tables(0) : conn.Close() 主表7_dgv.Columns(1).FillWeight = 130 : 主表7_dgv.Columns(1).FillWeight = 80 : 主表7_dgv.Columns(2).Visible = False 主表7_dgv.Columns(1).DefaultCellStyle.Format = "#,##0" : 主表7_dgv.Columns(2).DefaultCellStyle.Format = "#,##0" 主表7_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表7_dgv.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 主表7_dgv.Sort(主表7_dgv.Columns("比例"), System.ComponentModel.ListSortDirection.Descending) End Sub Private Sub Set_清單8() 主表8_dgv.DataSource = Nothing : ds8.Clear() : 主表8_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表8_dgv.ColumnHeadersHeight = 30 : 主表8_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 日期, SUM(金額) AS 金額 FROM 財務彙總紀錄_ICS WHERE (主項 LIKE '" & 主項2_cb.Text & "') AND 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 日期 ORDER BY 日期" CmdSet_For_DGV() : da.Fill(ds8) : 主表8_dgv.DataSource = ds8.Tables(0) : conn.Close() 主表8_dgv.Columns(0).FillWeight = 70 主表8_dgv.Columns(1).DefaultCellStyle.Format = "#,##0" 主表8_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 加總2_tb.Text = "0" : 隱加總2_tb.Text = "0" For I As Integer = 0 To 主表8_dgv.Rows.Count - 1 加總2_tb.Text = Val(加總2_tb.Text) + 主表8_dgv.Rows(I).Cells("金額").Value 隱加總2_tb.Text = Val(隱加總2_tb.Text) + 主表8_dgv.Rows(I).Cells("金額").Value Next 加總2_tb.Text = Format(Val(加總2_tb.Text), "#,##0") For I As Integer = 0 To 主表8_dgv.Rows.Count - 1 If 主項2_cb.Text = "歲出合計" Then 主表8_dgv.Rows(I).Cells("金額").Value = 主表8_dgv.Rows(I).Cells("金額").Value * -1 End If Next End Sub Private Sub Set_清單9() 主表9_dgv.DataSource = Nothing : ds9.Clear() : 主表9_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表9_dgv.ColumnHeadersHeight = 30 : 主表9_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 日期, 日期 AS 金額1, 日期 AS 金額2, 日期 AS 金額3 FROM 財務彙總紀錄_ICS WHERE 日期 LIKE '%" & 年份_cb.Text & "%' GROUP BY 日期 ORDER BY 日期" CmdSet_For_DGV() : da.Fill(ds9) : 主表9_dgv.DataSource = ds9.Tables(0) : conn.Close() For I As Integer = 0 To 主表9_dgv.Rows.Count - 1 主表9_dgv.Rows(I).Cells("金額1").Value = "0" : 主表9_dgv.Rows(I).Cells("金額2").Value = "0" : 主表9_dgv.Rows(I).Cells("金額3").Value = "0" Next For I As Integer = 0 To 主表9_dgv.Rows.Count - 1 For II As Integer = 0 To 主表2_dgv.Rows.Count - 1 If 主表9_dgv.Rows(I).Cells("日期").Value = 主表2_dgv.Rows(II).Cells("日期").Value Then 主表9_dgv.Rows(I).Cells("金額1").Value = 主表2_dgv.Rows(II).Cells("金額").Value End If Next For II As Integer = 0 To 主表5_dgv.Rows.Count - 1 If 主表9_dgv.Rows(I).Cells("日期").Value = 主表5_dgv.Rows(II).Cells("日期").Value Then 主表9_dgv.Rows(I).Cells("金額2").Value = 主表5_dgv.Rows(II).Cells("金額").Value End If Next For II As Integer = 0 To 主表8_dgv.Rows.Count - 1 If 主表9_dgv.Rows(I).Cells("日期").Value = 主表8_dgv.Rows(II).Cells("日期").Value Then 主表9_dgv.Rows(I).Cells("金額3").Value = 主表8_dgv.Rows(II).Cells("金額").Value End If Next Next End Sub Private Sub 彙總() 加總3_tb.Text = Val(隱加總_tb.Text) + Val(隱加總1_tb.Text) + Val(隱加總2_tb.Text) If 主項_cb.Text = "資本" Then : 加總4_tb.Text = Val(隱加總1_tb.Text) + Val(隱加總2_tb.Text) ElseIf 主項1_cb.Text = "資本" Then : 加總4_tb.Text = Val(隱加總_tb.Text) + Val(隱加總2_tb.Text) ElseIf 主項2_cb.Text = "資本" Then : 加總4_tb.Text = Val(隱加總_tb.Text) + Val(隱加總1_tb.Text) End If 加總4_tb.Text = Format(Val(加總4_tb.Text), "#,##0") : 加總3_tb.Text = Format(Val(加總3_tb.Text), "#,##0") Set_清單9() Chart1.Series.Clear() : Chart1.ChartAreas(0).AxisX.Minimum = 0 If 主項2_cb.Text <> "" Then Chart1.Series.Add(主項2_cb.Text) If 主項2_cb.Text = "資本" Then : Chart1.Series(主項2_cb.Text).ChartType = SeriesChartType.Line Else : Chart1.Series(主項2_cb.Text).ChartType = SeriesChartType.Column : End If For i As Integer = 0 To 主表9_dgv.Rows.Count - 1 Chart1.Series(主項2_cb.Text).Points.AddXY(主表9_dgv.Rows(i).Cells("日期").Value.ToString, 主表9_dgv.Rows(i).Cells("金額3").Value.ToString) Next Chart4.Series.Clear() Chart4.Series.Add(主項2_cb.Text) : Chart4.Series(主項2_cb.Text).ChartType = SeriesChartType.Pie Chart4.Series(主項2_cb.Text).IsValueShownAsLabel = True Chart4.Series(主項2_cb.Text).IsVisibleInLegend = True Chart4.Series(主項2_cb.Text).IsXValueIndexed = True For i As Integer = 0 To 主表7_dgv.Rows.Count - 1 Chart4.Series(主項2_cb.Text).Points.AddXY(主表7_dgv.Rows(i).Cells("子細項").Value.ToString, Format(主表7_dgv.Rows(i).Cells("金額").Value, "#,##0")) Next End If If 主項1_cb.Text <> "" Then Chart1.Series.Add(主項1_cb.Text) If 主項1_cb.Text = "資本" Then : Chart1.Series(主項1_cb.Text).ChartType = SeriesChartType.Line Else : Chart1.Series(主項1_cb.Text).ChartType = SeriesChartType.Column : End If For i As Integer = 0 To 主表9_dgv.Rows.Count - 1 Chart1.Series(主項1_cb.Text).Points.AddXY(主表9_dgv.Rows(i).Cells("日期").Value.ToString, 主表9_dgv.Rows(i).Cells("金額2").Value.ToString) Next Chart2.Series.Clear() Chart2.Series.Add(主項1_cb.Text) : Chart2.Series(主項1_cb.Text).ChartType = SeriesChartType.Pie Chart2.Series(主項1_cb.Text).IsValueShownAsLabel = True Chart2.Series(主項1_cb.Text).IsVisibleInLegend = True Chart2.Series(主項1_cb.Text).IsXValueIndexed = True For i As Integer = 0 To 主表4_dgv.Rows.Count - 1 Chart2.Series(主項1_cb.Text).Points.AddXY(主表4_dgv.Rows(i).Cells("子細項").Value.ToString, Format(主表4_dgv.Rows(i).Cells("金額").Value, "#,##0")) Next End If If 主項_cb.Text <> "" Then Chart1.Series.Add(主項_cb.Text) If 主項_cb.Text = "資本" Then : Chart1.Series(主項_cb.Text).ChartType = SeriesChartType.Line Else : Chart1.Series(主項_cb.Text).ChartType = SeriesChartType.Column : End If For i As Integer = 0 To 主表9_dgv.Rows.Count - 1 Chart1.Series(主項_cb.Text).Points.AddXY(主表9_dgv.Rows(i).Cells("日期").Value.ToString, 主表9_dgv.Rows(i).Cells("金額1").Value.ToString) Next Chart3.Series.Clear() Chart3.Series.Add(主項_cb.Text) : Chart3.Series(主項_cb.Text).ChartType = SeriesChartType.Pie Chart3.Series(主項_cb.Text).IsValueShownAsLabel = True Chart3.Series(主項_cb.Text).IsVisibleInLegend = True Chart3.Series(主項_cb.Text).IsXValueIndexed = True For i As Integer = 0 To 主表1_dgv.Rows.Count - 1 Chart3.Series(主項_cb.Text).Points.AddXY(主表1_dgv.Rows(i).Cells("子細項").Value.ToString, Format(主表1_dgv.Rows(i).Cells("金額").Value, "#,##0")) Next End If End Sub Private Sub 主項下拉() ConnOpen() : SQL1 = "SELECT 主項 FROM 財務彙總紀錄_ICS WHERE 主項 NOT LIKE '上月結存' GROUP BY 主項 ORDER BY 主項 DESC" : CmdSet_For_dr() 主項_cb.Items.Clear() : 主項1_cb.Items.Clear() : 主項2_cb.Items.Clear() While (dr.Read()) : 主項_cb.Items.Add(dr("主項")) : 主項1_cb.Items.Add(dr("主項")) : 主項2_cb.Items.Add(dr("主項")) : End While : conn.Close() End Sub Private Sub ComboBox1下拉表單資料載入() ConnOpen() : SQL1 = "SELECT 年份 FROM 年份清單 ORDER BY 年份 DESC" : CmdSet_For_dr() 年份_cb.Items.Clear() : 年份_cb.Items.Add("") : While (dr.Read()) : 年份_cb.Items.Add(dr("年份")) : End While : conn.Close() End Sub Private Sub 財務_彙總表_ICS_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.MdiParent = GCM_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True GCM_ERP_SYS.WindowState = 2 ComboBox1下拉表單資料載入() : 主項下拉() If 主項_cb.Items.Count >= 1 Then : 主項_cb.SelectedIndex = 0 : End If If 主項_cb.Items.Count >= 2 Then : 主項1_cb.SelectedIndex = 1 : End If If 主項_cb.Items.Count >= 3 Then : 主項2_cb.SelectedIndex = 2 : End If End Sub Private Sub 財務_彙總表_Closed(sender As Object, e As EventArgs) Handles MyBase.Closed GCM_ERP_SYS.WindowState = 0 End Sub Private Sub 主表_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 主表_dgv.RowPostPaint Dim linePen As New Pen(Color.Blue, 2) : Dim linePen1 As New Pen(Color.Red, 2) If e.RowIndex = 主表_dgv.Rows.Count - 1 Then : Exit Sub : Else If 主表_dgv(0, e.RowIndex).Value.ToString <> 主表_dgv(0, e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(主表_dgv.RowHeadersVisible, 主表_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 主表_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 主表_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen, startX, startY, endX, startY) : Exit Sub End If If 主表_dgv(1, e.RowIndex).Value.ToString <> 主表_dgv(1, e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(主表_dgv.RowHeadersVisible, 主表_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 主表_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 主表_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen1, startX, startY, endX, startY) : Exit Sub End If End If End Sub Private Sub 主表3_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 主表3_dgv.RowPostPaint Dim linePen As New Pen(Color.Blue, 2) : Dim linePen1 As New Pen(Color.Red, 2) If e.RowIndex = 主表3_dgv.Rows.Count - 1 Then : Exit Sub : Else If 主表3_dgv(0, e.RowIndex).Value.ToString <> 主表3_dgv(0, e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(主表3_dgv.RowHeadersVisible, 主表3_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 主表3_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 主表3_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen, startX, startY, endX, startY) : Exit Sub End If If 主表3_dgv(1, e.RowIndex).Value.ToString <> 主表3_dgv(1, e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(主表3_dgv.RowHeadersVisible, 主表3_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 主表3_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 主表3_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen1, startX, startY, endX, startY) : Exit Sub End If End If End Sub Private Sub 主表6_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 主表6_dgv.RowPostPaint Dim linePen As New Pen(Color.Blue, 2) : Dim linePen1 As New Pen(Color.Red, 2) If e.RowIndex = 主表6_dgv.Rows.Count - 1 Then : Exit Sub : Else If 主表6_dgv(0, e.RowIndex).Value.ToString <> 主表6_dgv(0, e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(主表6_dgv.RowHeadersVisible, 主表6_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 主表6_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 主表6_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen, startX, startY, endX, startY) : Exit Sub End If If 主表6_dgv(1, e.RowIndex).Value.ToString <> 主表6_dgv(1, e.RowIndex + 1).Value.ToString Then Dim startX As Integer = IIf(主表6_dgv.RowHeadersVisible, 主表6_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1 Dim endX As Integer = startX + 主表6_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 主表6_dgv.HorizontalScrollingOffset e.Graphics.DrawLine(linePen1, startX, startY, endX, startY) : Exit Sub End If End If End Sub Private Sub 主項_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 主項_cb.SelectedIndexChanged Set_清單() : 彙總() End Sub Private Sub 主項1_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 主項1_cb.SelectedIndexChanged Set_清單3() : 彙總() End Sub Private Sub 主項2_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 主項2_cb.SelectedIndexChanged Set_清單6() : 彙總() End Sub Private Sub 年份_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 年份_cb.SelectedIndexChanged Set_清單() : 彙總() : Set_清單3() : 彙總() : Set_清單6() : 彙總() End Sub End Class