123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- Imports System.Data.Common
-
- Public Class 燈位基本資料
- Dim DGV選擇 As Integer
- Private Sub Set_清單1()
- Dim ds1 As New DataSet : 控制表_dgv.DataSource = Nothing : ds1.Clear()
- 控制表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 控制表_dgv.ColumnHeadersHeight = 25 : 控制表_dgv.AllowUserToAddRows = False : 控制表_dgv.RowTemplate.Height = 25
- PA = 年度_cb.Text : SQL_登牆清單()
- da.Fill(ds1) : 控制表_dgv.DataSource = ds1.Tables(0) : conn.Close()
- Dim newFont As New System.Drawing.Font("微軟正黑體", 9) ' 創建一個新字體,Arial 12pt
- 控制表_dgv.RowsDefaultCellStyle.Font = newFont
- 控制表_dgv.Columns("燈數").DefaultCellStyle.Format = "#,##0.##" : 控制表_dgv.Columns("燈數").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
- 控制表_dgv.Columns(1).Visible = False : 控制表_dgv.Columns(3).FillWeight = 160 : 控制表_dgv.Columns(5).Visible = False
- Dim 加總 As Integer = 0 : For I As Integer = 0 To 控制表_dgv.Rows.Count - 1 : 加總 += 控制表_dgv("燈數", I).Value : Next : 合計數_tb.Text = Strings.Format(加總, "#,##0")
- End Sub
- Private Sub Set_清單2()
- Dim ds1 As New DataSet : 明細表1_dgv.DataSource = Nothing : ds1.Clear()
- 明細表1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 明細表1_dgv.ColumnHeadersHeight = 25 : 明細表1_dgv.AllowUserToAddRows = False : 明細表1_dgv.RowTemplate.Height = 25
- PA10 = 年度_cb.Text : SQL_燈號明細()
- da.Fill(ds1) : 明細表1_dgv.DataSource = ds1.Tables(0) : conn.Close()
- For I As Integer = 0 To 明細表1_dgv.Rows.Count - 1 : If IsDBNull(明細表1_dgv("姓名", I).Value) Then : 明細表1_dgv("姓名", I).Value = "" : End If : Next
- End Sub
- Private Sub Set_清單3()
- Dim ds1 As New DataSet : 明細表2_dgv.DataSource = Nothing : ds1.Clear()
- 明細表2_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 明細表2_dgv.ColumnHeadersHeight = 25 : 明細表2_dgv.AllowUserToAddRows = False : 明細表2_dgv.RowTemplate.Height = 25
- SQL_燈號明細_列數()
- da.Fill(ds1) : 明細表2_dgv.DataSource = ds1.Tables(0) : conn.Close()
- End Sub
- Private Sub 年份_下拉表單資料載入()
- SQL_燈年份() : 年度_cb.Items.Clear() : 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 = ICS_ASMS_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True
- 燈位_dgv.BringToFront()
- End Sub
- Private Sub 燈位基本資料_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
- 年份_下拉表單資料載入() : 年度_cb.Text = CInt(Year(Today())) - 1911 : Set_清單1()
- End Sub
- Private Sub 年度_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 年度_cb.SelectedIndexChanged
- PA = 年度_cb.Text : Set_清單1()
- End Sub
- Private Sub 燈位_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 燈位_dgv.CellClick
- If e.RowIndex = -1 Then : Else
- 行 = 燈位_dgv(0, e.RowIndex).Value.ToString() : 列 = 燈位_dgv.SelectedCells(0).ColumnIndex
-
- Dim 行值 As Integer = Convert.ToInt32(行) : Dim 列值 As Integer = Convert.ToInt32(列)
- Dim 資料行 As DataGridViewRow = Nothing
- For Each 行資料 As DataGridViewRow In 明細表1_dgv.Rows
- If 行資料.Cells("列位").Value.ToString() = 列 AndAlso 行資料.Cells("層位").Value.ToString() = 行 Then
- 資料行 = 行資料 : Exit For
- End If
- Next
- If 資料行 IsNot Nothing Then
- PA20 = 資料行.Cells("流水號").Value.ToString() : PA22 = 年度_cb.Text : PA23 = 殿_tb.Text : PA24 = 區編_tb.Text
- PA21 = 資料行.Cells("編號").Value.ToString() : PA25 = 牆位_bt.Text : PA26 = 燈種_bt.Text : PA27 = 資料行.Cells("姓名").Value.ToString()
- PA28 = 金額_tb.Text
- End If : 信眾燈位編輯.BringToFront() : 信眾燈位編輯.查詢物_bt.PerformClick()
- End If
- End Sub
- Private Sub 燈位_dgv_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 燈位_dgv.MouseUp
- 'If 燈位_dgv.SelectedCells.Count = 1 Then : MsgBox(燈位_dgv.SelectedCells(0).ColumnIndex & " " & 燈位_dgv.SelectedCells(0).RowIndex) : End If
- If 燈位_dgv.SelectedCells.Count = 1 Then : 列 = 燈位_dgv.SelectedCells(0).ColumnIndex : End If
- End Sub
- Private Sub 控制表_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 控制表_dgv.RowPostPaint
- Dim linePen 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
- End If
- End Sub
- Private Sub 控制表_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 控制表_dgv.CellClick
- If e.RowIndex = -1 Then : Else : DGV選擇 = e.RowIndex : 執行1_bt.PerformClick()
- End If
- End Sub
- Private Sub 執行1_bt_Click(sender As Object, e As EventArgs) Handles 執行1_bt.Click
- PA = 控制表_dgv(1, DGV選擇).Value.ToString : PA1 = 控制表_dgv(2, DGV選擇).Value.ToString : Set_清單2() : Set_清單3()
- 位置_tb.Text = 控制表_dgv(0, DGV選擇).Value.ToString & " (殿) - " & 控制表_dgv(2, DGV選擇).Value.ToString & " 區 - " & 控制表_dgv(3, DGV選擇).Value.ToString
- 殿_tb.Text = 控制表_dgv("廳位", DGV選擇).Value.ToString : 區編_tb.Text = 控制表_dgv("區編", DGV選擇).Value.ToString
- 牆位_bt.Text = 控制表_dgv("牆柱位", DGV選擇).Value.ToString : 燈種_bt.Text = 控制表_dgv("燈種", DGV選擇).Value.ToString
- 金額_tb.Text = 控制表_dgv("價格", DGV選擇).Value.ToString
-
- 燈位_dgv.Columns.Clear()
- 燈位_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 燈位_dgv.ColumnHeadersHeight = 30 : 燈位_dgv.AllowUserToAddRows = False : 燈位_dgv.RowTemplate.Height = 25
- Dim columnName As String = "層"
- Dim newColumn As New DataGridViewTextBoxColumn With {
- .HeaderText = columnName,
- .Name = columnName,
- .Width = 30 ' 設定欄位寬度為 30
- }
- 燈位_dgv.Columns.Add(newColumn)
- For i As Integer = 1 To CInt(明細表2_dgv(0, 0).Value.ToString)
- Dim columnName1 As String = $"列{i:D3}" ' 產生列名稱,例如 "列001", "列002", ...
- Dim newColumn1 As New DataGridViewTextBoxColumn With {
- .HeaderText = columnName1,
- .Name = columnName1,
- .Width = 50 ' 設定欄位寬度為 30
- }
- 燈位_dgv.Columns.Add(newColumn1)
- Next
- 燈位_dgv.Columns(0).Frozen = True
- Dim 層數1, 層數2, 層數3, 列數1 As Integer
- 層數1 = 明細表1_dgv(1, 0).Value.ToString : 層數2 = 0 : 層數3 = 層數1
- For i As Integer = 0 To 明細表1_dgv.Rows.Count - 1
- '-------建立層數------------------------------------
- If 層數1 <> 層數2 Then
- 燈位_dgv.Rows.Insert(0)
- 燈位_dgv("層", 0).Value = 明細表1_dgv(1, i).Value.ToString
- End If
- If 層數3 <> 層數2 And 層數2 <> 0 Then
- 層數1 = 層數2 : 層數3 = 層數2
- End If
- 列數1 = 明細表1_dgv(0, i).Value.ToString
- '-------填入資料------------------------------------
- If CInt(明細表1_dgv(0, i).Value.ToString) = 列數1 Then
- 燈位_dgv(列數1, 0).Value = 明細表1_dgv("姓名", i).Value.ToString
- Else : 燈位_dgv(列數1, 0).Value = ""
- End If
- If i + 1 <= 明細表1_dgv.Rows.Count - 1 Then
- 層數2 = 明細表1_dgv(1, i + 1).Value.ToString
- End If
- Next
- End Sub
- Private Sub 燈種編輯_bt_Click(sender As Object, e As EventArgs) Handles 燈種編輯_bt.Click
- 燈種編輯.ShowDialog() : 年份_下拉表單資料載入() : 年度_cb.Text = CInt(Year(Today())) - 1911 : Set_清單1()
- End Sub
- Private Sub 燈位編輯_bt_Click(sender As Object, e As EventArgs) Handles 燈位編輯_bt.Click
- 年度_cb.Enabled = False : 信眾燈位編輯.Show()
- End Sub
-
- Private Sub 排序_bt_Click(sender As Object, e As EventArgs) Handles 排序_bt.Click
- ' 假設明細表1_dgv 中資料已經是按照由下到上的順序排序
- ' 若要將燈位_dgv 由下到上改成由上到下,只需將資料順序反轉即可
-
- ' 建立一個新的 DataTable 來存儲反向的資料
- Dim reversedDataTable As New DataTable()
-
- ' 將燈位_dgv 目前的欄位結構複製到新的 DataTable 中
- For Each column As DataGridViewColumn In 燈位_dgv.Columns
- reversedDataTable.Columns.Add(column.Name)
- Next
-
- ' 反向遍歷燈位_dgv 的資料列,將每一列的資料反向插入到新的 DataTable 中
- For rowIndex As Integer = 燈位_dgv.Rows.Count - 1 To 0 Step -1
- Dim rowData(燈位_dgv.Columns.Count - 1) As Object
- For columnIndex As Integer = 0 To 燈位_dgv.Columns.Count - 1
- rowData(columnIndex) = 燈位_dgv.Rows(rowIndex).Cells(columnIndex).Value
- Next
- reversedDataTable.Rows.Add(rowData)
- Next
-
- ' 清空燈位_dgv 中的資料
- 燈位_dgv.Rows.Clear()
-
- ' 將反向的資料設定為燈位_dgv 的資料來源
- For Each row As DataRow In reversedDataTable.Rows
- 燈位_dgv.Rows.Add(row.ItemArray)
- Next
- End Sub
- Private Sub 查詢_bt_Click(sender As Object, e As EventArgs) Handles 查詢_bt.Click
- 通知訊息 = "請輸入信眾的 [姓名]、[電話]、[住址] 的關鍵字來進行查詢!!" : 查詢視窗.ShowDialog() : PA57 = 訊息回應
- 連動模組.SetCallingPage("燈位基本資料") : 連動模組.ShowDialog() : 連動模組.BringToFront() : 查看燈位.ShowDialog() : 查看燈位.BringToFront()
- End Sub
-
- Public Sub ReceiveDataFromPageC(ByVal data As String, ByVal data1 As String)
- ' 在這裡處理從頁面B接收到的數據,將其設定到頁面A的TextBox中
- 年度_cb.Text = data : Set_清單1()
- Dim result As String() = data1.Split("-")
- For i As Integer = 0 To 控制表_dgv.Rows.Count - 1
- Dim str As String = 控制表_dgv.Rows(i).Cells("廳位").Value
- Dim str1 As String = 控制表_dgv.Rows(i).Cells("區編").Value
- Dim str2 As String = 控制表_dgv.Rows(i).Cells("牆柱位").Value
- If result(0) = str And result(1) = str1 And result(2) = str2 Then
- DGV選擇 = i : 執行1_bt.PerformClick()
- End If
- Next
- End Sub
- End Class
|