Nav apraksta
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

燈位基本資料.vb 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. Imports System.Data.Common
  2. Public Class 燈位基本資料
  3. Dim DGV選擇 As Integer
  4. Private Sub Set_清單1()
  5. Dim ds1 As New DataSet : 控制表_dgv.DataSource = Nothing : ds1.Clear()
  6. 控制表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  7. 控制表_dgv.ColumnHeadersHeight = 25 : 控制表_dgv.AllowUserToAddRows = False : 控制表_dgv.RowTemplate.Height = 25
  8. PA = 年度_cb.Text : SQL_登牆清單()
  9. da.Fill(ds1) : 控制表_dgv.DataSource = ds1.Tables(0) : conn.Close()
  10. Dim newFont As New System.Drawing.Font("微軟正黑體", 9) ' 創建一個新字體,Arial 12pt
  11. 控制表_dgv.RowsDefaultCellStyle.Font = newFont
  12. 控制表_dgv.Columns("燈數").DefaultCellStyle.Format = "#,##0.##" : 控制表_dgv.Columns("燈數").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  13. 控制表_dgv.Columns(1).Visible = False : 控制表_dgv.Columns(3).FillWeight = 160 : 控制表_dgv.Columns(5).Visible = False
  14. Dim 加總 As Integer = 0 : For I As Integer = 0 To 控制表_dgv.Rows.Count - 1 : 加總 += 控制表_dgv("燈數", I).Value : Next : 合計數_tb.Text = Strings.Format(加總, "#,##0")
  15. End Sub
  16. Private Sub Set_清單2()
  17. Dim ds1 As New DataSet : 明細表1_dgv.DataSource = Nothing : ds1.Clear()
  18. 明細表1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  19. 明細表1_dgv.ColumnHeadersHeight = 25 : 明細表1_dgv.AllowUserToAddRows = False : 明細表1_dgv.RowTemplate.Height = 25
  20. PA10 = 年度_cb.Text : SQL_燈號明細()
  21. da.Fill(ds1) : 明細表1_dgv.DataSource = ds1.Tables(0) : conn.Close()
  22. 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
  23. End Sub
  24. Private Sub Set_清單3()
  25. Dim ds1 As New DataSet : 明細表2_dgv.DataSource = Nothing : ds1.Clear()
  26. 明細表2_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  27. 明細表2_dgv.ColumnHeadersHeight = 25 : 明細表2_dgv.AllowUserToAddRows = False : 明細表2_dgv.RowTemplate.Height = 25
  28. SQL_燈號明細_列數()
  29. da.Fill(ds1) : 明細表2_dgv.DataSource = ds1.Tables(0) : conn.Close()
  30. End Sub
  31. Private Sub 年份_下拉表單資料載入()
  32. SQL_燈年份() : 年度_cb.Items.Clear() : While (dr.Read()) : 年度_cb.Items.Add(dr("年度")) : End While : conn.Close()
  33. End Sub
  34. Private Sub 燈位基本資料_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  35. Me.MdiParent = ICS_ASMS_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True
  36. 燈位_dgv.BringToFront()
  37. End Sub
  38. Private Sub 燈位基本資料_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
  39. 年份_下拉表單資料載入() : 年度_cb.Text = CInt(Year(Today())) - 1911 : Set_清單1()
  40. End Sub
  41. Private Sub 年度_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 年度_cb.SelectedIndexChanged
  42. PA = 年度_cb.Text : Set_清單1()
  43. End Sub
  44. Private Sub 燈位_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 燈位_dgv.CellClick
  45. If e.RowIndex = -1 Then : Else
  46. 行 = 燈位_dgv(0, e.RowIndex).Value.ToString() : 列 = 燈位_dgv.SelectedCells(0).ColumnIndex
  47. Dim 行值 As Integer = Convert.ToInt32(行) : Dim 列值 As Integer = Convert.ToInt32(列)
  48. Dim 資料行 As DataGridViewRow = Nothing
  49. For Each 行資料 As DataGridViewRow In 明細表1_dgv.Rows
  50. If 行資料.Cells("列位").Value.ToString() = 列 AndAlso 行資料.Cells("層位").Value.ToString() = 行 Then
  51. 資料行 = 行資料 : Exit For
  52. End If
  53. Next
  54. If 資料行 IsNot Nothing Then
  55. PA20 = 資料行.Cells("流水號").Value.ToString() : PA22 = 年度_cb.Text : PA23 = 殿_tb.Text : PA24 = 區編_tb.Text
  56. PA21 = 資料行.Cells("編號").Value.ToString() : PA25 = 牆位_bt.Text : PA26 = 燈種_bt.Text : PA27 = 資料行.Cells("姓名").Value.ToString()
  57. PA28 = 金額_tb.Text
  58. End If : 信眾燈位編輯.BringToFront() : 信眾燈位編輯.查詢物_bt.PerformClick()
  59. End If
  60. End Sub
  61. Private Sub 燈位_dgv_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 燈位_dgv.MouseUp
  62. 'If 燈位_dgv.SelectedCells.Count = 1 Then : MsgBox(燈位_dgv.SelectedCells(0).ColumnIndex & " " & 燈位_dgv.SelectedCells(0).RowIndex) : End If
  63. If 燈位_dgv.SelectedCells.Count = 1 Then : 列 = 燈位_dgv.SelectedCells(0).ColumnIndex : End If
  64. End Sub
  65. Private Sub 控制表_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 控制表_dgv.RowPostPaint
  66. Dim linePen As New Pen(Color.Red, 2)
  67. If e.RowIndex = 控制表_dgv.Rows.Count - 1 Then : Exit Sub : Else
  68. If 控制表_dgv(0, e.RowIndex).Value.ToString <> 控制表_dgv(0, e.RowIndex + 1).Value.ToString Then
  69. Dim startX As Integer = IIf(控制表_dgv.RowHeadersVisible, 控制表_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1
  70. Dim endX As Integer = startX + 控制表_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 控制表_dgv.HorizontalScrollingOffset
  71. e.Graphics.DrawLine(linePen, startX, startY, endX, startY) : Exit Sub
  72. End If
  73. End If
  74. End Sub
  75. Private Sub 控制表_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 控制表_dgv.CellClick
  76. If e.RowIndex = -1 Then : Else : DGV選擇 = e.RowIndex : 執行1_bt.PerformClick()
  77. End If
  78. End Sub
  79. Private Sub 執行1_bt_Click(sender As Object, e As EventArgs) Handles 執行1_bt.Click
  80. PA = 控制表_dgv(1, DGV選擇).Value.ToString : PA1 = 控制表_dgv(2, DGV選擇).Value.ToString : Set_清單2() : Set_清單3()
  81. 位置_tb.Text = 控制表_dgv(0, DGV選擇).Value.ToString & " (殿) - " & 控制表_dgv(2, DGV選擇).Value.ToString & " 區 - " & 控制表_dgv(3, DGV選擇).Value.ToString
  82. 殿_tb.Text = 控制表_dgv("廳位", DGV選擇).Value.ToString : 區編_tb.Text = 控制表_dgv("區編", DGV選擇).Value.ToString
  83. 牆位_bt.Text = 控制表_dgv("牆柱位", DGV選擇).Value.ToString : 燈種_bt.Text = 控制表_dgv("燈種", DGV選擇).Value.ToString
  84. 金額_tb.Text = 控制表_dgv("價格", DGV選擇).Value.ToString
  85. 燈位_dgv.Columns.Clear()
  86. 燈位_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  87. 燈位_dgv.ColumnHeadersHeight = 30 : 燈位_dgv.AllowUserToAddRows = False : 燈位_dgv.RowTemplate.Height = 25
  88. Dim columnName As String = "層"
  89. Dim newColumn As New DataGridViewTextBoxColumn With {
  90. .HeaderText = columnName,
  91. .Name = columnName,
  92. .Width = 30 ' 設定欄位寬度為 30
  93. }
  94. 燈位_dgv.Columns.Add(newColumn)
  95. For i As Integer = 1 To CInt(明細表2_dgv(0, 0).Value.ToString)
  96. Dim columnName1 As String = $"列{i:D3}" ' 產生列名稱,例如 "列001", "列002", ...
  97. Dim newColumn1 As New DataGridViewTextBoxColumn With {
  98. .HeaderText = columnName1,
  99. .Name = columnName1,
  100. .Width = 50 ' 設定欄位寬度為 30
  101. }
  102. 燈位_dgv.Columns.Add(newColumn1)
  103. Next
  104. 燈位_dgv.Columns(0).Frozen = True
  105. Dim 層數1, 層數2, 層數3, 列數1 As Integer
  106. 層數1 = 明細表1_dgv(1, 0).Value.ToString : 層數2 = 0 : 層數3 = 層數1
  107. For i As Integer = 0 To 明細表1_dgv.Rows.Count - 1
  108. '-------建立層數------------------------------------
  109. If 層數1 <> 層數2 Then
  110. 燈位_dgv.Rows.Insert(0)
  111. 燈位_dgv("層", 0).Value = 明細表1_dgv(1, i).Value.ToString
  112. End If
  113. If 層數3 <> 層數2 And 層數2 <> 0 Then
  114. 層數1 = 層數2 : 層數3 = 層數2
  115. End If
  116. 列數1 = 明細表1_dgv(0, i).Value.ToString
  117. '-------填入資料------------------------------------
  118. If CInt(明細表1_dgv(0, i).Value.ToString) = 列數1 Then
  119. 燈位_dgv(列數1, 0).Value = 明細表1_dgv("姓名", i).Value.ToString
  120. Else : 燈位_dgv(列數1, 0).Value = ""
  121. End If
  122. If i + 1 <= 明細表1_dgv.Rows.Count - 1 Then
  123. 層數2 = 明細表1_dgv(1, i + 1).Value.ToString
  124. End If
  125. Next
  126. End Sub
  127. Private Sub 燈種編輯_bt_Click(sender As Object, e As EventArgs) Handles 燈種編輯_bt.Click
  128. 燈種編輯.ShowDialog() : 年份_下拉表單資料載入() : 年度_cb.Text = CInt(Year(Today())) - 1911 : Set_清單1()
  129. End Sub
  130. Private Sub 燈位編輯_bt_Click(sender As Object, e As EventArgs) Handles 燈位編輯_bt.Click
  131. 年度_cb.Enabled = False : 信眾燈位編輯.Show()
  132. End Sub
  133. Private Sub 排序_bt_Click(sender As Object, e As EventArgs) Handles 排序_bt.Click
  134. ' 假設明細表1_dgv 中資料已經是按照由下到上的順序排序
  135. ' 若要將燈位_dgv 由下到上改成由上到下,只需將資料順序反轉即可
  136. ' 建立一個新的 DataTable 來存儲反向的資料
  137. Dim reversedDataTable As New DataTable()
  138. ' 將燈位_dgv 目前的欄位結構複製到新的 DataTable 中
  139. For Each column As DataGridViewColumn In 燈位_dgv.Columns
  140. reversedDataTable.Columns.Add(column.Name)
  141. Next
  142. ' 反向遍歷燈位_dgv 的資料列,將每一列的資料反向插入到新的 DataTable 中
  143. For rowIndex As Integer = 燈位_dgv.Rows.Count - 1 To 0 Step -1
  144. Dim rowData(燈位_dgv.Columns.Count - 1) As Object
  145. For columnIndex As Integer = 0 To 燈位_dgv.Columns.Count - 1
  146. rowData(columnIndex) = 燈位_dgv.Rows(rowIndex).Cells(columnIndex).Value
  147. Next
  148. reversedDataTable.Rows.Add(rowData)
  149. Next
  150. ' 清空燈位_dgv 中的資料
  151. 燈位_dgv.Rows.Clear()
  152. ' 將反向的資料設定為燈位_dgv 的資料來源
  153. For Each row As DataRow In reversedDataTable.Rows
  154. 燈位_dgv.Rows.Add(row.ItemArray)
  155. Next
  156. End Sub
  157. Private Sub 查詢_bt_Click(sender As Object, e As EventArgs) Handles 查詢_bt.Click
  158. 通知訊息 = "請輸入信眾的 [姓名]、[電話]、[住址] 的關鍵字來進行查詢!!" : 查詢視窗.ShowDialog() : PA57 = 訊息回應
  159. 連動模組.SetCallingPage("燈位基本資料") : 連動模組.ShowDialog() : 連動模組.BringToFront() : 查看燈位.ShowDialog() : 查看燈位.BringToFront()
  160. End Sub
  161. Public Sub ReceiveDataFromPageC(ByVal data As String, ByVal data1 As String)
  162. ' 在這裡處理從頁面B接收到的數據,將其設定到頁面A的TextBox中
  163. 年度_cb.Text = data : Set_清單1()
  164. Dim result As String() = data1.Split("-")
  165. For i As Integer = 0 To 控制表_dgv.Rows.Count - 1
  166. Dim str As String = 控制表_dgv.Rows(i).Cells("廳位").Value
  167. Dim str1 As String = 控制表_dgv.Rows(i).Cells("區編").Value
  168. Dim str2 As String = 控制表_dgv.Rows(i).Cells("牆柱位").Value
  169. If result(0) = str And result(1) = str1 And result(2) = str2 Then
  170. DGV選擇 = i : 執行1_bt.PerformClick()
  171. End If
  172. Next
  173. End Sub
  174. End Class