Nessuna descrizione
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

自動點燈系統.vb 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. Public Class 自動點燈系統
  2. Dim 新流水1 As String
  3. Private Sub 自動點燈系統_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4. 明細表_dgv.BringToFront()
  5. SQL_燈年份() : 年度_cb.Items.Clear() : While (dr.Read()) : 年度_cb.Items.Add(dr("年度")) : End While : conn.Close()
  6. Dim 年度 As Integer = DateTime.Now.Year
  7. Dim 民國年份 As Integer = 年度 - 1911
  8. 年度_cb.Text = 民國年份.ToString()
  9. 明細表_dgv.Enabled = False
  10. Set_清單1() : Set_清單2() : PA = 年度_cb.Text : Set_清單7() : Set_清單3() : Set_清單4()
  11. End Sub
  12. Private Sub 年度_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 年度_cb.SelectedIndexChanged
  13. PA = 年度_cb.Text : Set_清單7() : Set_清單3() : Set_清單4()
  14. End Sub
  15. Private Sub Set_清單1()
  16. Dim ds1 As New DataSet : 控制表_dgv.DataSource = Nothing : ds1.Clear()
  17. 控制表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  18. 控制表_dgv.ColumnHeadersHeight = 30 : 控制表_dgv.AllowUserToAddRows = False : 控制表_dgv.RowTemplate.Height = 30
  19. SQL_自動點燈_控制表清單()
  20. da.Fill(ds1) : 控制表_dgv.DataSource = ds1.Tables(0) : conn.Close()
  21. Dim newFont As New System.Drawing.Font("微軟正黑體", 9) ' 創建一個新字體,Arial 12pt
  22. 控制表_dgv.RowsDefaultCellStyle.Font = newFont
  23. 控制表_dgv.Columns(0).FillWeight = 60 : 控制表_dgv.Columns(8).FillWeight = 40 : 控制表_dgv.Columns(11).Visible = False
  24. 控制表_dgv.Columns(1).Visible = False : 控制表_dgv.Columns(2).Visible = False : 控制表_dgv.Columns(10).Visible = False
  25. 控制表_dgv.Columns(3).Visible = False : 控制表_dgv.Columns(4).Visible = False : 控制表_dgv.Columns(5).Visible = False
  26. 控制表_dgv.Columns(6).Visible = False : 控制表_dgv.Columns(7).Visible = False : 控制表_dgv.Columns(9).Visible = False
  27. Dim rowsToRemove As New List(Of Integer)
  28. For i As Integer = 0 To 控制表_dgv.Rows.Count - 1
  29. PA2 = 控制表_dgv.Rows(i).Cells("單號").Value.ToString : Set_清單8()
  30. Dim rowShouldBeRemoved As Boolean = True ' 如果控制表1_dgv 沒有任何資料,也将该行添加到需要删除的列表中
  31. If 控制表1_dgv.Rows.Count = 0 Then : rowShouldBeRemoved = True : Else ' 假如 控制表1_dgv 內有任一筆資料是 true,保留该行
  32. For j As Integer = 0 To 控制表1_dgv.Rows.Count - 1
  33. Dim row As DataGridViewRow = 控制表1_dgv.Rows(j)
  34. Dim rowHasTrueValue As Boolean = False
  35. For k As Integer = 1 To 10
  36. Dim columnName As String = "CH" & k.ToString()
  37. If Not DBNull.Value.Equals(row.Cells(columnName).Value) AndAlso Convert.ToBoolean(row.Cells(columnName).Value) Then
  38. rowHasTrueValue = True : Exit For
  39. End If
  40. Next : If rowHasTrueValue Then : rowShouldBeRemoved = False : Exit For : End If
  41. Next
  42. End If : If rowShouldBeRemoved Then : rowsToRemove.Add(i) : End If
  43. Next
  44. ' 倒序删除要删除的行,以避免索引错误
  45. For i As Integer = rowsToRemove.Count - 1 To 0 Step -1 : 控制表_dgv.Rows.RemoveAt(rowsToRemove(i)) : Next
  46. End Sub
  47. Private Sub Set_清單2()
  48. 明細表_dgv.Columns.Clear()
  49. Dim ds2 As New DataSet : 明細表_dgv.DataSource = Nothing : ds2.Clear()
  50. 明細表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  51. 明細表_dgv.ColumnHeadersHeight = 30 : 明細表_dgv.AllowUserToAddRows = False : 明細表_dgv.RowTemplate.Height = 30
  52. PA = 年度_cb.Text : PA1 = 單號_tb.Text : Set_清單7() : Set_清單5() : Set_清單3() : Set_清單4() : SQL2 = ""
  53. For i As Integer = 0 To 明細表2_dgv.Rows.Count - 1 : SQL2 &= " AND (編號 NOT LIKE N'" & 明細表2_dgv("科目編號", i).Value.ToString & "')" : Next
  54. SQL_燈科目讀取1() : 科目_cb.Items.Clear() : 編號_cb.Items.Clear()
  55. While (dr.Read()) : 科目_cb.Items.Add(dr("會計科目")) : 編號_cb.Items.Add(dr("編號")) : End While : conn.Close()
  56. Dim CN00 As String = "姓名" : Dim NC00 As New DataGridViewTextBoxColumn With {.HeaderText = CN00, .Name = CN00, .FillWeight = 30} : 明細表_dgv.Columns.Add(NC00)
  57. Dim CN01 As String = "查" : Dim NC01 As New DataGridViewImageColumn With {.HeaderText = CN01, .Name = CN01, .FillWeight = 15} : 明細表_dgv.Columns.Add(NC01)
  58. Dim CN011 As String = "性別" : Dim NC011 As New DataGridViewTextBoxColumn With {.HeaderText = CN011, .Name = CN011, .FillWeight = 20} : 明細表_dgv.Columns.Add(NC011)
  59. Dim CN012 As String = "生肖" : Dim NC012 As New DataGridViewTextBoxColumn With {.HeaderText = CN012, .Name = CN012, .FillWeight = 20} : 明細表_dgv.Columns.Add(NC012)
  60. Dim CN02 As String = "會計科目" : Dim NC02 As New DataGridViewTextBoxColumn With {.HeaderText = CN02, .Name = CN02, .FillWeight = 40} : 明細表_dgv.Columns.Add(NC02)
  61. Dim CN03 As String = "課目編號" : Dim NC03 As New DataGridViewTextBoxColumn With {.HeaderText = CN03, .Name = CN03, .FillWeight = 40} : 明細表_dgv.Columns.Add(NC03)
  62. Dim CN04 As String = "內容" : Dim NC04 As New DataGridViewTextBoxColumn With {.HeaderText = CN04, .Name = CN04, .FillWeight = 130} : 明細表_dgv.Columns.Add(NC04)
  63. Dim CN05 As String = "非點燈收款" : Dim NC05 As New DataGridViewTextBoxColumn With {.HeaderText = CN05, .Name = CN05, .FillWeight = 50} : 明細表_dgv.Columns.Add(NC05)
  64. For i As Integer = 0 To 明細表1_dgv.Rows.Count - 1
  65. Dim columnName1 As String = 明細表1_dgv(0, i).Value.ToString
  66. Dim newColumn1 As New DataGridViewCheckBoxColumn With {
  67. .HeaderText = columnName1,
  68. .Name = columnName1,
  69. .FillWeight = 20 ' 設定欄位寬度為 30
  70. }
  71. 明細表_dgv.Columns.Add(newColumn1)
  72. Next
  73. Dim CN06 As String = "金額" : Dim NC06 As New DataGridViewTextBoxColumn With {.HeaderText = CN06, .Name = CN06, .FillWeight = 40} : 明細表_dgv.Columns.Add(NC06)
  74. Dim CN07 As String = "項" : Dim NC07 As New DataGridViewTextBoxColumn With {.HeaderText = CN07, .Name = CN07, .FillWeight = 40} : 明細表_dgv.Columns.Add(NC07)
  75. Dim newFont As New System.Drawing.Font("微軟正黑體", 9) ' 創建一個新字體,Arial 12pt
  76. 明細表_dgv.ColumnHeadersDefaultCellStyle.Font = newFont : 明細表_dgv.RowsDefaultCellStyle.Font = newFont
  77. 明細表_dgv.EditMode = DataGridViewEditMode.EditOnEnter
  78. 明細表_dgv.Columns("金額").ReadOnly = True : 明細表_dgv.Columns("會計科目").ReadOnly = True
  79. 明細表_dgv.Columns("性別").ReadOnly = True : 明細表_dgv.Columns("生肖").ReadOnly = True
  80. 明細表_dgv.Columns("課目編號").Visible = False : 明細表_dgv.Columns("項").Visible = False
  81. 明細表_dgv.Columns("查").Visible = False : 明細表_dgv.Columns("會計科目").Visible = False
  82. 明細表_dgv.Columns("內容").Visible = False : 明細表_dgv.Columns("非點燈收款").Visible = False
  83. 明細表_dgv.Columns("金額").Visible = False
  84. 明細表_dgv.Columns("金額").DefaultCellStyle.Format = "#,##0" : 明細表_dgv.Columns("非點燈收款").DefaultCellStyle.Format = "#,##0"
  85. 明細表_dgv.Columns("非點燈收款").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  86. 明細表_dgv.Columns("非點燈收款").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
  87. 明細表_dgv.Columns("金額").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  88. 明細表_dgv.Columns("金額").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
  89. 明細表_dgv.Columns("姓名").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
  90. 明細表_dgv.Columns("姓名").HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
  91. Dim mycol1 As DataGridViewImageColumn = 明細表_dgv.Columns("查") : mycol1.ImageLayout = DataGridViewImageCellLayout.Zoom
  92. If 收款_dgv.Rows.Count > 0 Then
  93. Dim 數量 As Integer = 明細表1_dgv.Rows.Count + 5
  94. For i As Integer = 0 To 收款_dgv.Rows.Count - 1 : Set_明細()
  95. 明細表_dgv("姓名", 0).Value = 收款_dgv("姓名", i).Value.ToString : 明細表_dgv("會計科目", 0).Value = 收款_dgv("會計科目", i).Value.ToString
  96. 明細表_dgv("課目編號", 0).Value = 收款_dgv("科目編號", i).Value.ToString : 明細表_dgv("內容", 0).Value = 收款_dgv("內容", i).Value.ToString
  97. 明細表_dgv("非點燈收款", 0).Value = CInt(收款_dgv("非點燈收款", i).Value.ToString)
  98. 明細表_dgv("性別", 0).Value = 收款_dgv("性別", i).Value.ToString : 明細表_dgv("生肖", 0).Value = 收款_dgv("生肖", i).Value.ToString
  99. If 數量 >= 6 Then : If 收款_dgv("CH1", i).Value = True Then : 明細表_dgv(8, 0).Value = True : End If : End If
  100. If 數量 >= 7 Then : If 收款_dgv("CH2", i).Value = True Then : 明細表_dgv(9, 0).Value = True : End If : End If
  101. If 數量 >= 8 Then : If 收款_dgv("CH3", i).Value = True Then : 明細表_dgv(10, 0).Value = True : End If : End If
  102. If 數量 >= 9 Then : If 收款_dgv("CH4", i).Value = True Then : 明細表_dgv(11, 0).Value = True : End If : End If
  103. If 數量 >= 10 Then : If 收款_dgv("CH5", i).Value = True Then : 明細表_dgv(12, 0).Value = True : End If : End If
  104. If 數量 >= 11 Then : If 收款_dgv("CH6", i).Value = True Then : 明細表_dgv(13, 0).Value = True : End If : End If
  105. If 數量 >= 12 Then : If 收款_dgv("CH7", i).Value = True Then : 明細表_dgv(14, 0).Value = True : End If : End If
  106. If 數量 >= 13 Then : If 收款_dgv("CH8", i).Value = True Then : 明細表_dgv(15, 0).Value = True : End If : End If
  107. If 數量 >= 14 Then : If 收款_dgv("CH9", i).Value = True Then : 明細表_dgv(16, 0).Value = True : End If : End If
  108. If 數量 >= 15 Then : If 收款_dgv("CH10", i).Value = True Then : 明細表_dgv(17, 0).Value = True : End If : End If
  109. Next
  110. End If
  111. End Sub
  112. Private Sub Set_清單3()
  113. Dim ds2 As New DataSet : 明細表1_dgv.DataSource = Nothing : ds2.Clear()
  114. 明細表1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  115. 明細表1_dgv.ColumnHeadersHeight = 30 : 明細表1_dgv.AllowUserToAddRows = False : 明細表1_dgv.RowTemplate.Height = 30
  116. SQL_燈價格查詢()
  117. da.Fill(ds2) : 明細表1_dgv.DataSource = ds2.Tables(0) : conn.Close()
  118. End Sub
  119. Private Sub Set_清單4()
  120. Dim ds2 As New DataSet : 明細表2_dgv.DataSource = Nothing : ds2.Clear()
  121. 明細表2_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  122. 明細表2_dgv.ColumnHeadersHeight = 30 : 明細表2_dgv.AllowUserToAddRows = False : 明細表2_dgv.RowTemplate.Height = 30
  123. SQL_燈科目查詢()
  124. da.Fill(ds2) : 明細表2_dgv.DataSource = ds2.Tables(0) : conn.Close()
  125. End Sub
  126. Private Sub Set_清單5()
  127. Dim ds1 As New DataSet : 收款_dgv.DataSource = Nothing : ds1.Clear()
  128. 收款_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  129. 收款_dgv.ColumnHeadersHeight = 30 : 收款_dgv.AllowUserToAddRows = False : 收款_dgv.RowTemplate.Height = 30
  130. SQL_點燈_收款查詢()
  131. da.Fill(ds1) : 收款_dgv.DataSource = ds1.Tables(0) : conn.Close()
  132. End Sub
  133. Private Sub Set_清單6()
  134. Dim ds1 As New DataSet : 未安燈_dgv.DataSource = Nothing : ds1.Clear()
  135. 未安燈_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  136. 未安燈_dgv.ColumnHeadersHeight = 30 : 未安燈_dgv.AllowUserToAddRows = False : 未安燈_dgv.RowTemplate.Height = 30
  137. SQL_點燈_未安查詢()
  138. da.Fill(ds1) : 未安燈_dgv.DataSource = ds1.Tables(0) : conn.Close()
  139. End Sub
  140. Private Sub Set_清單7()
  141. Dim ds1 As New DataSet : 剩餘燈_dgv.DataSource = Nothing : ds1.Clear()
  142. 剩餘燈_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  143. 剩餘燈_dgv.ColumnHeadersHeight = 30 : 剩餘燈_dgv.AllowUserToAddRows = False : 剩餘燈_dgv.RowTemplate.Height = 30
  144. SQL_點燈_剩餘查詢()
  145. da.Fill(ds1) : 剩餘燈_dgv.DataSource = ds1.Tables(0) : conn.Close()
  146. 剩餘燈_lb.Text = PA & " 年燈種 剩餘數量 "
  147. For I As Integer = 0 To 剩餘燈_dgv.Rows.Count - 1
  148. 剩餘燈_lb.Text &= "- " & 剩餘燈_dgv(0, I).Value.ToString & " " & Strings.Format(CInt(剩餘燈_dgv(1, I).Value.ToString), "#,##0") & " "
  149. Next
  150. End Sub
  151. Private Sub Set_清單8()
  152. Dim ds1 As New DataSet : 控制表1_dgv.DataSource = Nothing : ds1.Clear()
  153. 控制表1_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  154. 控制表1_dgv.ColumnHeadersHeight = 30 : 控制表1_dgv.AllowUserToAddRows = False : 控制表1_dgv.RowTemplate.Height = 30
  155. SQL_自動點燈_未點控制表搜尋()
  156. da.Fill(ds1) : 控制表1_dgv.DataSource = ds1.Tables(0) : conn.Close()
  157. End Sub
  158. Private Sub Set_明細()
  159. Dim 流水 As Integer
  160. If 明細表_dgv.Rows.Count = 0 Then : 流水 = 1 : End If
  161. 明細表_dgv.Rows.Insert(0)
  162. If 明細表_dgv.Rows.Count > 1 Then : 流水 = CInt(明細表_dgv("項", 1).Value) + 1 : End If
  163. For i = 5 To 明細表1_dgv.Rows.Count + 4 : 明細表_dgv(i, 0).Value = False : Next
  164. 明細表_dgv("非點燈收款", 0).Value = 0 : 明細表_dgv("金額", 0).Value = 0 : 明細表_dgv("項", 0).Value = 流水 : 明細表_dgv("姓名", 0).Value = ""
  165. 明細表_dgv("會計科目", 0).Value = "" : 明細表_dgv("課目編號", 0).Value = "" : 明細表_dgv("內容", 0).Value = "" : 明細表_dgv("生肖", 0).Value = ""
  166. 明細表_dgv("性別", 0).Value = ""
  167. 明細表_dgv.Rows(0).Cells("查").Value = My.Resources.Search
  168. End Sub
  169. Private Sub 控制表_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 控制表_dgv.CellClick
  170. If e.RowIndex = -1 Then : Else
  171. 單號_tb.Text = 控制表_dgv(0, e.RowIndex).Value.ToString
  172. 群組編號_cb.Text = 控制表_dgv(10, e.RowIndex).Value.ToString
  173. PA20 = 單號_tb.Text : SQL_點燈_單號年度查詢()
  174. If dr.Read() Then : 年度_cb.Text = dr("年度").ToString
  175. Else
  176. If 年度_cb.Text = "" Then
  177. 年度_cb.Text = CInt(Strings.Left(Strings.Format(Today(), "yyyy/MM/dd"), 4)) - 1911
  178. End If
  179. End If : conn.Close() : Set_清單2()
  180. End If
  181. End Sub
  182. Private Sub 點燈確認_bt_Click(sender As Object, e As EventArgs) Handles 點燈確認_bt.Click
  183. If 年度_cb.Text <> "" And 明細表_dgv.Rows.Count > 0 Then
  184. CB選擇清單(年度_cb, 年度_cb.Text)
  185. PA = 單號_tb.Text : SQL_點燈_控制表已點燈修改() : SQL_點燈_明細表刪除() : conn.Close()
  186. For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 : PA2 = 明細表_dgv("姓名", i).Value.ToString : PA6 = 年度_cb.Text
  187. For ii As Integer = 8 To 7 + 明細表1_dgv.Rows.Count
  188. If 明細表_dgv(ii, i).Value = True Then : Set_流水號() : PA3 = 明細表1_dgv("燈種", ii - 8).Value.ToString : PA4 = 明細表1_dgv("價格", ii - 8).Value.ToString
  189. If 明細表1_dgv("排序", ii - 8).Value.ToString = "順排" Then : PA21 = "" : Else : PA21 = "DESC" : End If
  190. SQL_點燈自動搜尋位置() : If dr.Read() Then : PA5 = dr("編號").ToString() : End If : SQL_點燈明細新增() : conn.Close()
  191. End If
  192. Next
  193. Next : MsgBox("點燈成功!!") : 單號_tb.Text = "" : Set_清單1() : Set_清單2()
  194. Else : MsgBox("年度未選擇或明細表無資料") : End If
  195. End Sub
  196. Private Sub Set_流水號()
  197. SQL_點燈_明細表流水號查詢()
  198. If dr.Read() Then
  199. Dim 流水 As String = dr("流水號").ToString() ' 將流水號轉換為字串
  200. Dim 流水號數字部分 As Integer = Integer.Parse(流水.Substring(1))
  201. Dim 新流水號數字部分 As Integer = 流水號數字部分 + 1
  202. Dim 新流水號數字部分字串 As String = 新流水號數字部分.ToString().PadLeft(8, "0"c)
  203. 新流水1 = "D" & 新流水號數字部分字串
  204. Else : 新流水1 = "D00000000" : End If : PA7 = 新流水1 : conn.Close()
  205. End Sub
  206. End Class