123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235 |
- Imports System.Windows.Forms.DataVisualization.Charting
- Public Class 車輛銷售報表
- ReadOnly ds As New DataSet : ReadOnly ds1 As New DataSet
- Dim NUM1, NUM2, NUM3 As Integer : Dim 狀態, 價, 車 As String
- Private maxY As Long = 0
- Private Sub 車輛銷售報表_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- If CC(104) = False Then
- 車廠型態 = False
- Else
- 線路選擇.ShowDialog() : 線路選擇.BringToFront()
- End If
- Me.MdiParent = ICS_ASMS_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True
- If 車廠型態 = True Then
- 狀態 = "車輛買賣"
- 價 = "賣出售價"
- Else
- 狀態 = "保養維修"
- 價 = "買入進價"
- End If
- ComboBox1下拉表單資料載入()
- Set_清單1() : Set_清單2()
- End Sub
- Private Function IsVerticalScrollBarVisible(dgv As DataGridView) As Boolean
- Return dgv.FirstDisplayedScrollingRowIndex > 0 OrElse dgv.DisplayedRowCount(False) < dgv.Rows.Count
- End Function
-
- Private Sub ComboBox1下拉表單資料載入()
- conn.Close()
- SQL_營運報表_年份查詢()
- 年份清單_cb.Items.Clear()
- While (dr.Read()) : 年份清單_cb.Items.Add(dr("年份")) : End While
- conn.Close()
- 年份清單_cb.Text = Year(Today)
-
- 月份清單_cb.Items.Clear()
- 月份清單_cb.Items.Add("")
- Dim currentMonth As Integer = DateTime.Now.Month
- For month As Integer = 1 To 12
- Dim monthString As String = month.ToString("D2") ' 这里使用 "D2" 格式化将单个数字的月份前面补零
- 月份清單_cb.Items.Add(monthString)
-
- ' 如果这个月份是当前月份,可以将其选中
- If month = currentMonth Then
- 月份清單_cb.SelectedItem = monthString
- End If
- Next
-
-
-
-
- End Sub
- Private Sub Set_清單1()
- Dim ds1, ds2 As New DataSet : 車種_dgv.DataSource = Nothing : ds1.Clear() : 合計1_dgv.DataSource = Nothing : ds2.Clear()
- 車種_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 車種_dgv.ColumnHeadersHeight = 25 : 車種_dgv.AllowUserToAddRows = False : 車種_dgv.RowTemplate.Height = 20
- 合計1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 合計1_dgv.ColumnHeadersHeight = 25 : 合計1_dgv.AllowUserToAddRows = False : 合計1_dgv.RowTemplate.Height = 20
- 合計1_dgv.ScrollBars = ScrollBars.None : 合計1_dgv.ColumnHeadersVisible = False
-
- PA58 = 年份清單_cb.Text & 月份清單_cb.Text
- SQL_車輛銷售報表_車種(價, 狀態) : da.Fill(ds1) : 車種_dgv.DataSource = ds1.Tables(0) : conn.Close()
- SQL_車輛銷售報表_車種合計(價, 狀態) : da.Fill(ds2) : 合計1_dgv.DataSource = ds2.Tables(0) : conn.Close()
-
- 車種_dgv.Columns(0).FillWeight = 40 : 車種_dgv.Columns(1).FillWeight = 20 : 車種_dgv.Columns(2).FillWeight = 40
- 車種_dgv.Columns("總價").DefaultCellStyle.Format = "#,##0"
- 車種_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- 車種_dgv.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
- 車種_dgv.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- 車種_dgv.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
-
- 合計1_dgv.Columns(0).FillWeight = 40 : 合計1_dgv.Columns(1).FillWeight = 20 : 合計1_dgv.Columns(2).FillWeight = 40
- 合計1_dgv.Columns("總價").DefaultCellStyle.Format = "#,##0" : 合計1_dgv.Columns("次數").DefaultCellStyle.Format = "#,##0"
- 合計1_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- 合計1_dgv.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
- 合計1_dgv.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- 合計1_dgv.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
- NUM3 = 0
- 合計1_dgv.Rows(0).Cells(0).Value = "合計:" : 合計1_dgv.Rows(0).Cells(1).Value = "0" : 合計1_dgv.Rows(0).Cells(2).Value = "0"
- For i As Integer = 0 To 車種_dgv.Rows.Count - 1
- 合計1_dgv.Rows(0).Cells(1).Value += 車種_dgv.Rows(i).Cells(1).Value
- 合計1_dgv.Rows(0).Cells(2).Value += 車種_dgv.Rows(i).Cells(2).Value
- If 車種_dgv.Rows(i).Cells(2).Value > NUM3 Then
- NUM3 = 車種_dgv.Rows(i).Cells(2).Value
- End If
- Next
- If 車種_dgv.Rows.Count Mod 15 = 0 Then
- ' 如果能整除15,直接等于商
- NUM1 = (車種_dgv.Rows.Count / 15) - 1
- Else
- ' 如果不能整除15,向上取整
- NUM1 = 車種_dgv.Rows.Count \ 15
- End If
- NUM2 = 0
- If IsVerticalScrollBarVisible(車種_dgv) Then : 合計1_dgv.Size = New Size(車種_dgv.Size.Width - 17, 合計1_dgv.Size.Height)
- Else : 合計1_dgv.Size = New Size(車種_dgv.Size.Width, 合計1_dgv.Size.Height) : End If
- If 車種_dgv.Rows.Count > 0 Then
- 彙總1()
- 下一頁_bt.Visible = True
- 上一頁_bt.Visible = True
- Else
- Chart2.Series.Clear()
- 下一頁_bt.Visible = False
- 上一頁_bt.Visible = False
- End If
- End Sub
-
- Private Sub Set_清單2()
- Dim ds1, ds2 As New DataSet : 計算_dgv.DataSource = Nothing : ds1.Clear() : 合計2_dgv.DataSource = Nothing : ds2.Clear()
- 計算_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 計算_dgv.ColumnHeadersHeight = 25 : 計算_dgv.AllowUserToAddRows = False : 計算_dgv.RowTemplate.Height = 20
- 合計2_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 合計2_dgv.ColumnHeadersHeight = 25 : 合計2_dgv.AllowUserToAddRows = False : 合計2_dgv.RowTemplate.Height = 20
- 合計2_dgv.ScrollBars = ScrollBars.None : 合計2_dgv.ColumnHeadersVisible = False
- SQL_車輛銷售報表_日期合計(價, 狀態) : da.Fill(ds2) : 合計2_dgv.DataSource = ds2.Tables(0) : conn.Close()
- 合計2_dgv.Columns("總價").DefaultCellStyle.Format = "#,##0"
- 合計2_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- 合計2_dgv.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
-
-
- Dim str1 As String = 年份清單_cb.Text
- Dim str2 As String = 月份清單_cb.Text
- If str2 <> "" Then
- PA58 = 年份清單_cb.Text & 月份清單_cb.Text
- SQL_車輛銷售報表_日期(價, 狀態) : da.Fill(ds1) : 計算_dgv.DataSource = ds1.Tables(0) : conn.Close()
- Dim table As New DataTable()
- table.Columns.Add("日期", GetType(String))
- table.Columns.Add("金額", GetType(Decimal))
- Dim daysInMonth As Integer = DateTime.DaysInMonth(CInt(str1), CInt(str2))
- For day As Integer = 1 To daysInMonth
- Dim dateStr As String = str1 & str2.PadLeft(2, "0"c) & day.ToString().PadLeft(2, "0"c)
- table.Rows.Add(dateStr, 0)
- Next
- 日期_dgv.DataSource = table
- 日期_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 日期_dgv.ColumnHeadersHeight = 25 : 日期_dgv.AllowUserToAddRows = False : 日期_dgv.RowTemplate.Height = 20
- 日期_dgv.Columns("金額").DefaultCellStyle.Format = "#,##0"
- 日期_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- 日期_dgv.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
- For i As Integer = 0 To 日期_dgv.Rows.Count - 1
- For j As Integer = 0 To 計算_dgv.Rows.Count - 1
- If 日期_dgv.Rows(i).Cells("日期").Value = 計算_dgv.Rows(j).Cells("日期").Value Then
- 日期_dgv.Rows(i).Cells("金額").Value = 計算_dgv.Rows(j).Cells("總價").Value
- End If
- Next
- Next
- Else
- PA58 = 年份清單_cb.Text
- SQL_車輛銷售報表_日期年(價, 狀態) : da.Fill(ds1) : 計算_dgv.DataSource = ds1.Tables(0) : conn.Close()
- Dim table As New DataTable()
- table.Columns.Add("月份", GetType(String))
- table.Columns.Add("金額", GetType(Decimal))
- For day As Integer = 1 To 12
- Dim dateStr As String = str1 & day.ToString().PadLeft(2, "0"c)
- table.Rows.Add(dateStr, 0)
- Next
- 日期_dgv.DataSource = table
- 日期_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 日期_dgv.ColumnHeadersHeight = 25 : 日期_dgv.AllowUserToAddRows = False : 日期_dgv.RowTemplate.Height = 20
- 日期_dgv.Columns("金額").DefaultCellStyle.Format = "#,##0"
- 日期_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
- 日期_dgv.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
- For i As Integer = 0 To 日期_dgv.Rows.Count - 1
- For j As Integer = 0 To 計算_dgv.Rows.Count - 1
- If 日期_dgv.Rows(i).Cells("月份").Value = 計算_dgv.Rows(j).Cells("日期").Value Then
- 日期_dgv.Rows(i).Cells("金額").Value = 計算_dgv.Rows(j).Cells("總價").Value
- End If
- Next
- Next
- End If
- 合計2_dgv.Rows(0).Cells(0).Value = "合計:" : 合計2_dgv.Rows(0).Cells(1).Value = "0"
- For i As Integer = 0 To 日期_dgv.Rows.Count - 1
- 合計2_dgv.Rows(0).Cells(1).Value += 日期_dgv.Rows(i).Cells(1).Value
- Next
- If IsVerticalScrollBarVisible(日期_dgv) Then : 合計2_dgv.Size = New Size(日期_dgv.Size.Width - 17, 合計2_dgv.Size.Height)
- Else : 合計2_dgv.Size = New Size(日期_dgv.Size.Width, 合計2_dgv.Size.Height) : End If
- If 合計2_dgv.Rows(0).Cells(1).Value <> 0 Then
- 彙總()
- Else
- Chart1.Series.Clear()
- End If
-
- End Sub
- Private Sub 彙總()
- Chart1.Series.Clear()
- Chart1.Series.Add("金額") : Chart1.Series("金額").ChartType = SeriesChartType.Column
- Chart1.ChartAreas(0).BackColor = Color.Transparent : Chart1.Legends(0).BackColor = Color.Transparent
- Chart1.ChartAreas(0).AxisY.LabelStyle.Font = New Font("Arial", 8) : Chart1.ChartAreas(0).AxisY.LabelStyle.Format = "#,##0"
- For i As Integer = 0 To 日期_dgv.Rows.Count - 1
- Dim fullString As String = 日期_dgv.Rows(i).Cells(0).Value.ToString
- Dim lastTwoChars As String = fullString.Substring(fullString.Length - 2)
- Chart1.Series("金額").Points.AddXY(lastTwoChars, CLng(日期_dgv.Rows(i).Cells(1).Value.ToString))
- Next
- End Sub
-
- Private Sub 彙總1()
- Chart2.Series.Clear()
- Chart2.Series.Add("金額") : Chart2.Series("金額").ChartType = SeriesChartType.Column
- Chart2.Series.Add("次數") : Chart2.Series("次數").ChartType = SeriesChartType.FastLine
- Chart2.ChartAreas(0).BackColor = Color.Transparent : Chart2.Legends(0).BackColor = Color.Transparent
- Chart2.ChartAreas(0).AxisY.LabelStyle.Font = New Font("Arial", 8) : Chart2.ChartAreas(0).AxisY.LabelStyle.Format = "#,##0"
- Chart2.ChartAreas(0).AxisY.Minimum = 0
-
- Dim sum3 As Double = 合計1_dgv.Rows(0).Cells(2).Value / 合計1_dgv.Rows(0).Cells(1).Value
-
- For i As Integer = 15 * NUM2 To (15 * (NUM2 + 1)) - 1
- If i < 車種_dgv.Rows.Count Then
-
- Chart2.Series("金額").Points.AddXY(車種_dgv.Rows(i).Cells(0).Value.ToString, CLng(車種_dgv.Rows(i).Cells(2).Value.ToString))
- Chart2.Series("次數").Points.AddXY(車種_dgv.Rows(i).Cells(0).Value.ToString, CLng(車種_dgv.Rows(i).Cells(1).Value.ToString) * sum3)
- End If
- Next
-
- End Sub
- Private Sub 下一頁_bt_Click(sender As Object, e As EventArgs) Handles 下一頁_bt.Click
- If NUM2 < NUM1 Then
- NUM2 += 1
- End If
- 彙總1()
- End Sub
-
- Private Sub 上一頁_bt_Click(sender As Object, e As EventArgs) Handles 上一頁_bt.Click
- If NUM2 > 0 Then
- NUM2 -= 1
- End If
- 彙總1()
- End Sub
- Private Sub 年份清單_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 年份清單_cb.SelectedIndexChanged
- maxY = 0 : Set_清單1() : Set_清單2()
- End Sub
- Private Sub 月份清單_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 月份清單_cb.SelectedIndexChanged
- maxY = 0 : Set_清單1() : Set_清單2()
- End Sub
-
-
- End Class
|