Option Strict Off Public Class 客戶資料管理 ReadOnly ds As New DataSet Dim EDR As Integer = 0 : Dim ESTR As String Private Sub Set_客戶清單() 客戶清單_dgv.DataSource = Nothing : ds.Clear() : 客戶清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing : 客戶清單_dgv.ColumnHeadersHeight = 50 客戶清單_dgv.AllowUserToAddRows = False : 客戶清單_dgv.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText : 客戶清單_dgv.MultiSelect = True SQL_客戶資料管理清單() da.Fill(ds) : 客戶清單_dgv.DataSource = ds.Tables(0) : conn.Close() 客戶清單_dgv.Columns(0).Visible = False : 客戶清單_dgv.Columns(1).Width = 150 : 客戶清單_dgv.Columns(2).Width = 100 : 客戶清單_dgv.Columns(3).Width = 258 客戶清單_dgv.Columns(4).Width = 50 : 客戶清單_dgv.Columns(5).Width = 250 : 客戶清單_dgv.Columns(6).Width = 60 : 客戶清單_dgv.Columns(7).Width = 60 客戶清單_dgv.Columns(8).Width = 120 : 客戶清單_dgv.Columns(9).Width = 120 : 客戶清單_dgv.Columns(10).Width = 120 : 客戶清單_dgv.Columns(11).Width = 90 客戶清單_dgv.Columns(12).Width = 150 : 客戶清單_dgv.Columns(13).Width = 250 : 客戶清單_dgv.Columns(14).Width = 50 : 客戶清單_dgv.Columns(15).Width = 60 客戶清單_dgv.Columns(16).Width = 120 : 客戶清單_dgv.Columns(17).Width = 70 : 客戶清單_dgv.Columns(18).Width = 50 : 客戶清單_dgv.Columns(19).Width = 60 客戶清單_dgv.Columns(20).Width = 80 : 客戶清單_dgv.Columns(21).Width = 250 : 客戶清單_dgv.Columns(22).Width = 50 客戶清單_dgv.Columns(15).DefaultCellStyle.Format = "#,##0" : 客戶清單_dgv.Columns(18).DefaultCellStyle.Format = "#,##0" 客戶清單_dgv.Columns(15).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 客戶清單_dgv.Columns(15).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 客戶清單_dgv.Columns(18).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 客戶清單_dgv.Columns(18).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 客戶清單_dgv.Columns(0).Frozen = True : 客戶清單_dgv.Columns(1).Frozen = True If 模式一_bt.Enabled = False Then : 格式1_縮小() Else : 格式2_放大() : 可全選_ch.Checked = True : 可全選_ch.Checked = True : 客戶清單_dgv.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2 : End If End Sub Private Sub DataGridView1多行列貼上() Dim i, j As Integer : Dim pRow, pCol As Integer : Dim selectedCellCount As Integer : Dim startRow, startCol, endRow, endCol As Integer Dim pasteText, strline, strVal As String : Dim strlines, vals As String() : Dim pasteData(,) As String ' 当前单元格是否选择的判断 If 客戶清單_dgv.CurrentCell Is Nothing Then : Return : End If Dim insertRowIndex As Integer = 客戶清單_dgv.CurrentCell.RowIndex ' 获取DataGridView选择区域,并计算要复制的行列开始、结束位置 startRow = 9999 : startCol = 9999 : endRow = 0 : endCol = 0 selectedCellCount = 客戶清單_dgv.GetCellCount(DataGridViewElementStates.Selected) For i = 0 To selectedCellCount - 1 startRow = Math.Min(客戶清單_dgv.SelectedCells(i).RowIndex, startRow) : startCol = Math.Min(客戶清單_dgv.SelectedCells(i).ColumnIndex, startCol) endRow = Math.Max(客戶清單_dgv.SelectedCells(i).RowIndex, endRow) : endCol = Math.Max(客戶清單_dgv.SelectedCells(i).ColumnIndex, endCol) Next ' 获取剪切板的内容,并按行分割 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 '行数 For Each strline In strlines Dim unused2 As String() ReDim unused2(0) vals = strline.Split(New Char() {vbTab, vbCr, vbNullChar, vbNullString}, 256, StringSplitOptions.RemoveEmptyEntries) ' 按Tab分割数据 pCol = Math.Max(vals.Length, pCol) '列数 Next 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 unused3 As String() ReDim unused3(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 'DataGridView1貼上資料後去除雙引號() End Sub Private Sub ComboBox1下拉表單資料載入() PA = "%%" : SQL_付款方式查詢() 付款方式_cb.Items.Clear() : While (dr.Read()) : 付款方式_cb.Items.Add(dr("付款方式")) : End While : conn.Close() : PA = "" End Sub Private Sub 格式1_縮小() 客戶清單_dgv.Columns(13).Visible = False 客戶清單_dgv.Columns(19).Visible = False : 客戶清單_dgv.Columns(20).Visible = False : 客戶清單_dgv.Columns(21).Visible = False : 客戶清單_dgv.Columns(22).Visible = False 客戶清單_dgv.Columns(1).ReadOnly = True : 客戶清單_dgv.Columns(2).ReadOnly = True : 客戶清單_dgv.Columns(3).ReadOnly = True : 客戶清單_dgv.Columns(4).ReadOnly = True 客戶清單_dgv.Columns(5).ReadOnly = True : 客戶清單_dgv.Columns(6).ReadOnly = True : 客戶清單_dgv.Columns(7).ReadOnly = True : 客戶清單_dgv.Columns(8).ReadOnly = True 客戶清單_dgv.Columns(9).ReadOnly = True : 客戶清單_dgv.Columns(10).ReadOnly = True : 客戶清單_dgv.Columns(11).ReadOnly = True : 客戶清單_dgv.Columns(12).ReadOnly = True 客戶清單_dgv.Columns(13).ReadOnly = True : 客戶清單_dgv.Columns(14).ReadOnly = True : 客戶清單_dgv.Columns(15).ReadOnly = True : 客戶清單_dgv.Columns(16).ReadOnly = True 客戶清單_dgv.Columns(17).ReadOnly = True : 客戶清單_dgv.Columns(18).ReadOnly = True : 客戶清單_dgv.Columns(19).ReadOnly = True : 客戶清單_dgv.Columns(20).ReadOnly = True 客戶清單_dgv.Columns(21).ReadOnly = True : 客戶清單_dgv.Columns(22).ReadOnly = True End Sub Private Sub 格式2_放大() 客戶清單_dgv.Columns(13).Visible = True 客戶清單_dgv.Columns(19).Visible = True : 客戶清單_dgv.Columns(20).Visible = True : 客戶清單_dgv.Columns(21).Visible = True : 客戶清單_dgv.Columns(22).Visible = True 客戶清單_dgv.Columns(1).ReadOnly = False : 客戶清單_dgv.Columns(2).ReadOnly = False : 客戶清單_dgv.Columns(3).ReadOnly = False : 客戶清單_dgv.Columns(4).ReadOnly = False 客戶清單_dgv.Columns(5).ReadOnly = False : 客戶清單_dgv.Columns(6).ReadOnly = False : 客戶清單_dgv.Columns(7).ReadOnly = False : 客戶清單_dgv.Columns(8).ReadOnly = False 客戶清單_dgv.Columns(9).ReadOnly = False : 客戶清單_dgv.Columns(10).ReadOnly = False : 客戶清單_dgv.Columns(11).ReadOnly = False : 客戶清單_dgv.Columns(12).ReadOnly = False 客戶清單_dgv.Columns(13).ReadOnly = False : 客戶清單_dgv.Columns(14).ReadOnly = False : 客戶清單_dgv.Columns(15).ReadOnly = False : 客戶清單_dgv.Columns(16).ReadOnly = False 客戶清單_dgv.Columns(17).ReadOnly = False : 客戶清單_dgv.Columns(18).ReadOnly = False : 客戶清單_dgv.Columns(19).ReadOnly = False : 客戶清單_dgv.Columns(20).ReadOnly = False 客戶清單_dgv.Columns(21).ReadOnly = False : 客戶清單_dgv.Columns(22).ReadOnly = False End Sub Private Sub 客戶資料管理_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.MdiParent = MAOJI_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True ComboBox1下拉表單資料載入() Set_客戶清單() 編號_tb.Enabled = False : 付款編號_tb.Visible = False : 模式一_bt.Enabled = False : 模式二_bt.Enabled = True 格式1_縮小() : If gUserName = "李協叡" Then : 資料刪除ToolStripMenuItem.Enabled = True : Else : 資料刪除ToolStripMenuItem.Enabled = False : End If End Sub Private Sub DataGridView1_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 客戶清單_dgv.CellClick If e.RowIndex = -1 Then : Else 編號_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("編號").Value.ToString : 店名_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("店名").Value.ToString 簡稱_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("簡稱").Value.ToString : 店面地址_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("店面地址").Value.ToString 店面地址郵號_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("店面地址郵遞區號").Value.ToString : 送貨地址_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("送貨地址").Value.ToString 負責人_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("負責人").Value.ToString : 聯絡人_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("聯絡人").Value.ToString 電話_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("電話").Value.ToString : 手機_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("手機").Value.ToString 傳真_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("傳真").Value.ToString : 統編_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("統編").Value.ToString 發票抬頭_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("發票抬頭").Value.ToString : 發票地址_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("發票地址").Value.ToString 發票地址郵號_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("發票地址郵遞區號").Value.ToString : 發票額度_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("發票額度").Value.ToString LineID_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("LineID").Value.ToString : 付款方式_cb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("付款方式").Value.ToString 折扣_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("折扣").Value.ToString : 負責業務_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("負責業務").Value.ToString 備註_tb.Text = 客戶清單_dgv.Rows(e.RowIndex).Cells("備註").Value.ToString If 客戶清單_dgv.Rows(e.RowIndex).Cells("建立日期").Value = "" Then : Else : 建立日期_dtp.Value = 客戶清單_dgv.Rows(e.RowIndex).Cells("建立日期").Value.ToString : End If 發票額度_tb.Text = Strings.Format(Val(發票額度_tb.Text), "#,##0") : 折扣_tb.Text = Strings.Format(Val(折扣_tb.Text), "#,##0") End If End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 付款方式_cb.SelectedIndexChanged PA1 = 付款方式_cb.Text : SQL_付款方式_編號() If dr.Read() Then : 付款編號_tb.Text = dr("編號") : End If : conn.Close() End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles 模式一_bt.Click 模式一_bt.Enabled = False : 模式二_bt.Enabled = True : 格式1_縮小() End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles 模式二_bt.Click 模式一_bt.Enabled = True : 模式二_bt.Enabled = False : 格式2_放大() 可全選_ch.Checked = True : 可全選_ch.Checked = True : 客戶清單_dgv.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2 End Sub Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles 可全選_ch.Click If 可全選_ch.Checked = False Then 可全選_ch.Checked = False : 客戶清單_dgv.EditMode = DataGridViewEditMode.EditOnEnter Else 可全選_ch.Checked = True : 客戶清單_dgv.EditMode = DataGridViewEditMode.EditOnKeystrokeOrF2 End If End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles 關鍵字查詢_bt.Click PA = InputBox("請輸入要查詢的關鍵字") : Set_客戶清單() : PA = "" End Sub Private Sub Set_日期格式轉換() 建立日期_dtp.Value = Today() : DTP1 = Format(建立日期_dtp.Value, "yyyy/MM/dd") End Sub Private Sub 新增1() '----------------------自动生成流水号------------------------------------------------------------------------- SQL_客戶資料管理流水號最後一筆() If dr.Read() Then : EDR = Double.Parse(Strings.Right(dr("編號").ToString, 8)) : Else : EDR = 0 : End If : conn.Close() : EDR += 1 If EDR < 10 Then : ESTR = "CI" & "0000000" & EDR ElseIf EDR > 9 And EDR < 100 Then : ESTR = "CI" & "000000" & EDR ElseIf EDR > 99 And EDR < 1000 Then : ESTR = "CI" & "00000" & EDR ElseIf EDR > 999 And EDR < 10000 Then : ESTR = "CI" & "0000" & EDR ElseIf EDR > 9999 And EDR < 100000 Then : ESTR = "CI" & "000" & EDR ElseIf EDR > 99999 And EDR < 100000 Then : ESTR = "CI" & "00" & EDR ElseIf EDR > 999999 And EDR < 1000000 Then : ESTR = "CI" & "0" & EDR ElseIf EDR > 9999999 Then : ESTR = "CI" & EDR : End If : 編號_tb.Text = ESTR End Sub Private Sub 新增2() '----------------------新增一笔资料------------------------------------------------------------------------------ Set_日期格式轉換() : PA1 = ESTR : PA2 = DTP1 : SQL_客戶資料管理新增() : conn.Close() End Sub Private Sub 存檔1() For i As Integer = 0 To 客戶清單_dgv.Rows.Count - 1 資料數 = 客戶清單_dgv.Rows.Count : MyModule1.進度條() PA1 = 客戶清單_dgv.Rows(i).Cells("店名").Value : PA2 = 客戶清單_dgv.Rows(i).Cells("簡稱").Value : PA3 = 客戶清單_dgv.Rows(i).Cells("店面地址").Value PA4 = 客戶清單_dgv.Rows(i).Cells("店面地址郵遞區號").Value : PA5 = 客戶清單_dgv.Rows(i).Cells("送貨地址").Value : PA6 = 客戶清單_dgv.Rows(i).Cells("負責人").Value PA7 = 客戶清單_dgv.Rows(i).Cells("聯絡人").Value : PA8 = 客戶清單_dgv.Rows(i).Cells("電話").Value : PA9 = 客戶清單_dgv.Rows(i).Cells("手機").Value PA10 = 客戶清單_dgv.Rows(i).Cells("傳真").Value : PA11 = 客戶清單_dgv.Rows(i).Cells("統編").Value : PA12 = 客戶清單_dgv.Rows(i).Cells("發票抬頭").Value PA13 = 客戶清單_dgv.Rows(i).Cells("發票地址").Value : PA14 = 客戶清單_dgv.Rows(i).Cells("發票地址郵遞區號").Value : NU1 = 客戶清單_dgv.Rows(i).Cells("發票額度").Value PA15 = 客戶清單_dgv.Rows(i).Cells("LineID").Value : PA16 = 客戶清單_dgv.Rows(i).Cells("付款編碼").Value : NU2 = 客戶清單_dgv.Rows(i).Cells("折扣").Value PA17 = 客戶清單_dgv.Rows(i).Cells("負責業務").Value : PA18 = 客戶清單_dgv.Rows(i).Cells("建立日期").Value : PA19 = 客戶清單_dgv.Rows(i).Cells("備註").Value PA = 客戶清單_dgv.Rows(i).Cells("編號").Value SQL_客戶資料管理修改() : conn.Close() Next : MAOJI_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0 End Sub Private Sub 存檔2() If 編號_tb.Text = "" Then : Else DTP1 = Format(建立日期_dtp.Value, "yyyy/MM/dd") PA1 = 店名_tb.Text : PA2 = 簡稱_tb.Text : PA3 = 店面地址_tb.Text : PA4 = 店面地址郵號_tb.Text : PA5 = 送貨地址_tb.Text : PA6 = 負責人_tb.Text : PA7 = 聯絡人_tb.Text : PA8 = 電話_tb.Text PA9 = 手機_tb.Text : PA10 = 傳真_tb.Text : PA11 = 統編_tb.Text : PA12 = 發票抬頭_tb.Text : PA13 = 發票地址_tb.Text : PA14 = 發票地址郵號_tb.Text If 發票額度_tb.Text = "" Then : NU1 = 0 : Else : NU1 = 發票額度_tb.Text : End If PA15 = LineID_tb.Text : PA16 = 付款編號_tb.Text If 折扣_tb.Text = "" Then : NU2 = 0 : Else : NU2 = 折扣_tb.Text : End If PA17 = 負責業務_tb.Text : PA18 = DTP1 : PA19 = 備註_tb.Text : PA = 編號_tb.Text SQL_客戶資料管理修改() : conn.Close() End If End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles 新增一筆空白資料_bt.Click 存檔1() : 新增1() ComboBox1下拉表單資料載入() 店名_tb.Text = "" : 簡稱_tb.Text = "" : 店面地址_tb.Text = "" : 店面地址郵號_tb.Text = "" : 送貨地址_tb.Text = "" : 負責人_tb.Text = "" : 聯絡人_tb.Text = "" : 電話_tb.Text = "" 手機_tb.Text = "" : 傳真_tb.Text = "" : 統編_tb.Text = "" : 發票抬頭_tb.Text = "" : 發票地址_tb.Text = "" : 發票地址郵號_tb.Text = "" : 發票額度_tb.Text = "" : LineID_tb.Text = "" 折扣_tb.Text = "" : 負責業務_tb.Text = "" : 備註_tb.Text = "" : 付款編號_tb.Text = "" 新增2() : Set_客戶清單() End Sub Private Sub 單筆存檔_bt_Click(sender As Object, e As EventArgs) Handles 單筆存檔_bt.Click If IsNumeric(折扣_tb.Text) And IsNumeric(發票額度_tb.Text) Then If 編號_tb.Text = "" Then : 新增1() : 新增2() : End If 存檔2() : Set_客戶清單() : MsgBox("資料存檔完畢 。") Else MsgBox("折扣或發票額度不是阿拉伯數字或空白 。") End If End Sub Private Sub 批量存檔_bt_Click(sender As Object, e As EventArgs) Handles 批量存檔_bt.Click If 模式二_bt.Enabled = True Then MsgBox("整體存檔功能使用前請切換至模式二,並注意清單最後兩排資料的編碼原則,如不熟悉此操作規則請使用模式一作業。") Else 存檔1() : MsgBox("資料存檔完畢 。") End If End Sub Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles 只顯示35筆資料_ch.CheckedChanged Set_客戶清單() End Sub '-----------------------------滑鼠右鍵------------------------------------------------------------------------------------------------------------------------------------------ Private Sub 模式一ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 模式一ToolStripMenuItem.Click Me.模式一_bt.PerformClick() End Sub Private Sub 模式二ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 模式二ToolStripMenuItem.Click Me.模式二_bt.PerformClick() End Sub Private Sub 關鍵字查詢ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 關鍵字查詢ToolStripMenuItem.Click Me.關鍵字查詢_bt.PerformClick() End Sub Private Sub 新增一筆空白資料ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 新增一筆空白資料ToolStripMenuItem.Click Me.新增一筆空白資料_bt.PerformClick() End Sub Private Sub 資料存檔單一筆資料ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 資料存檔單一筆資料ToolStripMenuItem.Click Me.單筆存檔_bt.PerformClick() End Sub Private Sub 資料存檔整體清單ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 資料存檔整體清單ToolStripMenuItem.Click Me.批量存檔_bt.PerformClick() End Sub Private Sub 貼上ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 貼上ToolStripMenuItem.Click DataGridView1多行列貼上() End Sub Private Sub 重新讀取清單ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 重新讀取清單ToolStripMenuItem.Click Set_客戶清單() End Sub Private Sub 刪除ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 資料刪除ToolStripMenuItem.Click Dim aa As MsgBoxResult = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel) If aa = MsgBoxResult.Ok Then SQL_客戶資料管理刪除() : conn.Close() : MsgBox("刪除完成") : Set_客戶清單() : PA = "" End If End Sub End Class