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 8.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. Public Class 交易明細表導入
  2. Dim GP As Integer = 0 : Dim GPP As String
  3. ReadOnly ds As New DataSet
  4. Private Sub Set_貼上()
  5. 轉換前_dgv.DataSource = Nothing : ds.Clear()
  6. 轉換前_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  7. 轉換前_dgv.ColumnHeadersHeight = 25
  8. 轉換前_dgv.AllowUserToAddRows = False
  9. ConnOpen_ERP()
  10. SQL1 = "SELECT 銷售日期, 客戶編號, 客戶名稱, 生日, 品項, 品名, 單價, 數量, 折比, 折讓, 業績, 備註, 批價備註,
  11. 醫師, 排程人員, 操作人員, 產品銷售, 收款人員, 其他備註, 流水號 FROM 客戶交易明細表 WHERE 銷售日期 LIKE N'' ORDER BY 流水號"
  12. CmdSet_For_DGV()
  13. da.Fill(ds) : 轉換前_dgv.DataSource = ds.Tables(0) : conn.Close()
  14. End Sub
  15. Private Sub 交易明細表導入_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  16. Me.MdiParent = GRAMS_SYS : Me.WindowState = 2 : Me.AutoScroll = True
  17. ConnOpen_ERP() : SQL1 = "DELETE 客戶交易明細表 WHERE 銷售日期 LIKE ''" : CmdSet_For_dr() : Set_貼上()
  18. End Sub
  19. Private Sub 貼上_bt_Click(sender As Object, e As EventArgs) Handles 貼上_bt.Click
  20. DataGridView1多行列貼上()
  21. End Sub
  22. Private Sub DataGridView1多行列貼上()
  23. Dim i, j As Integer : Dim pRow, pCol As Integer : Dim startRow, startCol, endRow, endCol As Integer
  24. Dim pasteText, strline, strVal As String : Dim strlines, vals As String() : Dim pasteData(,) As String
  25. '获取剪切板的内容,并按行分割------------------------------------------------------------------------------------------------------------
  26. pasteText = Clipboard.GetText()
  27. If String.IsNullOrEmpty(pasteText) Then : Return : End If
  28. pasteText = pasteText.Replace(vbCrLf, vbLf)
  29. Dim unused As String()
  30. ReDim unused(0) : strlines = pasteText.Split(vbLf) : pRow = strlines.Length : pCol = 0 '-----------------------------------------行数
  31. '生成空白資料-------------------------------------------------------------------------------------------------------------------------
  32. ConnOpen_ERP() : SQL1 = "SELECT TOP(1) 流水號 FROM 客戶交易明細表 ORDER BY 流水號 DESC" : CmdSet_For_dr()
  33. If dr.Read() Then : GP = Double.Parse(Strings.Right(dr("流水號").ToString, 8)) : Else : GP = 0 : End If : conn.Close() : GP += 1
  34. For NO As Integer = 0 To pRow
  35. 資料數 = pRow : MyModule1.進度條()
  36. If GP < 10 Then : GPP = "PO" & "0000000" & GP
  37. ElseIf GP > 9 And GP < 100 Then : GPP = "PO" & "000000" & GP
  38. ElseIf GP > 99 And GP < 1000 Then : GPP = "PO" & "00000" & GP
  39. ElseIf GP > 999 And GP < 10000 Then : GPP = "PO" & "0000" & GP
  40. ElseIf GP > 9999 And GP < 100000 Then : GPP = "PO" & "000" & GP
  41. ElseIf GP > 99999 And GP < 1000000 Then : GPP = "PO" & "00" & GP
  42. ElseIf GP > 999999 And GP < 10000000 Then : GPP = "PO" & "0" & GP
  43. ElseIf GP > 9999999 Then : GPP = "PO" & GP : End If : PA = GPP
  44. ConnOpen_ERP() : SQL1 = "INSERT INTO 客戶交易明細表 (流水號, 銷售日期, 客戶編號, 客戶名稱, 生日, 品項, 品名, 單價, 數量, 折比, 折讓, 業績, 備註, 批價備註,
  45. 醫師, 排程人員, 操作人員, 產品銷售, 收款人員, 其他備註) VALUES ('" & PA & "', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')" : CmdSet_For_dr()
  46. conn.Close() : GP += 1
  47. Next : GRAMS_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
  48. Set_貼上()
  49. '按列分割,並貼上資料-------------------------------------------------------------------------------------------------------------------
  50. For Each strline In strlines
  51. Dim unused3 As String()
  52. ReDim unused3(0)
  53. vals = strline.Split(New Char() {vbTab, vbCr, vbNullChar, vbNullString}, 256, StringSplitOptions.RemoveEmptyEntries) ' 按Tab分割数据
  54. pCol = Math.Max(vals.Length, pCol) '--------------------------------------------------------------------------------------------列数
  55. Next
  56. startRow = 0 : startCol = 0 : endRow = pRow : endCol = pCol
  57. ReDim pasteData(pRow, pCol) : pasteText = Clipboard.GetText() : pasteText = pasteText.Replace(vbCrLf, vbLf)
  58. Dim unused1 As String()
  59. ReDim unused1(0) : strlines = pasteText.Split(vbLf) : i = 1
  60. For Each strline In strlines
  61. j = 1
  62. Dim unused2 As String()
  63. ReDim unused2(0) : strline.TrimEnd(New Char() {vbLf}) : vals = strline.Split(New Char() {vbTab, vbCr, vbNullChar, vbNullString}, 256, StringSplitOptions.RemoveEmptyEntries)
  64. For Each strVal In vals : pasteData(i, j) = strVal : j += 1 : Next : i += 1
  65. Next
  66. Dim flag As Boolean = False
  67. For j = 1 To pCol : If pasteData(pRow, j) <> "" Then : flag = True : Exit For : End If : Next
  68. If flag = False Then : pRow = Math.Max(pRow - 1, 0) : End If
  69. For i = 1 To endRow - startRow + 1
  70. Dim row As DataGridViewRow = 轉換前_dgv.Rows(i + startRow - 1)
  71. If i <= pRow Then : For j = 1 To endCol - startCol + 1 : If j <= pCol Then : row.Cells(j + startCol - 1).Value = pasteData(i, j) : Else : Exit For : End If : Next
  72. Else : Exit For : End If
  73. Next
  74. End Sub
  75. Private Sub 存檔_bt_Click(sender As Object, e As EventArgs) Handles 存檔_bt.Click
  76. 資料數 = 轉換前_dgv.Rows.Count
  77. For I As Integer = 0 To 轉換前_dgv.Rows.Count - 1
  78. MyModule1.進度條()
  79. ConnOpen_ERP()
  80. SQL1 = "UPDATE 客戶交易明細表 SET 銷售日期 = N'" & 轉換前_dgv.Rows(I).Cells("銷售日期").Value & "', 客戶編號 = N'" & 轉換前_dgv.Rows(I).Cells("客戶編號").Value & "',
  81. 客戶名稱 = N'" & 轉換前_dgv.Rows(I).Cells("客戶名稱").Value & "', 生日 = N'" & 轉換前_dgv.Rows(I).Cells("生日").Value & "',
  82. 品項 = N'" & 轉換前_dgv.Rows(I).Cells("品項").Value & "', 品名 = N'" & 轉換前_dgv.Rows(I).Cells("品名").Value & "',
  83. 單價 = N'" & 轉換前_dgv.Rows(I).Cells("單價").Value & "', 數量 = N'" & 轉換前_dgv.Rows(I).Cells("數量").Value & "',
  84. 折比 = N'" & 轉換前_dgv.Rows(I).Cells("折比").Value & "', 折讓 = N'" & 轉換前_dgv.Rows(I).Cells("折讓").Value & "',
  85. 業績 = N'" & 轉換前_dgv.Rows(I).Cells("業績").Value & "', 備註 = N'" & 轉換前_dgv.Rows(I).Cells("備註").Value & "',
  86. 批價備註 = N'" & 轉換前_dgv.Rows(I).Cells("批價備註").Value & "', 醫師 = N'" & 轉換前_dgv.Rows(I).Cells("醫師").Value & "',
  87. 排程人員 = N'" & 轉換前_dgv.Rows(I).Cells("排程人員").Value & "', 操作人員 = N'" & 轉換前_dgv.Rows(I).Cells("操作人員").Value & "',
  88. 產品銷售 = N'" & 轉換前_dgv.Rows(I).Cells("產品銷售").Value & "', 收款人員 = N'" & 轉換前_dgv.Rows(I).Cells("收款人員").Value & "',
  89. 其他備註 = N'" & 轉換前_dgv.Rows(I).Cells("其他備註").Value & "'
  90. WHERE 流水號 LIKE '" & 轉換前_dgv.Rows(I).Cells("流水號").Value & "'"
  91. CmdSet_For_dr() : conn.Close()
  92. If 轉換前_dgv.Rows(I).Cells("銷售日期").Value = "" And 轉換前_dgv.Rows(I).Cells("客戶編號").Value = "" Then
  93. Exit For
  94. End If
  95. Next : GRAMS_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
  96. ConnOpen_ERP() : SQL1 = "DELETE 客戶交易明細表 WHERE 銷售日期 LIKE ''" : CmdSet_For_dr()
  97. MsgBox("存檔完成,下一步請到 [業務資料系統管理] 中調整沒有分類的品項與沒有設定的人員!!!")
  98. End Sub
  99. End Class