Imports System.Windows.Forms.DataVisualization.Charting Public Class 財務_彙總表_GCM ReadOnly ds, ds1, ds2, ds3, ds4, ds5, ds6, ds7, ds8, ds9, ds10 As New DataSet Dim 列高 As Integer '-----------------------------第一區----------------------------------------------------------------------------------------------------------------------- Private Sub Set_清單() 主表_dgv.DataSource = Nothing : ds.Clear() : 主表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表_dgv.ColumnHeadersHeight = 25 : 主表_dgv.AllowUserToAddRows = False : 主表_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT 日期, 子項, 子細項, SUM(金額) AS 金額 FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項_cb.Text & "') AND 日期 LIKE N'%" & 年份_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() For i As Integer = 0 To 主表1_dgv.Rows.Count - 1 主表1_dgv.Rows(i).Cells("比例.").Value = Strings.Format(CInt(主表1_dgv.Rows(i).Cells("金額").Value.ToString) / CInt(加總_tb.Text) * 100, "#,##0.00") & " %" Next End Sub Private Sub Set_清單1() 主表1_dgv.DataSource = Nothing : ds1.Clear() : 主表1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表1_dgv.ColumnHeadersHeight = 25 : 主表1_dgv.AllowUserToAddRows = False : 主表1_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT TOP(15) 子細項, SUM(金額) AS 金額, ABS(SUM(金額)) AS 比例, 子細項 AS [比例.] FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項_cb.Text & "') AND 子細項 NOT LIKE N'%借款%' AND 子細項 NOT LIKE N'%還款%' AND 日期 LIKE N'%" & 年份_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(3).FillWeight = 60 : 主表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.Columns(3).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 = 25 : 主表2_dgv.AllowUserToAddRows = False : 主表2_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT 日期, SUM(金額) AS 金額 FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項_cb.Text & "') AND 日期 LIKE N'%" & 年份_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 = 25 : 主表3_dgv.AllowUserToAddRows = False : 主表3_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT 日期, 子項, 子細項, SUM(金額) AS 金額 FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項1_cb.Text & "') AND 日期 LIKE N'%" & 年份_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() For i As Integer = 0 To 主表4_dgv.Rows.Count - 1 主表4_dgv.Rows(i).Cells("比例.").Value = Strings.Format(CInt(主表4_dgv.Rows(i).Cells("金額").Value.ToString) / CInt(加總1_tb.Text) * 100, "#,##0.00") & " %" Next End Sub Private Sub Set_清單4() 主表4_dgv.DataSource = Nothing : ds4.Clear() : 主表4_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表4_dgv.ColumnHeadersHeight = 25 : 主表4_dgv.AllowUserToAddRows = False : 主表4_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT TOP(15) 子細項, SUM(金額) AS 金額, ABS(SUM(金額)) AS 比例, 子細項 AS [比例.] FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項1_cb.Text & "') AND 子細項 NOT LIKE N'%借款%' AND 子細項 NOT LIKE N'%還款%' AND 日期 LIKE N'%" & 年份_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.Columns(3).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 = 25 : 主表5_dgv.AllowUserToAddRows = False : 主表5_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT 日期, SUM(金額) AS 金額 FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項1_cb.Text & "') AND 日期 LIKE N'%" & 年份_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 = 25 : 主表6_dgv.AllowUserToAddRows = False : 主表6_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT 日期, 子項, 子細項, SUM(金額) AS 金額 FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項2_cb.Text & "') AND 日期 LIKE N'%" & 年份_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() For i As Integer = 0 To 主表7_dgv.Rows.Count - 1 主表7_dgv.Rows(i).Cells("比例.").Value = Strings.Format(CInt(主表7_dgv.Rows(i).Cells("金額").Value.ToString) / CInt(加總2_tb.Text) * 100, "#,##0.00") & " %" Next End Sub Private Sub Set_清單7() 主表7_dgv.DataSource = Nothing : ds7.Clear() : 主表7_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表7_dgv.ColumnHeadersHeight = 25 : 主表7_dgv.AllowUserToAddRows = False : 主表7_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT TOP(15) 子細項, SUM(金額) AS 金額, ABS(SUM(金額)) AS 比例, 子細項 AS [比例.] FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項2_cb.Text & "') AND 子細項 NOT LIKE N'%借款%' AND 子細項 NOT LIKE N'%還款%' AND 日期 LIKE N'%" & 年份_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.Columns(3).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 = 25 : 主表8_dgv.AllowUserToAddRows = False : 主表8_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT 日期, SUM(金額) AS 金額 FROM 財務彙總紀錄 WHERE (主項 LIKE N'" & 主項2_cb.Text & "') AND 日期 LIKE N'%" & 年份_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 = 25 : 主表9_dgv.AllowUserToAddRows = False : 主表9_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT 日期, 日期 AS 金額1, 日期 AS 金額2, 日期 AS 金額3 FROM 財務彙總紀錄 WHERE 日期 LIKE N'%" & 年份_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 : Set_清單10() End Sub Private Sub Set_清單10() 主表10_dgv.DataSource = Nothing : ds10.Clear() : 主表10_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 主表10_dgv.ColumnHeadersHeight = 25 : 主表10_dgv.AllowUserToAddRows = False : 主表10_dgv.RowTemplate.Height = 列高 ConnOpen() SQL1 = "SELECT 財務彙總紀錄.日期, AA.餘額 FROM 財務彙總紀錄 LEFT OUTER JOIN (SELECT LEFT(日期, 7) AS 日期, SUM(收入 * 匯率) AS 餘額 FROM 財務流水帳 WHERE (類別 LIKE 'D%') AND (日期 LIKE N'%" & 年份_cb.Text & "%') GROUP BY LEFT(日期, 7)) AS AA ON LEFT(財務彙總紀錄.日期, 7) = AA.日期 WHERE (財務彙總紀錄.日期 LIKE N'%" & 年份_cb.Text & "%') GROUP BY 財務彙總紀錄.日期, AA.餘額 ORDER BY 財務彙總紀錄.日期" CmdSet_For_DGV() : da.Fill(ds10) : 主表10_dgv.DataSource = ds10.Tables(0) : conn.Close() For i As Integer = 0 To 主表10_dgv.Rows.Count - 1 If IsDBNull(主表10_dgv.Rows(i).Cells("餘額").Value) Then 主表10_dgv.Rows(i).Cells("餘額").Value = "0" End If If i > 0 Then If 主表10_dgv.Rows(i).Cells("餘額").Value = 0 And 主表10_dgv.Rows(i - 1).Cells("餘額").Value > 0 Then 主表10_dgv.Rows(i).Cells("餘額").Value = 主表10_dgv.Rows(i - 1).Cells("餘額").Value End If End If 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 Chart1.ChartAreas(0).AxisY.LabelStyle.Font = New Font("Arial", 8) : Chart1.ChartAreas(0).AxisY.LabelStyle.Format = "#,##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, 主表7_dgv.Rows(i).Cells("比例.").Value.ToString.Replace(" ", "").Replace("%", "")) 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, 主表4_dgv.Rows(i).Cells("比例.").Value.ToString.Replace(" ", "").Replace("%", "")) 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, 主表1_dgv.Rows(i).Cells("比例.").Value.ToString.Replace(" ", "").Replace("%", "")) Next End If Chart1.Series.Add("資金餘額") Chart1.Series("資金餘額").ChartType = SeriesChartType.Line For i As Integer = 0 To 主表10_dgv.Rows.Count - 1 Chart1.Series("資金餘額").Points.AddXY(主表10_dgv.Rows(i).Cells("日期").Value.ToString, 主表10_dgv.Rows(i).Cells("餘額").Value.ToString) Next End Sub Private Sub 主項下拉() ConnOpen() : SQL1 = "SELECT 主項 FROM 財務彙總紀錄 WHERE 主項 NOT LIKE N'上月結存' 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 財務_彙總表_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 : 列高 = 19 ComboBox1下拉表單資料載入() : 主項下拉() : 主項_cb.SelectedIndex = 0 : 主項1_cb.SelectedIndex = 1 : 主項2_cb.SelectedIndex = 2 主表_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) : 主表1_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 主表2_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) : 主表3_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 主表4_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) : 主表5_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 主表6_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) : 主表7_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 主表8_dgv.RowsDefaultCellStyle.Font = New System.Drawing.Font("微軟正黑體", 7.6) 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