Bez popisu
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 31KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450
  1. Option Strict Off
  2. Imports System.Data.SqlClient
  3. Public Class 系統資料庫維護
  4. Dim conn As New SqlConnection
  5. Dim da As New SqlDataAdapter
  6. Dim cmd As New SqlCommand
  7. Dim ds As New DataSet : Dim ds1 As New DataSet
  8. Dim dr As SqlDataReader
  9. Dim STR1 As String
  10. Dim dt As DateTime
  11. Dim DTP As String : Dim SSD1 As String : Dim SSD2 As String : Dim SSD3 As String : Dim SSD4 As String : Dim SSD5 As String : Dim SSD6 As String
  12. Dim aa As MsgBoxResult
  13. Dim NUM1 As Integer = 0 : Dim NUM2 As Integer = 0 : Dim NUM4 As Integer = 0 : Dim NUM5 As Integer = 0 : Dim NUM6 As Integer = 0 : Dim NUM7 As Integer = 0 : Dim NUM8 As Integer = 0
  14. Dim NUM9 As Integer = 0 : Dim NUM11 As Integer = 0 : Dim NUM12 As Integer = 0 : Dim NUM13 As Integer = 0 : Dim NUM14 As Integer = 0 : Dim NUM15 As Integer = 0
  15. Dim WSAQ(2) As Double
  16. Private Sub Set_清單()
  17. DataGridView1.DataSource = Nothing : ds.Clear()
  18. DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  19. DataGridView1.ColumnHeadersHeight = 25
  20. DataGridView1.AllowUserToAddRows = False
  21. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  22. SQL1 = "SELECT 已有考勤日期 FROM 已有考勤日期 ORDER BY 已有考勤日期 DESC"
  23. cmd.Connection = conn : cmd.CommandText = SQL1 : da.SelectCommand = cmd : da.Fill(ds) : DataGridView1.DataSource = ds.Tables(0) : conn.Close()
  24. Set_grid()
  25. End Sub
  26. Private Sub Set_grid()
  27. DataGridView1.Columns(0).Width = 100
  28. End Sub
  29. Private Sub Set_人員清單()
  30. Set_日期格式轉換()
  31. DataGridView2.DataSource = Nothing : ds1.Clear()
  32. DataGridView2.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  33. DataGridView2.ColumnHeadersHeight = 25
  34. DataGridView2.AllowUserToAddRows = False
  35. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  36. If Microsoft.VisualBasic.Left(DTP, 4) > 2018 Then
  37. SQL1 = "SELECT 資料流水號 AS DataID, 序號, 姓名 FROM 人員名單 WHERE (購買日期 BETWEEN '2001-01-01' AND '" & DTP & "') OR (購買日期 LIKE '') ORDER BY DataID"
  38. Else
  39. SQL1 = "SELECT 資料流水號 AS DataID, 序號, 姓名 FROM 人員名單 WHERE (購買日期 BETWEEN '2001-01-01' AND '" & DTP & "') ORDER BY DataID"
  40. End If
  41. cmd.Connection = conn : cmd.CommandText = SQL1 : da.SelectCommand = cmd : da.Fill(ds1) : DataGridView2.DataSource = ds1.Tables(0) : conn.Close()
  42. Set_grid1()
  43. End Sub
  44. Private Sub Set_grid1()
  45. DataGridView2.Columns(0).Width = 120 : DataGridView2.Columns(1).Width = 120 : DataGridView2.Columns(2).Width = 120
  46. End Sub
  47. Private Sub 星期轉換()
  48. dt = DateTimePicker1.Value
  49. TextBox1.Text = dt.DayOfWeek.ToString()
  50. If TextBox1.Text = "Sunday" Then : TextBox1.Text = "日" : ElseIf TextBox1.Text = "Monday" Then : TextBox1.Text = "一"
  51. ElseIf TextBox1.Text = "Tuesday" Then : TextBox1.Text = "二" : ElseIf TextBox1.Text = "Wednesday" Then : TextBox1.Text = "三"
  52. ElseIf TextBox1.Text = "Thursday" Then : TextBox1.Text = "四" : ElseIf TextBox1.Text = "Friday" Then : TextBox1.Text = "五"
  53. ElseIf TextBox1.Text = "Saturday" Then : TextBox1.Text = "六" : End If
  54. End Sub
  55. Private Sub Set_日期格式轉換()
  56. DTP = Format(DateTimePicker1.Value, "yyyy/MM/dd")
  57. End Sub
  58. Private Sub 系統資料庫維護_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  59. Me.MdiParent = 楠晉鞋業AAS : Me.AutoScroll = True
  60. Set_清單() : Set_人員清單() : 星期轉換()
  61. TextBox19.Text = "-1" : TextBox20.Text = "-1" : TextBox21.Text = "-1" : TextBox22.Text = "-1" : TextBox23.Text = "" : TextBox24.Text = "" : TextBox25.Text = "" : TextBox26.Text = ""
  62. TextBox27.Text = "0" : TextBox28.Text = "0" : TextBox29.Text = "0" : TextBox30.Text = "0" : TextBox31.Text = "0" : TextBox32.Text = "0" : TextBox33.Text = "0" : TextBox34.Text = "0"
  63. End Sub
  64. Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick
  65. DateTimePicker1.Text = DataGridView1.Rows(e.RowIndex).Cells("已有考勤日期").Value.ToString
  66. End Sub
  67. Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
  68. Set_人員清單()
  69. 星期轉換()
  70. End Sub
  71. Private Sub 第1班上下班()
  72. '-----------------------------------------------------------------------------------------------------第1班上班
  73. Dim ran = New Random(DateTime.Now.Millisecond) : TextBox2.Text = ran.Next(1, 4096)
  74. For NUM3 = 0 To 4096
  75. NUM4 = TextBox2.Text
  76. If NUM4 > 9 Then : NUM4 = NUM4 - 9 : TextBox2.Text = NUM4 : ElseIf NUM4 < 9 Then : TextBox2.Text = NUM4 : NUM3 = 4096 : End If
  77. Next
  78. Dim ran1 = New Random(DateTime.Now.Millisecond) : TextBox3.Text = ran1.Next(1, 4096)
  79. For NUM3 = 0 To 4096
  80. NUM1 = TextBox3.Text
  81. If NUM1 > 7 Then : NUM1 = NUM1 - 7 : TextBox3.Text = NUM1 : ElseIf NUM1 <= 7 Then : If NUM1 <= 5 Then : TextBox3.Text = 5 : NUM3 = 4096 : Else : TextBox3.Text = 5 : NUM3 = 4096
  82. End If : End If
  83. Next
  84. If TextBox3.Text = "0" Then : TextBox4.Text = "08" : Else : TextBox4.Text = "07" : End If
  85. '-----------------------------------------------------------------------------------------------------第1班下班
  86. Dim ran2 = New Random(DateTime.Now.Millisecond) : TextBox5.Text = ran2.Next(1, 4096)
  87. For NUM3 = 0 To 4096
  88. NUM2 = TextBox5.Text
  89. If NUM2 > 9 Then : NUM2 = NUM2 - 9 : TextBox5.Text = NUM2 : ElseIf NUM2 < 9 Then : TextBox5.Text = NUM2 : NUM3 = 4096 : End If
  90. Next
  91. Dim ran3 = New Random(DateTime.Now.Millisecond) : TextBox6.Text = ran3.Next(1, 4096)
  92. For NUM3 = 0 To 4096
  93. NUM5 = TextBox6.Text
  94. If NUM5 > 7 Then : NUM5 = NUM5 - 7 : TextBox6.Text = NUM5 : ElseIf NUM5 <= 7 Then : If NUM5 <= 5 Then : TextBox6.Text = 0 : NUM3 = 4096 : Else : TextBox6.Text = 0 : NUM3 = 4096
  95. End If : End If
  96. Next
  97. If TextBox6.Text = "0" Then : TextBox7.Text = "12" : Else : TextBox7.Text = "11" : End If
  98. '-----------------------------------------------------------------------------------------------------字串
  99. WSAQ(0) = 4 : SSD3 = TextBox4.Text & ":" & TextBox3.Text & TextBox2.Text : SSD4 = TextBox7.Text & ":" & TextBox6.Text & TextBox5.Text
  100. End Sub
  101. Private Sub 第2班上下班()
  102. '-----------------------------------------------------------------------------------------------------第2班上班
  103. Dim ran4 = New Random(DateTime.Now.Millisecond) : TextBox8.Text = ran4.Next(1, 4096)
  104. For NUM3 = 0 To 4096
  105. NUM6 = TextBox8.Text
  106. If NUM6 > 9 Then : NUM6 = NUM6 - 9 : TextBox8.Text = NUM6 : ElseIf NUM6 < 9 Then : TextBox8.Text = NUM6 : NUM3 = 4096 : End If
  107. Next
  108. Dim ran5 = New Random(DateTime.Now.Millisecond) : TextBox9.Text = ran5.Next(1, 4096)
  109. For NUM3 = 0 To 4096
  110. NUM7 = TextBox9.Text
  111. If NUM7 > 7 Then : NUM7 = NUM7 - 7 : TextBox9.Text = NUM7 : ElseIf NUM7 <= 7 Then : If NUM7 <= 5 Then : TextBox9.Text = 2 : NUM3 = 4096 : Else : TextBox9.Text = 2 : NUM3 = 4096
  112. End If : End If
  113. Next
  114. '-----------------------------------------------------------------------------------------------------第2班下班
  115. Dim ran6 = New Random(DateTime.Now.Millisecond) : TextBox10.Text = ran6.Next(1, 4096)
  116. For NUM3 = 0 To 4096
  117. NUM8 = TextBox10.Text
  118. If NUM8 > 9 Then : NUM8 = NUM8 - 9 : TextBox10.Text = NUM8 : ElseIf NUM8 < 9 Then : TextBox10.Text = NUM8 : NUM3 = 4096 : End If
  119. Next
  120. Dim ran7 = New Random(DateTime.Now.Millisecond) : TextBox11.Text = ran7.Next(1, 4096)
  121. For NUM3 = 0 To 4096
  122. NUM9 = TextBox11.Text
  123. If NUM9 > 7 Then : NUM9 = NUM9 - 7 : TextBox11.Text = NUM9 : ElseIf NUM9 <= 7 Then : If NUM9 <= 5 Then : TextBox11.Text = 3 : NUM3 = 4096 : Else : TextBox11.Text = 3 : NUM3 = 4096
  124. End If : End If
  125. Next
  126. '-----------------------------------------------------------------------------------------------------字串
  127. WSAQ(1) = 4 : SSD5 = "13:" & TextBox9.Text & TextBox8.Text : SSD6 = "17:" & TextBox11.Text & TextBox10.Text
  128. End Sub
  129. Private Sub 第3班上下班()
  130. If TextBox1.Text = "日" Or TextBox1.Text = "六" Or CheckBox1.Checked = True Then
  131. TextBox18.Text = 0
  132. Else
  133. Dim ran12 = New Random(DateTime.Now.Millisecond) : TextBox18.Text = ran12.Next(1, 4096)
  134. For NUM3 = 0 To 4096
  135. NUM15 = TextBox18.Text
  136. If NUM15 > 7 Then
  137. NUM15 = NUM15 - 7 : TextBox18.Text = NUM15
  138. ElseIf NUM15 <= 7 Then
  139. If NUM15 <= 4 Then : TextBox18.Text = 0 : NUM3 = 4096 : Else : TextBox18.Text = 1 : NUM3 = 4096 : End If : End If
  140. Next
  141. End If
  142. '-----------------------------------------------------------------------------------------------------第3班上下班
  143. If TextBox18.Text = "1" Then
  144. Dim ran8 = New Random(DateTime.Now.Millisecond) : TextBox12.Text = ran8.Next(1, 4096)
  145. For NUM3 = 0 To 4096
  146. NUM11 = TextBox12.Text
  147. If NUM11 > 9 Then : NUM11 = NUM11 - 9 : TextBox12.Text = NUM11 : ElseIf NUM11 < 9 Then : TextBox12.Text = NUM11 : NUM3 = 4096 : End If
  148. Next
  149. Dim ran9 = New Random(DateTime.Now.Millisecond) : TextBox13.Text = ran9.Next(1, 4096)
  150. For NUM3 = 0 To 4096
  151. NUM12 = TextBox13.Text
  152. If NUM12 > 7 Then : NUM12 = NUM12 - 7 : TextBox13.Text = NUM12 : ElseIf NUM12 <= 7 Then : If NUM12 <= 5 Then : TextBox13.Text = 5 : NUM3 = 4096
  153. Else : TextBox13.Text = 5 : NUM3 = 4096
  154. End If : End If
  155. Next
  156. If TextBox13.Text = "0" Then : TextBox14.Text = "18" : Else : TextBox14.Text = "17" : End If
  157. Dim ran10 = New Random(DateTime.Now.Millisecond) : TextBox15.Text = ran10.Next(1, 4096)
  158. For NUM3 = 0 To 4096
  159. NUM13 = TextBox15.Text
  160. If NUM13 > 9 Then : NUM13 = NUM13 - 9 : TextBox15.Text = NUM13 : ElseIf NUM13 < 9 Then : TextBox15.Text = NUM13 : NUM3 = 4096 : End If
  161. Next
  162. Dim ran11 = New Random(DateTime.Now.Millisecond) : TextBox16.Text = ran11.Next(1, 4096)
  163. For NUM3 = 0 To 4096
  164. NUM14 = TextBox16.Text
  165. If NUM14 > 7 Then : NUM14 = NUM14 - 7 : TextBox16.Text = NUM14 : ElseIf NUM14 <= 7 Then : If NUM14 <= 5 Then : TextBox16.Text = 0 : NUM3 = 4096
  166. Else : TextBox16.Text = 0 : NUM3 = 4096
  167. End If : End If
  168. Next
  169. If TextBox16.Text = "0" Then : TextBox17.Text = "20" : Else : TextBox17.Text = "19" : End If
  170. '-----------------------------------------------------------------------------------------------------字串
  171. WSAQ(2) = 2 : SSD1 = TextBox14.Text & ":" & TextBox13.Text & TextBox12.Text : SSD2 = TextBox17.Text & ":" & TextBox16.Text & TextBox15.Text
  172. Else
  173. TextBox12.Text = "" : TextBox13.Text = "" : TextBox14.Text = "" : TextBox15.Text = "" : TextBox16.Text = "" : TextBox17.Text = ""
  174. WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  175. End If
  176. End Sub
  177. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  178. Set_日期格式轉換()
  179. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  180. SQL1 = "SELECT 已有考勤日期 FROM 已有考勤日期 WHERE 已有考勤日期 LIKE '" & DTP & "'"
  181. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  182. If dr.Read() Then
  183. MsgBox("資料重複") : conn.Close() : Exit Sub
  184. Else
  185. conn.Close()
  186. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  187. SQL1 = "INSERT INTO 已有考勤日期 (已有考勤日期) VALUES (N'" & DTP & "')"
  188. cmd.Connection = conn : cmd.CommandText = SQL1 : cmd.ExecuteNonQuery() : conn.Close()
  189. For i As Integer = 0 To DataGridView2.Rows.Count - 1
  190. conn.Close()
  191. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  192. SQL1 = "SELECT TOP (1) 資料流水號 FROM 考勤資料庫 ORDER BY 資料流水號 DESC"
  193. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  194. If dr.Read() Then : STR1 = dr("資料流水號").ToString : Else : STR1 = "" : End If
  195. conn.Close()
  196. Dim NUM10 As Integer
  197. NUM10 = Double.Parse(Strings.Right(STR1, 8)) + 1
  198. If NUM10 < 10 Then : STR1 = "AS" & "0000000" & NUM10
  199. ElseIf NUM10 > 9 And NUM10 < 100 Then : STR1 = "AS" & "000000" & NUM10
  200. ElseIf NUM10 > 99 And NUM10 < 1000 Then : STR1 = "AS" & "00000" & NUM10
  201. ElseIf NUM10 > 999 And NUM10 < 10000 Then : STR1 = "AS" & "0000" & NUM10
  202. ElseIf NUM10 > 9999 And NUM10 < 100000 Then : STR1 = "AS" & "000" & NUM10
  203. ElseIf NUM10 > 99999 And NUM10 < 100000 Then : STR1 = "AS" & "00" & NUM10
  204. ElseIf NUM10 > 999999 And NUM10 < 1000000 Then : STR1 = "AS" & "0" & NUM10
  205. ElseIf NUM10 > 9999999 Then : STR1 = "AS" & NUM10
  206. End If
  207. If TextBox1.Text = "日" Or CheckBox1.Checked = True Then
  208. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : WSAQ(1) = 0 : SSD5 = "" : SSD6 = ""
  209. Else
  210. If (TextBox19.Text = i And TextBox27.Text = 0) Or (TextBox20.Text = i And TextBox28.Text = 0) Or
  211. (TextBox21.Text = i And TextBox29.Text = 0) Or (TextBox22.Text = i And TextBox30.Text = 0) Then
  212. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  213. ElseIf (TextBox19.Text = i And TextBox27.Text = 1) Then
  214. If TextBox31.Text = 1 Then
  215. 第1班上下班() : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  216. Else
  217. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : 第2班上下班() : 第3班上下班()
  218. End If
  219. ElseIf (TextBox20.Text = i And TextBox28.Text = 1) Then
  220. If TextBox32.Text = 1 Then
  221. 第1班上下班() : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  222. Else
  223. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : 第2班上下班() : 第3班上下班()
  224. End If
  225. ElseIf (TextBox21.Text = i And TextBox29.Text = 1) Then
  226. If TextBox33.Text = 1 Then
  227. 第1班上下班() : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  228. Else
  229. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : 第2班上下班() : 第3班上下班()
  230. End If
  231. ElseIf (TextBox22.Text = i And TextBox30.Text = 1) Then
  232. If TextBox34.Text = 1 Then
  233. 第1班上下班() : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  234. Else
  235. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : 第2班上下班() : 第3班上下班()
  236. End If
  237. Else
  238. 第1班上下班() : 第2班上下班() : 第3班上下班()
  239. End If
  240. End If
  241. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  242. SQL1 = "INSERT INTO 考勤資料庫 (資料流水號, DataID, 員工名稱, 出勤日期, 星期, 第1班上班, 第1班下班, 第1班合計, 第2班上班, 第2班下班,
  243. 第2班合計, 第3班上班, 第3班下班, 第3班合計) VALUES (N'" & STR1 & "', " &
  244. "N'" & DataGridView2.Rows(i).Cells("DataID").Value & "', " &
  245. "N'" & DataGridView2.Rows(i).Cells("姓名").Value & "', " &
  246. "N'" & DTP & "', " &
  247. "N'" & TextBox1.Text & "', " &
  248. "N'" & SSD3 & "', " &
  249. "N'" & SSD4 & "', '" & WSAQ(0) & "', " &
  250. "N'" & SSD5 & "', " &
  251. "N'" & SSD6 & "', '" & WSAQ(1) & "', " &
  252. "N'" & SSD1 & "', N'" & SSD2 & "', '" & WSAQ(2) & "')"
  253. cmd.Connection = conn : cmd.CommandText = SQL1 : cmd.ExecuteNonQuery() : conn.Close()
  254. Next
  255. Set_清單() : MsgBox("維護完成") : CheckBox1.Checked = False
  256. End If
  257. End Sub
  258. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  259. aa = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel)
  260. If aa = MsgBoxResult.Ok Then
  261. Set_日期格式轉換()
  262. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  263. SQL1 = "DELETE FROM 已有考勤日期 WHERE (已有考勤日期 = '" & DTP & "')"
  264. cmd.CommandText = SQL1 : cmd.Connection = conn : cmd.ExecuteNonQuery() : conn.Close()
  265. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  266. SQL1 = "DELETE FROM 考勤資料庫 WHERE (出勤日期 = '" & DTP & "')"
  267. cmd.CommandText = SQL1 : cmd.Connection = conn : cmd.ExecuteNonQuery() : conn.Close()
  268. Set_清單() : MsgBox("刪除完成")
  269. End If
  270. End Sub
  271. Public Sub Delay(ByRef Interval As Double) 'Interval单位为毫秒
  272. Dim time As DateTime = DateTime.Now
  273. Dim Span As Double = Interval * 1234
  274. While ((DateTime.Now.Ticks - time.Ticks) < Span)
  275. Application.DoEvents()
  276. End While
  277. End Sub
  278. Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
  279. Dim NUM1 As Integer = 0 : Dim NUM4 As Integer = 0 : Dim NUM5 As Integer = 0 : Dim NUM6 As Integer = 0 : Dim NUM7 As Integer = 0 : Dim NUM8 As Integer = 0
  280. If CheckBox2.Checked = True Then
  281. Dim ran = New Random(DateTime.Now.Millisecond) : TextBox19.Text = ran.Next(1, 4096) : NUM1 = TextBox19.Text
  282. For NUM3 = 0 To 4096
  283. If NUM1 > DataGridView2.Rows.Count - 1 Then : NUM1 = NUM1 - DataGridView2.Rows.Count - 1
  284. ElseIf NUM1 < DataGridView2.Rows.Count - 1 Then : NUM4 = NUM1 : NUM8 = NUM4
  285. For I = 0 To NUM4
  286. If NUM8 <= NUM4 And NUM8 > 5 Then : NUM8 = NUM8 - 5
  287. ElseIf NUM8 <= 5 Then
  288. If NUM8 > 3 Then : TextBox27.Text = 0 : TextBox31.Text = 0
  289. Else : TextBox27.Text = 1 : If NUM8 = 3 Or NUM8 = 2 Then : TextBox31.Text = 0 : Else : TextBox31.Text = 1 : End If
  290. End If : I = NUM4
  291. End If
  292. Next : NUM3 = 4096
  293. End If
  294. Next : Delay(3)
  295. Dim ran1 = New Random(DateTime.Now.Millisecond) : TextBox20.Text = ran1.Next(1, 4096) : NUM1 = TextBox20.Text
  296. For NUM3 = 0 To 4096
  297. If NUM1 > DataGridView2.Rows.Count - 1 Then : NUM1 = NUM1 - DataGridView2.Rows.Count - 1
  298. ElseIf NUM1 < DataGridView2.Rows.Count - 1 Then : NUM5 = NUM1 : NUM8 = NUM5
  299. For I = 0 To NUM5
  300. If NUM8 <= NUM5 And NUM8 > 5 Then : NUM8 = NUM8 - 5
  301. ElseIf NUM8 <= 5 Then
  302. If NUM8 > 3 Then : TextBox28.Text = 0 : TextBox32.Text = 0
  303. Else : TextBox28.Text = 1 : If NUM8 = 3 Or NUM8 = 2 Then : TextBox32.Text = 0 : Else : TextBox32.Text = 1 : End If
  304. End If : I = NUM5
  305. End If
  306. Next : NUM3 = 4096
  307. End If
  308. Next : Delay(3)
  309. Dim ran2 = New Random(DateTime.Now.Millisecond) : TextBox21.Text = ran2.Next(1, 4096) : NUM1 = TextBox21.Text
  310. For NUM3 = 0 To 4096
  311. If NUM1 > DataGridView2.Rows.Count - 1 Then : NUM1 = NUM1 - DataGridView2.Rows.Count - 1
  312. ElseIf NUM1 < DataGridView2.Rows.Count - 1 Then : NUM6 = NUM1 : NUM8 = NUM6
  313. For I = 0 To NUM6
  314. If NUM8 <= NUM6 And NUM8 > 5 Then : NUM8 = NUM8 - 5
  315. ElseIf NUM8 <= 5 Then
  316. If NUM8 > 3 Then : TextBox29.Text = 0 : TextBox33.Text = 0
  317. Else : TextBox29.Text = 1 : If NUM8 = 3 Or NUM8 = 2 Then : TextBox33.Text = 0 : Else : TextBox33.Text = 1 : End If
  318. End If : I = NUM6
  319. End If
  320. Next : NUM3 = 4096
  321. End If
  322. Next : Delay(3)
  323. Dim ran3 = New Random(DateTime.Now.Millisecond) : TextBox22.Text = ran3.Next(1, 4096) : NUM1 = TextBox22.Text
  324. For NUM3 = 0 To 4096
  325. If NUM1 > DataGridView2.Rows.Count - 1 Then : NUM1 = NUM1 - DataGridView2.Rows.Count - 1
  326. ElseIf NUM1 < DataGridView2.Rows.Count - 1 Then : NUM7 = NUM1 : NUM8 = NUM7
  327. For I = 0 To NUM7
  328. If NUM8 <= NUM7 And NUM8 > 5 Then : NUM8 = NUM8 - 5
  329. ElseIf NUM8 <= 5 Then
  330. If NUM8 > 3 Then : TextBox30.Text = 0 : TextBox34.Text = 0
  331. Else : TextBox30.Text = 1 : If NUM8 = 3 Or NUM8 = 2 Then : TextBox34.Text = 0 : Else : TextBox34.Text = 1 : End If
  332. End If : I = NUM7
  333. End If
  334. Next : NUM3 = 4096
  335. End If
  336. Next
  337. If NUM4 = NUM5 Then : NUM4 = NUM4 + 3 : If NUM4 > DataGridView2.Rows.Count - 1 Then : NUM4 = NUM4 - DataGridView2.Rows.Count - 1 : End If : End If
  338. If NUM4 = NUM6 Then : NUM4 = NUM4 + 3 : If NUM4 > DataGridView2.Rows.Count - 1 Then : NUM4 = NUM4 - DataGridView2.Rows.Count - 1 : End If : End If
  339. If NUM4 = NUM7 Then : NUM4 = NUM4 + 3 : If NUM4 > DataGridView2.Rows.Count - 1 Then : NUM4 = NUM4 - DataGridView2.Rows.Count - 1 : End If : End If
  340. If NUM5 = NUM6 Then : NUM5 = NUM5 + 3 : If NUM5 > DataGridView2.Rows.Count - 1 Then : NUM5 = NUM5 - DataGridView2.Rows.Count - 1 : End If : End If
  341. If NUM5 = NUM7 Then : NUM5 = NUM5 + 3 : If NUM5 > DataGridView2.Rows.Count - 1 Then : NUM5 = NUM5 - DataGridView2.Rows.Count - 1 : End If : End If
  342. If NUM6 = NUM7 Then : NUM6 = NUM6 + 3 : If NUM6 > DataGridView2.Rows.Count - 1 Then : NUM6 = NUM6 - DataGridView2.Rows.Count - 1 : End If : End If
  343. TextBox19.Text = NUM4 : TextBox20.Text = NUM5 : TextBox21.Text = NUM6 : TextBox22.Text = NUM7
  344. TextBox23.Text = DataGridView2.Rows(NUM4).Cells("姓名").Value.ToString : TextBox24.Text = DataGridView2.Rows(NUM5).Cells("姓名").Value.ToString
  345. TextBox25.Text = DataGridView2.Rows(NUM6).Cells("姓名").Value.ToString : TextBox26.Text = DataGridView2.Rows(NUM7).Cells("姓名").Value.ToString
  346. Else
  347. TextBox19.Text = "-1" : TextBox20.Text = "-1" : TextBox21.Text = "-1" : TextBox22.Text = "-1" : TextBox23.Text = "" : TextBox24.Text = "" : TextBox25.Text = "" : TextBox26.Text = ""
  348. TextBox27.Text = "0" : TextBox28.Text = "0" : TextBox29.Text = "0" : TextBox30.Text = "0" : TextBox31.Text = "0" : TextBox32.Text = "0" : TextBox33.Text = "0" : TextBox34.Text = "0"
  349. End If
  350. End Sub
  351. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  352. Dim ASDFG As Integer = 0
  353. For ii As Integer = 1 To TextBox35.Text
  354. CheckBox2.Checked = False
  355. DateTimePicker1.Value = DateTimePicker1.Value.AddDays(1)
  356. Set_清單()
  357. Set_日期格式轉換()
  358. ASDFG = ASDFG + 1
  359. If ASDFG = 2 Then
  360. CheckBox2.Checked = True : ASDFG = 0
  361. End If
  362. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  363. SQL1 = "SELECT 已有考勤日期 FROM 已有考勤日期 WHERE 已有考勤日期 LIKE '" & DTP & "'"
  364. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  365. If dr.Read() Then
  366. MsgBox("資料重複") : conn.Close() : Exit Sub
  367. Else
  368. conn.Close()
  369. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  370. SQL1 = "INSERT INTO 已有考勤日期 (已有考勤日期) VALUES (N'" & DTP & "')"
  371. cmd.Connection = conn : cmd.CommandText = SQL1 : cmd.ExecuteNonQuery() : conn.Close()
  372. For i As Integer = 0 To DataGridView2.Rows.Count - 1
  373. conn.Close()
  374. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  375. SQL1 = "SELECT TOP (1) 資料流水號 FROM 考勤資料庫 ORDER BY 資料流水號 DESC"
  376. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  377. If dr.Read() Then : STR1 = dr("資料流水號").ToString : Else : STR1 = "" : End If
  378. conn.Close()
  379. Dim NUM10 As Integer
  380. NUM10 = Double.Parse(Strings.Right(STR1, 8)) + 1
  381. If NUM10 < 10 Then : STR1 = "AS" & "0000000" & NUM10
  382. ElseIf NUM10 > 9 And NUM10 < 100 Then : STR1 = "AS" & "000000" & NUM10
  383. ElseIf NUM10 > 99 And NUM10 < 1000 Then : STR1 = "AS" & "00000" & NUM10
  384. ElseIf NUM10 > 999 And NUM10 < 10000 Then : STR1 = "AS" & "0000" & NUM10
  385. ElseIf NUM10 > 9999 And NUM10 < 100000 Then : STR1 = "AS" & "000" & NUM10
  386. ElseIf NUM10 > 99999 And NUM10 < 100000 Then : STR1 = "AS" & "00" & NUM10
  387. ElseIf NUM10 > 999999 And NUM10 < 1000000 Then : STR1 = "AS" & "0" & NUM10
  388. ElseIf NUM10 > 9999999 Then : STR1 = "AS" & NUM10
  389. End If
  390. If TextBox1.Text = "日" Or CheckBox1.Checked = True Then
  391. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : WSAQ(1) = 0 : SSD5 = "" : SSD6 = ""
  392. Else
  393. If (TextBox19.Text = i And TextBox27.Text = 0) Or (TextBox20.Text = i And TextBox28.Text = 0) Or
  394. (TextBox21.Text = i And TextBox29.Text = 0) Or (TextBox22.Text = i And TextBox30.Text = 0) Then
  395. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  396. ElseIf (TextBox19.Text = i And TextBox27.Text = 1) Then
  397. If TextBox31.Text = 1 Then
  398. 第1班上下班() : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  399. Else
  400. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : 第2班上下班() : 第3班上下班()
  401. End If
  402. ElseIf (TextBox20.Text = i And TextBox28.Text = 1) Then
  403. If TextBox32.Text = 1 Then
  404. 第1班上下班() : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  405. Else
  406. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : 第2班上下班() : 第3班上下班()
  407. End If
  408. ElseIf (TextBox21.Text = i And TextBox29.Text = 1) Then
  409. If TextBox33.Text = 1 Then
  410. 第1班上下班() : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  411. Else
  412. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : 第2班上下班() : 第3班上下班()
  413. End If
  414. ElseIf (TextBox22.Text = i And TextBox30.Text = 1) Then
  415. If TextBox34.Text = 1 Then
  416. 第1班上下班() : WSAQ(1) = 0 : SSD5 = "" : SSD6 = "" : WSAQ(2) = 0 : SSD1 = "" : SSD2 = ""
  417. Else
  418. WSAQ(0) = 0 : SSD3 = "" : SSD4 = "" : 第2班上下班() : 第3班上下班()
  419. End If
  420. Else
  421. 第1班上下班() : 第2班上下班() : 第3班上下班()
  422. End If
  423. End If
  424. If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If
  425. SQL1 = "INSERT INTO 考勤資料庫 (資料流水號, DataID, 員工名稱, 出勤日期, 星期, 第1班上班, 第1班下班, 第1班合計, 第2班上班, 第2班下班,
  426. 第2班合計, 第3班上班, 第3班下班, 第3班合計) VALUES (N'" & STR1 & "', " &
  427. "N'" & DataGridView2.Rows(i).Cells("DataID").Value & "', " &
  428. "N'" & DataGridView2.Rows(i).Cells("姓名").Value & "', " &
  429. "N'" & DTP & "', " &
  430. "N'" & TextBox1.Text & "', " &
  431. "N'" & SSD3 & "', " &
  432. "N'" & SSD4 & "', '" & WSAQ(0) & "', " &
  433. "N'" & SSD5 & "', " &
  434. "N'" & SSD6 & "', '" & WSAQ(1) & "', " &
  435. "N'" & SSD1 & "', N'" & SSD2 & "', '" & WSAQ(2) & "')"
  436. cmd.Connection = conn : cmd.CommandText = SQL1 : cmd.ExecuteNonQuery() : conn.Close()
  437. Next
  438. End If
  439. Next
  440. Set_清單() : MsgBox("維護完成") : CheckBox1.Checked = False
  441. End Sub
  442. End Class