Brak opisu
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 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. Public Class 適應症選擇
  2. Private Sub Set_適應症設定()
  3. Dim ds2 As New DataSet
  4. 適應症_dgv.DataSource = Nothing : ds2.Clear()
  5. 適應症_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  6. 適應症_dgv.ColumnHeadersHeight = 25 : 適應症_dgv.AllowUserToAddRows = False
  7. SQL_適應症設定()
  8. da.Fill(ds2) : 適應症_dgv.DataSource = ds2.Tables(0) : conn.Close()
  9. 適應症選擇()
  10. For i As Integer = 0 To 適應症_dgv.Rows.Count - 1 : 適應症_dgv("備註", i).Value = "" : Next
  11. Dim ds3 As New DataSet
  12. 保養品_dgv.DataSource = Nothing : ds3.Clear()
  13. 保養品_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  14. 保養品_dgv.ColumnHeadersHeight = 25 : 保養品_dgv.AllowUserToAddRows = False
  15. SQL_保養品設定()
  16. da.Fill(ds3) : 保養品_dgv.DataSource = ds3.Tables(0) : conn.Close()
  17. 保養品選擇()
  18. For i As Integer = 0 To 保養品_dgv.Rows.Count - 1 : 保養品_dgv("備註", i).Value = "" : Next
  19. End Sub
  20. Private Sub SQL_下拉清單載入1()
  21. SQL_適應症主清單1() : 病症_cb.Items.Clear() : While (dr.Read()) : 病症_cb.Items.Add(dr("適應症")) : End While : conn.Close()
  22. End Sub
  23. Private Sub SQL_下拉清單載入2()
  24. SQL_適應症主清單2() : 療程_cb.Items.Clear() : While (dr.Read()) : 療程_cb.Items.Add(dr("治療建議")) : End While : conn.Close()
  25. End Sub
  26. Private Sub SQL_下拉清單載入3()
  27. SQL_保養品主清單1() : 品牌_cb.Items.Clear() : While (dr.Read()) : 品牌_cb.Items.Add(dr("品牌")) : End While : conn.Close()
  28. End Sub
  29. Private Sub SQL_下拉清單載入4()
  30. SQL_保養品主清單2() : 保養品_cb.Items.Clear() : While (dr.Read()) : 保養品_cb.Items.Add(dr("產品")) : End While : conn.Close()
  31. End Sub
  32. Private Sub 適應症選擇_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  33. 適應症_dgv.SendToBack() : 保養品_dgv.SendToBack()
  34. Set_適應症設定() : SQL_下拉清單載入1() : SQL_下拉清單載入3()
  35. End Sub
  36. Private Sub 適應症選擇_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
  37. 醫生_tb.Text = PA
  38. End Sub
  39. Private Sub 適應症選擇_Closed(sender As Object, e As EventArgs) Handles MyBase.Closed
  40. LoginForm1.Close()
  41. End Sub
  42. Private Sub 適應症選擇()
  43. TreeView1.Nodes.Clear() : Dim 主項數量 As Integer = -1 : Dim 症狀 As String = ""
  44. For I As Integer = 0 To 適應症_dgv.Rows.Count - 1
  45. If 症狀 <> 適應症_dgv("適應症", I).Value.ToString Then
  46. TreeView1.Nodes.Add(適應症_dgv("適應症", I).Value.ToString) : 症狀 = 適應症_dgv("適應症", I).Value.ToString : 主項數量 += 1
  47. End If
  48. If 症狀 = 適應症_dgv("適應症", I).Value.ToString Then
  49. TreeView1.Nodes(主項數量).Nodes.Add(適應症_dgv("治療建議", I).Value.ToString)
  50. End If
  51. Next
  52. End Sub
  53. Private Sub 保養品選擇()
  54. TreeView2.Nodes.Clear() : Dim 主項數量 As Integer = -1 : Dim 症狀 As String = ""
  55. For I As Integer = 0 To 保養品_dgv.Rows.Count - 1
  56. If 症狀 <> 保養品_dgv("品牌", I).Value.ToString Then
  57. TreeView2.Nodes.Add(保養品_dgv("品牌", I).Value.ToString) : 症狀 = 保養品_dgv("品牌", I).Value.ToString : 主項數量 += 1
  58. End If
  59. If 症狀 = 保養品_dgv("品牌", I).Value.ToString Then
  60. TreeView2.Nodes(主項數量).Nodes.Add(保養品_dgv("產品", I).Value.ToString)
  61. End If
  62. Next
  63. End Sub
  64. Private Sub TreeView1_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView1.NodeMouseClick ' 判斷是否點擊在 CheckBox 的範圍內
  65. If e.Node.Bounds.Contains(e.Location) Then ' 判斷是否為第二層節點
  66. If e.Node.Parent IsNot Nothing Then
  67. Dim CV As String = e.Node.Text
  68. Dim index As Integer = CV.IndexOf(" => ") : Dim resultS As String = "" : Dim 有備註 As Boolean
  69. If index <> -1 Then
  70. Dim result As String = CV.Substring(0, index) : resultS = result : 有備註 = True
  71. Else
  72. resultS = e.Node.Text : 有備註 = False
  73. End If
  74. 病症_cb.Text = e.Node.Parent.Text : 症狀_lb.Text = "* " & e.Node.Parent.Text : 治療建議_lb.Text = "--> " & resultS
  75. If 症狀_lb.Text = "* " Or 治療建議_lb.Text = "--> " Then : Else
  76. For i As Integer = 0 To 適應症_dgv.Rows.Count - 1
  77. If Strings.Mid(症狀_lb.Text, 3, 100) = 適應症_dgv("適應症", i).Value.ToString And Strings.Mid(治療建議_lb.Text, 5, 100) = 適應症_dgv("治療建議", i).Value.ToString Then
  78. 備註_tb.Text = 適應症_dgv("備註", i).Value.ToString
  79. If 有備註 = True Then
  80. e.Node.Text = resultS & " => " & 備註_tb.Text
  81. End If : Exit For
  82. End If
  83. Next
  84. End If
  85. If e.Node.Checked = True Then : Else : e.Node.Checked = Not e.Node.Checked : End If
  86. Else : 症狀_lb.Text = "* " : 治療建議_lb.Text = "--> " : 備註_tb.Text = "" : 病症_cb.Text = "" : End If ' 切換 CheckBox 的勾選狀態
  87. Else ' 如果是第一層節點,判斷是否已經展開
  88. If e.Node.IsExpanded Then : 病症_cb.Text = e.Node.Text : 療程_cb.Text = "" : e.Node.Expand() ' 如果已經展開,則收合
  89. Else : e.Node.Collapse() : End If ' 如果未展開,則展開
  90. End If
  91. End Sub
  92. Dim XC As Integer
  93. Private Sub CheckChildNodes1(parentNode As TreeNode)
  94. For Each childNode As TreeNode In parentNode.Nodes
  95. If childNode.Checked Then
  96. Dim CV As String = childNode.Text
  97. Dim index As Integer = CV.IndexOf(" => ") : Dim resultS As String = ""
  98. If index <> -1 Then
  99. Dim result As String = CV.Substring(0, index) : resultS = result
  100. Else
  101. resultS = childNode.Text
  102. End If
  103. PA1 = resultS : PA2 = 適應症_dgv("適應症", XC).Value.ToString : PA3 = 適應症_dgv("備註", XC).Value.ToString : SQL_銷售明細新增() : XC += 1
  104. Else : XC += 1 : End If : If childNode.Nodes.Count > 0 Then : CheckChildNodes1(childNode) : End If
  105. Next
  106. End Sub
  107. Private Sub TreeView2_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles TreeView2.NodeMouseClick ' 判斷是否點擊在 CheckBox 的範圍內
  108. If e.Node.Bounds.Contains(e.Location) Then ' 判斷是否為第二層節點
  109. If e.Node.Parent IsNot Nothing Then
  110. Dim CV As String = e.Node.Text
  111. Dim index As Integer = CV.IndexOf(" => ") : Dim resultS As String = "" : Dim 有備註 As Boolean
  112. If index <> -1 Then
  113. Dim result As String = CV.Substring(0, index) : resultS = result : 有備註 = True
  114. Else
  115. resultS = e.Node.Text : 有備註 = False
  116. End If
  117. 品牌_cb.Text = e.Node.Parent.Text : 品牌_lb.Text = "* " & e.Node.Parent.Text : 保養品_lb.Text = "--> " & resultS
  118. If 品牌_lb.Text = "* " Or 保養品_lb.Text = "--> " Then : Else
  119. For i As Integer = 0 To 保養品_dgv.Rows.Count - 1
  120. If Strings.Mid(品牌_lb.Text, 3, 100) = 保養品_dgv("品牌", i).Value.ToString And Strings.Mid(保養品_lb.Text, 5, 100) = 保養品_dgv("產品", i).Value.ToString Then
  121. 備註1_tb.Text = 保養品_dgv("備註", i).Value.ToString
  122. If 有備註 = True Then
  123. e.Node.Text = resultS & " => " & 備註1_tb.Text
  124. End If : Exit For
  125. End If
  126. Next
  127. End If
  128. If e.Node.Checked = True Then : Else : e.Node.Checked = Not e.Node.Checked : End If
  129. Else : 品牌_lb.Text = "* " : 保養品_lb.Text = "--> " : 備註1_tb.Text = "" : 品牌_cb.Text = "" : End If ' 切換 CheckBox 的勾選狀態
  130. Else ' 如果是第一層節點,判斷是否已經展開
  131. If e.Node.IsExpanded Then : 品牌_cb.Text = e.Node.Text : 療程_cb.Text = "" : e.Node.Expand() ' 如果已經展開,則收合
  132. Else : e.Node.Collapse() : End If ' 如果未展開,則展開
  133. End If
  134. End Sub
  135. Dim XD As Integer
  136. Private Sub CheckChildNodes2(parentNode As TreeNode)
  137. For Each childNode As TreeNode In parentNode.Nodes
  138. If childNode.Checked Then
  139. Dim CV As String = childNode.Text
  140. Dim index As Integer = CV.IndexOf(" => ") : Dim resultS As String = ""
  141. If index <> -1 Then
  142. Dim result As String = CV.Substring(0, index) : resultS = result
  143. Else
  144. resultS = childNode.Text
  145. End If
  146. PA1 = resultS : PA2 = 保養品_dgv("品牌", XD).Value.ToString : PA3 = 保養品_dgv("備註", XD).Value.ToString : SQL_銷售保養品明細新增() : XD += 1
  147. Else : XD += 1 : End If : If childNode.Nodes.Count > 0 Then : CheckChildNodes2(childNode) : End If
  148. Next
  149. End Sub
  150. Private Sub 病症_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 病症_cb.SelectedIndexChanged
  151. 療程_cb.Text = "" : SQL_下拉清單載入2()
  152. End Sub
  153. Private Sub 品牌_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 品牌_cb.SelectedIndexChanged
  154. 保養品_cb.Text = "" : SQL_下拉清單載入4()
  155. End Sub
  156. Private Sub 備註_tb_TextChanged(sender As Object, e As EventArgs) Handles 備註_tb.TextChanged
  157. If 症狀_lb.Text = "* " Or 治療建議_lb.Text = "--> " Then : Else
  158. For i As Integer = 0 To 適應症_dgv.Rows.Count - 1
  159. If Strings.Mid(症狀_lb.Text, 3, 100) = 適應症_dgv("適應症", i).Value.ToString And Strings.Mid(治療建議_lb.Text, 5, 100) = 適應症_dgv("治療建議", i).Value.ToString Then
  160. 適應症_dgv("備註", i).Value = 備註_tb.Text : Exit For
  161. End If
  162. Next
  163. For i As Integer = 0 To 適應症_dgv.Rows.Count - 1
  164. If 適應症_dgv("備註", i).Value.ToString() = "" Then : Else
  165. Dim symptom As String = 適應症_dgv("適應症", i).Value.ToString() : Dim treatment As String = 適應症_dgv("治療建議", i).Value.ToString()
  166. Dim note As String = 適應症_dgv("備註", i).Value.ToString() : Dim CV As String = treatment : Dim index As Integer = CV.IndexOf(" => ") : Dim resultS As String = ""
  167. If index <> -1 Then : Dim result As String = CV.Substring(0, index) : resultS = result : Else : resultS = treatment : End If
  168. For Each node As TreeNode In TreeView1.Nodes
  169. If node.Text = symptom Then
  170. For Each childNode As TreeNode In node.Nodes
  171. If childNode.Text.StartsWith(resultS) Then
  172. If note = "" Then : childNode.Text = resultS : Else : childNode.Text = resultS & " => " & note : Exit For : End If
  173. End If
  174. Next
  175. End If
  176. Next
  177. End If
  178. Next
  179. End If
  180. End Sub
  181. Private Sub 備註1_tb_TextChanged(sender As Object, e As EventArgs) Handles 備註1_tb.TextChanged
  182. If 品牌_lb.Text = "* " Or 保養品_lb.Text = "--> " Then : Else
  183. For i As Integer = 0 To 保養品_dgv.Rows.Count - 1
  184. If Strings.Mid(品牌_lb.Text, 3, 100) = 保養品_dgv("品牌", i).Value.ToString And Strings.Mid(保養品_lb.Text, 5, 100) = 保養品_dgv("產品", i).Value.ToString Then
  185. 保養品_dgv("備註", i).Value = 備註1_tb.Text : Exit For
  186. End If
  187. Next
  188. For i As Integer = 0 To 保養品_dgv.Rows.Count - 1
  189. If 保養品_dgv("備註", i).Value.ToString() = "" Then : Else
  190. Dim symptom As String = 保養品_dgv("品牌", i).Value.ToString() : Dim treatment As String = 保養品_dgv("產品", i).Value.ToString()
  191. Dim note As String = 保養品_dgv("備註", i).Value.ToString() : Dim CV As String = treatment : Dim index As Integer = CV.IndexOf(" => ") : Dim resultS As String = ""
  192. If index <> -1 Then : Dim result As String = CV.Substring(0, index) : resultS = result : Else : resultS = treatment : End If
  193. For Each node As TreeNode In TreeView2.Nodes
  194. If node.Text = symptom Then
  195. For Each childNode As TreeNode In node.Nodes
  196. If childNode.Text.StartsWith(resultS) Then
  197. If note = "" Then : childNode.Text = resultS : Else : childNode.Text = resultS & " => " & note : Exit For : End If
  198. End If
  199. Next
  200. End If
  201. Next
  202. End If
  203. Next
  204. End If
  205. End Sub
  206. Private Sub 確認_bt_Click(sender As Object, e As EventArgs) Handles 確認_bt.Click
  207. If 病歷號_tb.Text = "" Then : MsgBox("病歷號 沒有填寫!!") : Else
  208. Dim 流水號 As String = "" : Dim 流水 As Integer : SQL_查詢銷售()
  209. If dr.Read Then : PA = dr("流水號").ToString : SQL_銷售明細刪除() : XC = 0
  210. For Each parentNode As TreeNode In TreeView1.Nodes : CheckChildNodes1(parentNode) : Next
  211. Else
  212. SQL_銷售流水號()
  213. If dr.Read() Then : 流水 = Double.Parse(Strings.Right(dr("流水號").ToString, 8)) : Else : 流水 = 0 : End If : conn.Close() : 流水 += 1
  214. If 流水 < 10 Then : 流水號 = "PO" & "0000000" & 流水
  215. ElseIf 流水 > 9 And 流水 < 100 Then : 流水號 = "PO" & "000000" & 流水
  216. ElseIf 流水 > 99 And 流水 < 1000 Then : 流水號 = "PO" & "00000" & 流水
  217. ElseIf 流水 > 999 And 流水 < 10000 Then : 流水號 = "PO" & "0000" & 流水
  218. ElseIf 流水 > 9999 And 流水 < 100000 Then : 流水號 = "PO" & "000" & 流水
  219. ElseIf 流水 > 99999 And 流水 < 1000000 Then : 流水號 = "PO" & "00" & 流水
  220. ElseIf 流水 > 999999 And 流水 < 10000000 Then : 流水號 = "PO" & "0" & 流水
  221. ElseIf 流水 > 9999999 Then : 流水號 = "PO" & 流水 : End If : PA = 流水號
  222. SQL_銷售控制新增() : SQL_銷售明細刪除() : XC = 0
  223. For Each parentNode As TreeNode In TreeView1.Nodes : CheckChildNodes1(parentNode) : Next
  224. End If
  225. 流水號 = "" : 流水 = 0 : SQL_查詢銷售()
  226. If dr.Read Then : PA = dr("流水號").ToString : SQL_銷售保養品明細刪除() : XD = 0
  227. For Each parentNode As TreeNode In TreeView2.Nodes : CheckChildNodes2(parentNode) : Next
  228. Else
  229. SQL_銷售流水號()
  230. If dr.Read() Then : 流水 = Double.Parse(Strings.Right(dr("流水號").ToString, 8)) : Else : 流水 = 0 : End If : conn.Close() : 流水 += 1
  231. If 流水 < 10 Then : 流水號 = "PO" & "0000000" & 流水
  232. ElseIf 流水 > 9 And 流水 < 100 Then : 流水號 = "PO" & "000000" & 流水
  233. ElseIf 流水 > 99 And 流水 < 1000 Then : 流水號 = "PO" & "00000" & 流水
  234. ElseIf 流水 > 999 And 流水 < 10000 Then : 流水號 = "PO" & "0000" & 流水
  235. ElseIf 流水 > 9999 And 流水 < 100000 Then : 流水號 = "PO" & "000" & 流水
  236. ElseIf 流水 > 99999 And 流水 < 1000000 Then : 流水號 = "PO" & "00" & 流水
  237. ElseIf 流水 > 999999 And 流水 < 10000000 Then : 流水號 = "PO" & "0" & 流水
  238. ElseIf 流水 > 9999999 Then : 流水號 = "PO" & 流水 : End If : PA = 流水號
  239. SQL_銷售控制新增() : SQL_銷售保養品明細刪除() : XD = 0
  240. For Each parentNode As TreeNode In TreeView2.Nodes : CheckChildNodes2(parentNode) : Next
  241. End If
  242. MsgBox("資料傳遞 至 業務系統 完成!!")
  243. For i As Integer = 0 To 適應症_dgv.Rows.Count - 1 : 適應症_dgv("備註", i).Value = "" : Next
  244. For i As Integer = 0 To 保養品_dgv.Rows.Count - 1 : 保養品_dgv("備註", i).Value = "" : Next
  245. 病歷號_tb.Text = "" : 適應症選擇() : 保養品選擇()
  246. End If
  247. End Sub
  248. Private Sub 存檔_bt_Click(sender As Object, e As EventArgs) Handles 存檔_bt.Click
  249. If 病症_cb.Text = "" Or 療程_cb.Text = "" Then : MsgBox("資料空白無法執行!!") : Else
  250. SQL_適應症流水()
  251. If dr.Read Then : MsgBox("資料已存在不需要重複新增!!") : Else
  252. Dim 流水號 As String = "" : Dim 流水 As Integer
  253. SQL_適應症流水1()
  254. If dr.Read() Then : 流水 = Double.Parse(Strings.Right(dr("流水號").ToString, 8)) : Else : 流水 = 0 : End If : conn.Close() : 流水 += 1
  255. If 流水 < 10 Then : 流水號 = "IN" & "0000000" & 流水
  256. ElseIf 流水 > 9 And 流水 < 100 Then : 流水號 = "IN" & "000000" & 流水
  257. ElseIf 流水 > 99 And 流水 < 1000 Then : 流水號 = "IN" & "00000" & 流水
  258. ElseIf 流水 > 999 And 流水 < 10000 Then : 流水號 = "IN" & "0000" & 流水
  259. ElseIf 流水 > 9999 And 流水 < 100000 Then : 流水號 = "IN" & "000" & 流水
  260. ElseIf 流水 > 99999 And 流水 < 1000000 Then : 流水號 = "IN" & "00" & 流水
  261. ElseIf 流水 > 999999 And 流水 < 10000000 Then : 流水號 = "IN" & "0" & 流水
  262. ElseIf 流水 > 9999999 Then : 流水號 = "IN" & 流水 : End If : PA = 流水號
  263. SQL_適應症新增1() : Set_適應症設定()
  264. End If
  265. End If
  266. End Sub
  267. Private Sub 刪除_bt_Click(sender As Object, e As EventArgs) Handles 刪除_bt.Click
  268. Dim cc As MsgBoxResult = MsgBox("確定要刪除這筆適應症資料嗎??", MsgBoxStyle.OkCancel)
  269. If cc = MsgBoxResult.Ok Then : SQL_適應症刪除1() : Set_適應症設定() : End If
  270. End Sub
  271. Private Sub 存檔1_bt_Click(sender As Object, e As EventArgs) Handles 存檔1_bt.Click
  272. If 品牌_cb.Text = "" Or 保養品_cb.Text = "" Then : MsgBox("資料空白無法執行!!") : Else
  273. SQL_保養品流水()
  274. If dr.Read Then : MsgBox("資料已存在不需要重複新增!!") : Else
  275. Dim 流水號 As String = "" : Dim 流水 As Integer
  276. SQL_保養品流水1()
  277. If dr.Read() Then : 流水 = Double.Parse(Strings.Right(dr("流水號").ToString, 8)) : Else : 流水 = 0 : End If : conn.Close() : 流水 += 1
  278. If 流水 < 10 Then : 流水號 = "IN" & "0000000" & 流水
  279. ElseIf 流水 > 9 And 流水 < 100 Then : 流水號 = "IN" & "000000" & 流水
  280. ElseIf 流水 > 99 And 流水 < 1000 Then : 流水號 = "IN" & "00000" & 流水
  281. ElseIf 流水 > 999 And 流水 < 10000 Then : 流水號 = "IN" & "0000" & 流水
  282. ElseIf 流水 > 9999 And 流水 < 100000 Then : 流水號 = "IN" & "000" & 流水
  283. ElseIf 流水 > 99999 And 流水 < 1000000 Then : 流水號 = "IN" & "00" & 流水
  284. ElseIf 流水 > 999999 And 流水 < 10000000 Then : 流水號 = "IN" & "0" & 流水
  285. ElseIf 流水 > 9999999 Then : 流水號 = "IN" & 流水 : End If : PA = 流水號
  286. SQL_保養品新增1() : Set_適應症設定()
  287. End If
  288. End If
  289. End Sub
  290. Private Sub 刪除1_bt_Click(sender As Object, e As EventArgs) Handles 刪除1_bt.Click
  291. Dim cc As MsgBoxResult = MsgBox("確定要刪除這筆適應症資料嗎??", MsgBoxStyle.OkCancel)
  292. If cc = MsgBoxResult.Ok Then : SQL_適應症刪除2() : Set_適應症設定() : End If
  293. End Sub
  294. Private Sub 醫生_tb_Click(sender As Object, e As EventArgs) Handles 醫生_tb.Click
  295. 非第一次 = True : 醫師.ShowDialog() : 醫生_tb.Text = PA
  296. End Sub
  297. End Class