Option Strict Off Imports System.IO Imports System.Net Public Class 物料資料庫 ReadOnly ds As New DataSet : ReadOnly ds1 As New DataSet : ReadOnly ds2 As New DataSet Dim EDR As Integer = 0 : Dim ESTR As String Private Sub Set_DGV1開始() 物料清單_dgv.DataSource = Nothing : ds.Clear() 物料清單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 物料清單_dgv.ColumnHeadersHeight = 40 物料清單_dgv.AllowUserToAddRows = False 物料清單_dgv.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText 物料清單_dgv.MultiSelect = True End Sub Private Sub Set_物料清單() NU1 = True : NU2 = False : Set_DGV1開始() : SQL__物料資料庫清單() : Set_DGV1結束() End Sub Private Sub Set_DGV1結束() da.Fill(ds) : 物料清單_dgv.DataSource = ds.Tables(0) : conn.Close() 物料清單_dgv.Columns(0).FillWeight = 8 : 物料清單_dgv.Columns(1).FillWeight = 6 : 物料清單_dgv.Columns(2).FillWeight = 20 : 物料清單_dgv.Columns(3).FillWeight = 5 物料清單_dgv.Columns(4).FillWeight = 5 : 物料清單_dgv.Columns(5).FillWeight = 5 : 物料清單_dgv.Columns(6).FillWeight = 10 : 物料清單_dgv.Columns(7).FillWeight = 10 物料清單_dgv.Columns(8).Visible = False : 物料清單_dgv.Columns(9).FillWeight = 10 : 物料清單_dgv.Columns(10).FillWeight = 5 : 物料清單_dgv.Columns(11).FillWeight = 3 物料清單_dgv.EditMode = DataGridViewEditMode.EditOnEnter 物料清單_dgv.Columns(3).DefaultCellStyle.Format = "#,##0" : 物料清單_dgv.Columns(4).DefaultCellStyle.Format = "#,##0" : 物料清單_dgv.Columns(5).DefaultCellStyle.Format = "#,##0" 物料清單_dgv.Columns(10).DefaultCellStyle.Format = "#,##0" 物料清單_dgv.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter : 物料清單_dgv.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 物料清單_dgv.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter : 物料清單_dgv.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 物料清單_dgv.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter : 物料清單_dgv.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 物料清單_dgv.Columns(10).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter : 物料清單_dgv.Columns(10).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 物料清單_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(11).ReadOnly = True : 物料清單_dgv.Columns(0).ReadOnly = True For i As Integer = 0 To 物料清單_dgv.Rows.Count - 1 If 物料清單_dgv.Rows(i).Cells("最低庫存量").Value.ToString = "" Then 物料清單_dgv.Rows(i).Cells("最低庫存量").Value = 0 End If Next End Sub Private Sub Set_未配置圖片的物料清單() 無圖料號_dgv.DataSource = Nothing : ds1.Clear() 無圖料號_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 無圖料號_dgv.ColumnHeadersHeight = 25 無圖料號_dgv.AllowUserToAddRows = False 無圖料號_dgv.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableWithoutHeaderText 無圖料號_dgv.MultiSelect = True SQL_未配置圖片的物料清單() da.Fill(ds1) : 無圖料號_dgv.DataSource = ds1.Tables(0) : conn.Close() 無圖料號_dgv.Columns(0).FillWeight = 10 : 無圖料號_dgv.Columns(0).ReadOnly = True End Sub Private Sub ComboBox1下拉表單資料載入() SQL_物料頁碼清單() 頁碼_cb.Items.Clear() : While (dr.Read()) : 頁碼_cb.Items.Add(dr("頁碼")) : End While : conn.Close() End Sub Private Sub 圖片導入() 物料圖_pb.Image = Nothing : PA = 圖片編碼_tb.Text : SQL_物料圖庫_圖片顯示() While dr.Read() = True Dim unused As Byte() = New Byte(-1) {} Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte()) Dim oStream As New MemoryStream(bytes) 物料圖_pb.Image = Bitmap.FromStream(oStream) End While conn.Close() : 物料圖_pb.SizeMode = 4 : PA = "" 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 料號_tb.Enabled = False : 批量存檔_bt.Enabled = False 圖片編碼_tb.Visible = False : 檔名讀取_tb.Visible = False : 下載檔名_tb.Visible = False ComboBox1下拉表單資料載入() : Set_物料清單() : Set_未配置圖片的物料清單() If gUserName = "李協叡" Then : 資料刪除ToolStripMenuItem.Enabled = True : Else : 資料刪除ToolStripMenuItem.Enabled = False : End If If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then : 本機資料夾_wb.Navigate(FolderBrowserDialog1.SelectedPath) : End If Target1 = Target & AA(1) & "/" FTP資料夾_wb.Url = New Uri(Target1) 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 : 成本_nud.Value = 物料清單_dgv.Rows(e.RowIndex).Cells("成本").Value.ToString 售價_nud.Value = 物料清單_dgv.Rows(e.RowIndex).Cells("售價").Value.ToString : 件數_nud.Value = 物料清單_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 停用料號_ch.Checked = 物料清單_dgv.Rows(e.RowIndex).Cells("停用").Value : 最低庫存量_nud.Value = 物料清單_dgv.Rows(e.RowIndex).Cells("最低庫存量").Value 圖片導入() For i As Integer = 0 To 無圖料號_dgv.Rows.Count - 1 If 物料清單_dgv.Rows(e.RowIndex).Cells("料號").Value.ToString = 無圖料號_dgv.Rows(i).Cells("料號").Value.ToString Then 圖片用料號_tb.Text = 物料清單_dgv.Rows(e.RowIndex).Cells("料號").Value.ToString : Exit For Else 圖片用料號_tb.Text = "" End If Next End If End Sub Private Sub DataGridView2_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 End If End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 頁碼_cb.SelectedIndexChanged PA = 頁碼_cb.Text : NU1 = False : NU2 = True : Set_DGV1開始() : SQL__物料資料庫清單() : Set_DGV1結束() : PA = "" End Sub Private Sub TextBox9_DragEnter(sender As Object, e As DragEventArgs) Handles 檔案名稱_tb.DragEnter If e.Data.GetDataPresent(DataFormats.FileDrop) Then Dim files As String() Try files = CType(e.Data.GetData(DataFormats.FileDrop), String()) 檔案名稱_tb.Text = files(files.Length - 1) Catch ex As Exception MessageBox.Show(ex.Message) Return End Try End If Dim STR2 As Integer = 0 檔名讀取_tb.Text = 檔案名稱_tb.Text If 檔案名稱_tb.Text = "" Then Else For i As Integer = 0 To 9999 Dim STR1 As Integer = Strings.Len(檔名讀取_tb.Text) If Strings.Right((檔名讀取_tb.Text), 1) <> "\" Then STR1 -= 1 : STR2 += 1 If STR1 = 0 Then 檔名讀取_tb.Text = "" 檔案名稱_tb.Text = "" i = 9999 Else 檔名讀取_tb.Text = Strings.Left((檔名讀取_tb.Text), STR1) End If Else 檔名讀取_tb.Text = Strings.Right((檔案名稱_tb.Text), STR2) 檔案名稱_tb.Text = 檔名讀取_tb.Text i = 9999 End If Next End If End Sub Private Sub TextBox9_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles 檔案名稱_tb.DragDrop Dim files As Array = e.Data.GetData(DataFormats.FileDrop) For Each file As String In files 檔案名稱_tb.AppendText(file + Environment.NewLine) Next End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles 關鍵字查詢_bt.Click PA = InputBox("請輸入要查詢的關鍵字") : Set_物料清單() End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles 新增物料資料.Click 物料清單_dgv.Enabled = False 頁碼_tb.Text = "0" : 品名_tb.Text = "" : 尺寸_tb.Text = "" : 材質_tb.Text = "" : 圖片編碼_tb.Text = "" : 備註_tb.Text = "" 成本_nud.Value = 0 : 售價_nud.Value = 0 : 件數_nud.Value = 0 : 停用料號_ch.Checked = False : ComboBox1下拉表單資料載入() '----------------------自动生成流水号------------------------------------------------------------------------- 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 = "PR" & "0000000" & EDR ElseIf EDR > 9 And EDR < 100 Then : ESTR = "PR" & "000000" & EDR ElseIf EDR > 99 And EDR < 1000 Then : ESTR = "PR" & "00000" & EDR ElseIf EDR > 999 And EDR < 10000 Then : ESTR = "PR" & "0000" & EDR ElseIf EDR > 9999 And EDR < 100000 Then : ESTR = "PR" & "000" & EDR ElseIf EDR > 99999 And EDR < 100000 Then : ESTR = "PR" & "00" & EDR ElseIf EDR > 999999 And EDR < 1000000 Then : ESTR = "PR" & "0" & EDR ElseIf EDR > 9999999 Then : ESTR = "PR" & EDR : End If : 料號_tb.Text = ESTR MsgBox("請注意頁碼格式前三碼為數字後續再用符號-隔開,在頁碼前三碼大於999之後請通知系統開發商更新程4碼。") End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles 單筆存檔_bt.Click If 物料清單_dgv.Enabled = False Then If 頁碼_tb.Text = "0" Then : MsgBox("沒有輸入頁碼,請注意頁碼格式前三碼為數字後續再用符號-隔開,在頁碼前三碼大於999之後請通知系統開發商更新程4碼。") Else SQL_物料資料庫新增() : conn.Close() MsgBox("資料新增完畢 。") : Set_物料清單() : Set_未配置圖片的物料清單() : PA = "" : 物料清單_dgv.Enabled = True End If Else PA1 = 頁碼_tb.Text : PA2 = 品名_tb.Text : NU1 = 成本_nud.Value : NU2 = 售價_nud.Value : NU3 = 件數_nud.Value : PA3 = 尺寸_tb.Text : PA4 = 材質_tb.Text PA5 = 圖片編碼_tb.Text : PA6 = 備註_tb.Text : 布林1 = 停用料號_ch.Checked : PA7 = 料號_tb.Text : NU4 = 最低庫存量_nud.Value SQL_物料資料庫修改() : conn.Close() MsgBox("資料存檔完畢 。") : Set_物料清單() : PA = "" : 物料清單_dgv.Enabled = True End If End Sub Private Sub Button14_Click(sender As Object, e As EventArgs) Handles 讀取資料夾路徑_bt.Click If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then : 本機資料夾_wb.Navigate(FolderBrowserDialog1.SelectedPath) : End If End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles 下載圖檔_bt.Click If 圖片編碼_tb.Text = "" Then : MsgBox("所選擇的資料沒有圖片檔案,無法下載。") Else With SaveFileDialog1 : .Filter = "所有文件(*.jpg)|*.jpg" : End With SaveFileDialog1.FileName = 圖片編碼_tb.Text & "-" & Format(Today(), "yyyyMMdd") & ".jpg" SaveFileDialog1.ShowDialog() : 下載檔名_tb.Text = SaveFileDialog1.FileName ds2.Clear() : SQL_物料圖庫_圖片下載() : da.Fill(ds2) : conn.Close() If ds2.Tables(0).Rows.Count > 0 Then Dim imgData() As Byte imgData = ds2.Tables(0).Rows(0).Item("圖片") Dim fs As FileStream fs = File.Create(下載檔名_tb.Text, imgData.Length - 1) fs.Write(imgData, 0, imgData.Length - 1) fs.Close() End If : MsgBox("下載完成") End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 刪除圖檔_bt.Click Dim aa As MsgBoxResult = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel) If aa = MsgBoxResult.Ok Then PA = 圖片編碼_tb.Text SQL_物料圖庫_圖片刪除() : conn.Close() SQL_物料圖庫_圖片刪除後圖片編號取消() : conn.Close() MsgBox("刪除完成") : Set_物料清單() : Set_未配置圖片的物料清單() : PA = "" End If End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles 圖檔入系統_bt.Click If 圖片用料號_tb.Text = "" Then : MsgBox("請先選擇未指定圖片的物料料號") Else SQL_物料圖庫_圖片新增時圖片編號註冊() : conn.Close() : SQL_物料圖庫_圖片新增() : conn.Close() '---FTP方式刪除檔案---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Dim frq As FtpWebRequest, frp As FtpWebResponse, fcr As NetworkCredential frq = CType(WebRequest.Create(New Uri(Target1 & 檔案名稱_tb.Text)), FtpWebRequest) fcr = New NetworkCredential(FTP帳號, FTP密碼) frq.Credentials = fcr frq.Method = WebRequestMethods.Ftp.DeleteFile frq.UseBinary = True frp = CType(frq.GetResponse, FtpWebResponse) frp.Close() FTP資料夾_wb.Refresh() '---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 物料圖_pb.Image = Nothing : PA = 圖片用料號_tb.Text : SQL_物料圖庫_圖片顯示() While dr.Read() = True Dim unused As Byte() = New Byte(-1) {} Dim bytes As Byte() = DirectCast(dr.Item("圖片"), Byte()) Dim oStream As New MemoryStream(bytes) 物料圖_pb.Image = Bitmap.FromStream(oStream) End While conn.Close() 物料圖_pb.SizeMode = 4 '---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 檔案名稱_tb.Text = "" : 圖片用料號_tb.Text = "" : PA = "" : Set_物料清單() : Set_未配置圖片的物料清單() End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 修改圖片_bt.Click If 圖片編碼_tb.Text = "" Then : MsgBox("請先選擇要修改圖片的物料料號") Else SQL_物料圖庫_圖片修改() '---FTP方式刪除檔案---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Dim frq As FtpWebRequest, frp As FtpWebResponse, fcr As NetworkCredential frq = CType(WebRequest.Create(New Uri(Target1 & 檔案名稱_tb.Text)), FtpWebRequest) fcr = New NetworkCredential(FTP帳號, FTP密碼) frq.Credentials = fcr frq.Method = WebRequestMethods.Ftp.DeleteFile frq.UseBinary = True frp = CType(frq.GetResponse, FtpWebResponse) frp.Close() FTP資料夾_wb.Refresh() '---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 檔案名稱_tb.Text = "" : MsgBox("修改完成") : Set_物料清單() : 圖片導入() End If End Sub Private Sub 格式1() 批量修改_ch.Checked = False : 批量存檔_bt.Enabled = False 物料清單_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(9).ReadOnly = True : 物料清單_dgv.Columns(10).ReadOnly = True End Sub Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles 批量修改_ch.Click If 批量修改_ch.Checked = False Then 格式1() Else 批量修改_ch.Checked = True : 批量存檔_bt.Enabled = True 物料清單_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(9).ReadOnly = False : 物料清單_dgv.Columns(10).ReadOnly = False MsgBox("請注意成本,售價,件數,三格欄位內的資料必須是阿拉伯數字,不然存檔時會出錯喔。") End If 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 : NU1 = 物料清單_dgv.Rows(i).Cells("成本").Value NU2 = 物料清單_dgv.Rows(i).Cells("售價").Value : NU3 = 物料清單_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 布林1 = 物料清單_dgv.Rows(i).Cells("停用").Value : PA7 = 物料清單_dgv.Rows(i).Cells("料號").Value : NU4 = 物料清單_dgv.Rows(i).Cells("最低庫存量").Value SQL_物料資料庫修改() : conn.Close() Next : MAOJI_ERP_SYS.ToolStripProgressBar1.Value = 0 : 最終數 = 0 End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles 批量存檔_bt.Click 存檔1() : MsgBox("修改完成") : 格式1() End Sub '-----------------------------滑鼠右鍵------------------------------------------------------------------------------------------------------------------------------------------ Private Sub 重新整理ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 重新整理ToolStripMenuItem.Click Set_物料清單() : 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.新增物料資料.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 Me.刪除圖檔_bt.PerformClick() End Sub Private Sub 刪除物料ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 資料刪除ToolStripMenuItem.Click Dim aa As MsgBoxResult aa = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel) If aa = MsgBoxResult.Ok Then PA = 料號_tb.Text SQL_物料圖庫_圖片刪除() : conn.Close() : SQL_物料資料庫刪除() : conn.Close() MsgBox("刪除完成") : Set_物料清單() : Set_未配置圖片的物料清單() : PA = "" End If End Sub End Class