123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- Public Class 交易明細表導入
- Dim GP As Integer = 0 : Dim GPP As String
- ReadOnly ds As New DataSet
- Private Sub Set_貼上()
- 轉換前_dgv.DataSource = Nothing : ds.Clear()
- 轉換前_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
- 轉換前_dgv.ColumnHeadersHeight = 25
- 轉換前_dgv.AllowUserToAddRows = False
- ConnOpen_ERP()
- SQL1 = "SELECT 銷售日期, 客戶編號, 客戶名稱, 生日, 品項, 品名, 單價, 數量, 折比, 折讓, 業績, 備註, 批價備註,
- 醫師, 排程人員, 操作人員, 產品銷售, 收款人員, 其他備註, 流水號 FROM 客戶交易明細表 WHERE 銷售日期 LIKE N'' ORDER BY 流水號"
- CmdSet_For_DGV()
- da.Fill(ds) : 轉換前_dgv.DataSource = ds.Tables(0) : conn.Close()
- End Sub
- Private Sub 交易明細表導入_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Me.MdiParent = GRAMS_SYS : Me.WindowState = 2 : Me.AutoScroll = True
- ConnOpen_ERP() : SQL1 = "DELETE 客戶交易明細表 WHERE 銷售日期 LIKE ''" : CmdSet_For_dr() : Set_貼上()
- End Sub
- Private Sub 貼上_bt_Click(sender As Object, e As EventArgs) Handles 貼上_bt.Click
- DataGridView1多行列貼上()
- End Sub
- Private Sub DataGridView1多行列貼上()
- Dim i, j As Integer : Dim pRow, pCol As Integer : Dim startRow, startCol, endRow, endCol As Integer
- Dim pasteText, strline, strVal As String : Dim strlines, vals As String() : Dim pasteData(,) As String
- '获取剪切板的内容,并按行分割------------------------------------------------------------------------------------------------------------
- pasteText = Clipboard.GetText()
- If String.IsNullOrEmpty(pasteText) Then : Return : End If
- pasteText = pasteText.Replace(vbCrLf, vbLf)
- Dim unused As String()
- ReDim unused(0) : strlines = pasteText.Split(vbLf) : pRow = strlines.Length : pCol = 0 '-----------------------------------------行数
-
- '生成空白資料-------------------------------------------------------------------------------------------------------------------------
- ConnOpen_ERP() : SQL1 = "SELECT TOP(1) 流水號 FROM 客戶交易明細表 ORDER BY 流水號 DESC" : CmdSet_For_dr()
- If dr.Read() Then : GP = Double.Parse(Strings.Right(dr("流水號").ToString, 8)) : Else : GP = 0 : End If : conn.Close() : GP += 1
- For NO As Integer = 0 To pRow
- 資料數 = pRow : MyModule1.進度條()
- If GP < 10 Then : GPP = "PO" & "0000000" & GP
- ElseIf GP > 9 And GP < 100 Then : GPP = "PO" & "000000" & GP
- ElseIf GP > 99 And GP < 1000 Then : GPP = "PO" & "00000" & GP
- ElseIf GP > 999 And GP < 10000 Then : GPP = "PO" & "0000" & GP
- ElseIf GP > 9999 And GP < 100000 Then : GPP = "PO" & "000" & GP
- ElseIf GP > 99999 And GP < 1000000 Then : GPP = "PO" & "00" & GP
- ElseIf GP > 999999 And GP < 10000000 Then : GPP = "PO" & "0" & GP
- ElseIf GP > 9999999 Then : GPP = "PO" & GP : End If : PA = GPP
-
- ConnOpen_ERP() : SQL1 = "INSERT INTO 客戶交易明細表 (流水號, 銷售日期, 客戶編號, 客戶名稱, 生日, 品項, 品名, 單價, 數量, 折比, 折讓, 業績, 備註, 批價備註,
- 醫師, 排程人員, 操作人員, 產品銷售, 收款人員, 其他備註) VALUES ('" & PA & "', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '')" : CmdSet_For_dr()
- conn.Close() : GP += 1
- Next : GRAMS_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
-
- Set_貼上()
-
- '按列分割,並貼上資料-------------------------------------------------------------------------------------------------------------------
- For Each strline In strlines
- Dim unused3 As String()
- ReDim unused3(0)
- vals = strline.Split(New Char() {vbTab, vbCr, vbNullChar, vbNullString}, 256, StringSplitOptions.RemoveEmptyEntries) ' 按Tab分割数据
- pCol = Math.Max(vals.Length, pCol) '--------------------------------------------------------------------------------------------列数
- Next
- startRow = 0 : startCol = 0 : endRow = pRow : endCol = pCol
-
- ReDim pasteData(pRow, pCol) : pasteText = Clipboard.GetText() : pasteText = pasteText.Replace(vbCrLf, vbLf)
- Dim unused1 As String()
- ReDim unused1(0) : strlines = pasteText.Split(vbLf) : i = 1
- For Each strline In strlines
- j = 1
- Dim unused2 As String()
- ReDim unused2(0) : strline.TrimEnd(New Char() {vbLf}) : vals = strline.Split(New Char() {vbTab, vbCr, vbNullChar, vbNullString}, 256, StringSplitOptions.RemoveEmptyEntries)
- For Each strVal In vals : pasteData(i, j) = strVal : j += 1 : Next : i += 1
- Next
- Dim flag As Boolean = False
- For j = 1 To pCol : If pasteData(pRow, j) <> "" Then : flag = True : Exit For : End If : Next
- If flag = False Then : pRow = Math.Max(pRow - 1, 0) : End If
- For i = 1 To endRow - startRow + 1
- Dim row As DataGridViewRow = 轉換前_dgv.Rows(i + startRow - 1)
- 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
- Else : Exit For : End If
- Next
- End Sub
- Private Sub 存檔_bt_Click(sender As Object, e As EventArgs) Handles 存檔_bt.Click
- 資料數 = 轉換前_dgv.Rows.Count
- For I As Integer = 0 To 轉換前_dgv.Rows.Count - 1
- MyModule1.進度條()
- ConnOpen_ERP()
- SQL1 = "UPDATE 客戶交易明細表 SET 銷售日期 = N'" & 轉換前_dgv.Rows(I).Cells("銷售日期").Value & "', 客戶編號 = N'" & 轉換前_dgv.Rows(I).Cells("客戶編號").Value & "',
- 客戶名稱 = N'" & 轉換前_dgv.Rows(I).Cells("客戶名稱").Value & "', 生日 = N'" & 轉換前_dgv.Rows(I).Cells("生日").Value & "',
- 品項 = N'" & 轉換前_dgv.Rows(I).Cells("品項").Value & "', 品名 = N'" & 轉換前_dgv.Rows(I).Cells("品名").Value & "',
- 單價 = N'" & 轉換前_dgv.Rows(I).Cells("單價").Value & "', 數量 = N'" & 轉換前_dgv.Rows(I).Cells("數量").Value & "',
- 折比 = N'" & 轉換前_dgv.Rows(I).Cells("折比").Value & "', 折讓 = N'" & 轉換前_dgv.Rows(I).Cells("折讓").Value & "',
- 業績 = N'" & 轉換前_dgv.Rows(I).Cells("業績").Value & "', 備註 = N'" & 轉換前_dgv.Rows(I).Cells("備註").Value & "',
- 批價備註 = N'" & 轉換前_dgv.Rows(I).Cells("批價備註").Value & "', 醫師 = N'" & 轉換前_dgv.Rows(I).Cells("醫師").Value & "',
- 排程人員 = N'" & 轉換前_dgv.Rows(I).Cells("排程人員").Value & "', 操作人員 = N'" & 轉換前_dgv.Rows(I).Cells("操作人員").Value & "',
- 產品銷售 = N'" & 轉換前_dgv.Rows(I).Cells("產品銷售").Value & "', 收款人員 = N'" & 轉換前_dgv.Rows(I).Cells("收款人員").Value & "',
- 其他備註 = N'" & 轉換前_dgv.Rows(I).Cells("其他備註").Value & "'
- WHERE 流水號 LIKE '" & 轉換前_dgv.Rows(I).Cells("流水號").Value & "'"
- CmdSet_For_dr() : conn.Close()
- If 轉換前_dgv.Rows(I).Cells("銷售日期").Value = "" And 轉換前_dgv.Rows(I).Cells("客戶編號").Value = "" Then
- Exit For
- End If
- Next : GRAMS_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0
-
- ConnOpen_ERP() : SQL1 = "DELETE 客戶交易明細表 WHERE 銷售日期 LIKE ''" : CmdSet_For_dr()
- MsgBox("存檔完成,下一步請到 [業務資料系統管理] 中調整沒有分類的品項與沒有設定的人員!!!")
- End Sub
- End Class
|