Option Strict Off Imports System.Data.SqlClient Public Class 進貨管理 Dim conn1 As New SqlConnection Dim cmd1 As New SqlCommand Dim dr1 As SqlDataReader Dim da As New SqlDataAdapter Dim ds As New DataSet : Dim ds1 As New DataSet Private Sub DGV1讀取前設定() DataGridView1.DataSource = Nothing : ds.Clear() DataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing DataGridView1.ColumnHeadersHeight = 25 DataGridView1.AllowUserToAddRows = False If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If End Sub Private Sub DGV1讀取後設定() cmd1.Connection = conn1 : cmd1.CommandText = SQL1 : da.SelectCommand = cmd1 : da.Fill(ds) : DataGridView1.DataSource = ds.Tables(0) : conn1.Close() End Sub Private Sub DGV2讀取前設定() DataGridView2.DataSource = Nothing : ds1.Clear() DataGridView2.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing DataGridView2.ColumnHeadersHeight = 25 DataGridView2.AllowUserToAddRows = False If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If End Sub Private Sub DGV2讀取後設定() cmd1.Connection = conn1 : cmd1.CommandText = SQL1 : da.SelectCommand = cmd1 : da.Fill(ds1) : DataGridView2.DataSource = ds1.Tables(0) : conn1.Close() End Sub Private Sub 讀取成本資料表() DGV1讀取前設定() If PA = "" Then If ComboBox3.Text = "" Or ComboBox3.Text = "-請選擇-" Then SQL1 = "SELECT 零件成本紀錄表.流水碼, 零件成本紀錄表.品牌, 零件成本紀錄表.供應商, 零件成本紀錄表.科目, 零件成本紀錄表.品名, 零件成本紀錄表.型號及備註, " & "零件成本紀錄表.進貨單價, 零件成本紀錄表.幣別, 零件成本紀錄表.安全庫存 FROM 零件成本紀錄表 INNER JOIN 零件進銷存報表 ON 零件成本紀錄表.流水碼 = " & "零件進銷存報表.零件編號 GROUP BY 零件成本紀錄表.流水碼, 零件成本紀錄表.品牌, 零件成本紀錄表.供應商, 零件成本紀錄表.科目, 零件成本紀錄表.品名, " & "零件成本紀錄表.型號及備註, 零件成本紀錄表.進貨單價, 零件成本紀錄表.幣別, 零件成本紀錄表.安全庫存 ORDER BY 零件成本紀錄表.科目" Else SQL1 = "SELECT 流水碼, 品牌, 供應商, 科目, 品名, 型號及備註, 進貨單價, 幣別, 安全庫存 FROM 零件成本紀錄表 WHERE (科目 ='" & ComboBox3.Text & "') ORDER BY 科目" End If Else SQL1 = "SELECT 流水碼, 品牌, 供應商, 科目, 品名, 型號及備註, 進貨單價, 幣別, 安全庫存 FROM 零件成本紀錄表 WHERE (流水碼 LIKE '%" & PA & "%') OR (品牌 LIKE '%" & PA & "%') OR (供應商 LIKE '%" & PA & "%') OR (科目 LIKE '%" & PA & "%') OR (品名 LIKE '%" & PA & "%') OR (型號及備註 LIKE '%" & PA & "%') OR (進貨單價 LIKE '%" & PA & "%') OR (幣別 LIKE '%" & PA & "%') ORDER BY 科目" End If DGV1讀取後設定() End Sub Private Sub 讀取進貨資料表() If TextBox1.Text = "" Then DGV2讀取前設定() SQL1 = "SELECT 零件進銷存報表.流水號, 零件進銷存報表.零件編號, 零件進銷存報表.進貨日期, 零件成本紀錄表.品名, 零件成本紀錄表.型號及備註, " & "零件進銷存報表.進貨數量,零件進銷存報表.進貨成本, 零件進銷存報表.台幣進貨成本, 零件進銷存報表.匯率 FROM 零件進銷存報表 INNER JOIN 零件成本紀錄表 ON " & "零件進銷存報表.零件編號 = 零件成本紀錄表.流水碼 WHERE 零件進銷存報表.進貨確認 = '0' ORDER BY 零件進銷存報表.流水號 DESC" DGV2讀取後設定() Else DGV2讀取前設定() SQL1 = "SELECT 零件進銷存報表.流水號, 零件進銷存報表.零件編號, 零件進銷存報表.進貨日期, 零件成本紀錄表.品名, 零件成本紀錄表.型號及備註, " & "零件進銷存報表.進貨數量,零件進銷存報表.進貨成本, 零件進銷存報表.台幣進貨成本, 零件進銷存報表.匯率 FROM 零件進銷存報表 INNER JOIN 零件成本紀錄表 ON " & "零件進銷存報表.零件編號 = 零件成本紀錄表.流水碼 WHERE 零件進銷存報表.零件編號 LIKE '" & TextBox1.Text & "' AND 零件進銷存報表.進貨確認 = '0' " & "ORDER BY 零件進銷存報表.流水號 DESC" DGV2讀取後設定() If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If SQL1 = "SELECT 零件進銷存報表.流水號, 零件進銷存報表.零件編號, 零件進銷存報表.進貨日期, 零件成本紀錄表.品名, 零件成本紀錄表.型號及備註, " & "零件進銷存報表.進貨數量,零件進銷存報表.進貨成本, 零件進銷存報表.台幣進貨成本, 零件進銷存報表.匯率 FROM 零件進銷存報表 INNER JOIN 零件成本紀錄表 ON " & "零件進銷存報表.零件編號 = 零件成本紀錄表.流水碼 WHERE 零件進銷存報表.零件編號 NOT LIKE '" & TextBox1.Text & "' AND 零件進銷存報表.進貨確認 = '0' " & "ORDER BY 零件進銷存報表.流水號 DESC" DGV2讀取後設定() End If Set_自動彙總1() End Sub Private Sub 下拉表單資料載入() If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If SQL1 = "SELECT 品牌 FROM 品牌資料" cmd1.CommandText = SQL1 : cmd1.Connection = conn1 : dr1 = cmd1.ExecuteReader ComboBox1.Items.Clear() While (dr1.Read()) ComboBox1.Items.Add(dr1("品牌")) End While conn1.Close() If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If SQL1 = "SELECT 供應商 FROM 供應商資料表" cmd1.CommandText = SQL1 : cmd1.Connection = conn1 : dr1 = cmd1.ExecuteReader ComboBox2.Items.Clear() While (dr1.Read()) ComboBox2.Items.Add(dr1("供應商")) End While conn1.Close() End Sub Private Sub 格式設定() PA = "" End Sub Private Sub Set_grid1() DataGridView1.Columns(0).Width = 100 : DataGridView1.Columns(1).Width = 80 : DataGridView1.Columns(2).Width = 70 DataGridView1.Columns(3).Width = 100 : DataGridView1.Columns(4).Width = 300 : DataGridView1.Columns(5).Width = 300 DataGridView1.Columns(6).Width = 100 : DataGridView1.Columns(7).Width = 80 : DataGridView1.Columns(8).Visible = False End Sub Private Sub Set_grid2() DataGridView2.Columns(0).Width = 100 : DataGridView2.Columns(1).Width = 80 : DataGridView2.Columns(2).Width = 90 : DataGridView2.Columns(3).Width = 230 DataGridView2.Columns(4).Width = 230 : DataGridView2.Columns(5).Width = 90 : DataGridView2.Columns(6).Width = 80 : DataGridView2.Columns(7).Width = 110 DataGridView2.Columns(8).Width = 80 DataGridView2.Columns(5).DefaultCellStyle.Format = "#,##0" : DataGridView2.Columns(6).DefaultCellStyle.Format = "#,##0.00" DataGridView2.Columns(7).DefaultCellStyle.Format = "#,##0.00" End Sub Private Sub Set_時間() TextBox14.Text = Format(DateTimePicker1.Value, "yyyy") : TextBox15.Text = Format(DateTimePicker1.Value, "MM") End Sub Private Sub Set_匯率() Set_時間() If TextBox15.Text = Month(Now) Then If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If SQL1 = "SELECT 匯率 FROM 匯率表 WHERE (對應 = '人民幣兌台幣')" cmd1.Connection = conn1 : cmd1.CommandText = SQL1 : dr1 = cmd1.ExecuteReader If dr1.Read() Then : TextBox9.Text = dr1("匯率").ToString : End If ER = Double.Parse(dr1("匯率").ToString) conn1.Close() : dr1.Close() Else If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If SQL1 = "SELECT 中心匯率 FROM 歷史匯率表 WHERE (年 LIKE '" & TextBox14.Text & "%') AND (月 LIKE '" & TextBox15.Text & "%')" cmd1.Connection = conn1 : cmd1.CommandText = SQL1 : dr1 = cmd1.ExecuteReader If dr1.Read() Then : TextBox9.Text = dr1("中心匯率").ToString : End If ER = Double.Parse(dr1("中心匯率").ToString) conn1.Close() : dr1.Close() End If End Sub Private Sub Set_自動彙總1() Dim 數量加總 As Double = 0 : Dim 金額加總1 As Double = 0 : Dim 金額加總2 As Double = 0 For i As Integer = 0 To DataGridView2.Rows.Count - 1 If DataGridView2.RowCount = 0 Then : TextBox13.Text = "0" : Else : 數量加總 += DataGridView2.Rows(i).Cells("進貨數量").Value : End If Next i For i As Integer = 0 To DataGridView2.Rows.Count - 1 If DataGridView2.RowCount = 0 Then : TextBox16.Text = "0" : Else : 金額加總1 += DataGridView2.Rows(i).Cells("進貨成本").Value : End If Next i For i As Integer = 0 To DataGridView2.Rows.Count - 1 If DataGridView2.RowCount = 0 Then : TextBox17.Text = "0" : Else : 金額加總2 += DataGridView2.Rows(i).Cells("台幣進貨成本").Value : End If Next i TextBox13.Text = Format(Val(數量加總), "#,##0") TextBox16.Text = Format(Val(金額加總1), "#,##0.00") TextBox17.Text = Format(Val(金額加總2), "#,##0.00") End Sub Private Sub 進貨管理_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.MdiParent = GCM_ERP_SYS Me.WindowState = 2 下拉表單資料載入() : 讀取成本資料表() : Set_grid1() : 讀取進貨資料表() : Set_grid2() Set_匯率() End Sub Private Sub 登入閒置控制_MouseMove(sender As Object, e As EventArgs) Handles MyBase.MouseMove timeNow = 0 GCM_ERP_SYS.Timer1.Enabled = False GCM_ERP_SYS.Timer1.Enabled = True End Sub Private Sub 登入閒置控制_KeyPress(sender As Object, e As EventArgs) Handles MyBase.KeyPress timeNow = 0 GCM_ERP_SYS.Timer1.Enabled = False GCM_ERP_SYS.Timer1.Enabled = True End Sub Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellClick If e.RowIndex = -1 Then : Else TextBox1.Text = DataGridView1(0, e.RowIndex).Value.ToString : ComboBox1.Text = DataGridView1(1, e.RowIndex).Value.ToString ComboBox2.Text = DataGridView1(2, e.RowIndex).Value.ToString : ComboBox3.Text = DataGridView1(3, e.RowIndex).Value.ToString TextBox2.Text = DataGridView1(4, e.RowIndex).Value.ToString : TextBox3.Text = DataGridView1(5, e.RowIndex).Value.ToString ComboBox4.Text = DataGridView1(7, e.RowIndex).Value.ToString : TextBox8.Text = DataGridView1(8, e.RowIndex).Value.ToString TEXT1 = DataGridView1(6, e.RowIndex).Value.ToString : TextBox4.Text = Format(Val(TEXT1), "#,##0.0") If ComboBox4.Text = "RMB" Then TextBox10.Text = Format(Val(CStr(Math.Round((Double.Parse(TEXT1) * ER), 2))), "#,##0.0") Else TextBox10.Text = Format(Val(TEXT1), "#,##0.0") End If End If End Sub Private Sub DataGridView2_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView2.CellClick If e.RowIndex = -1 Then : Else DateTimePicker1.Text = DataGridView2(2, e.RowIndex).Value.ToString TextBox6.Text = Format(Val(DataGridView2(5, e.RowIndex).Value.ToString), "#,##0") TextBox5.Text = Format(Val(DataGridView2(6, e.RowIndex).Value.ToString), "#,##0.00") TextBox7.Text = Format(Val(DataGridView2(7, e.RowIndex).Value.ToString), "#,##0.00") TextBox12.Text = DataGridView2(0, e.RowIndex).Value.ToString End If End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 品牌清單.Show() End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click 供應商資料.Show() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 下拉表單資料載入() End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 零件成本建檔.Show() End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click PA = InputBox("請輸入要查詢零件的資料") Set_匯率() : 讀取成本資料表() : Set_grid1() PA = "" End Sub Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.TextChanged Set_匯率() End Sub Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged 讀取進貨資料表() : Set_grid2() End Sub Private Sub TextBox4_TextChanged(sender As Object, e As EventArgs) Handles TextBox4.TextChanged If IsNumeric(TextBox4.Text) = True And TextBox6.Text <> "" Then TextBox5.Text = Format(Val(CStr(Math.Round((Double.Parse(TextBox6.Text) * Double.Parse(TextBox4.Text)), 2))), "#,##0.00") TextBox10.Text = Format(Val(CStr(Math.Round((Double.Parse(TextBox4.Text) * ER), 2))), "#,##0.00") TextBox7.Text = Format(Val(CStr(Math.Round((Double.Parse(TextBox5.Text) * ER), 2))), "#,##0.00") Else TextBox10.Text = "0.00" End If End Sub Private Sub TextBox9_TextChanged(sender As Object, e As EventArgs) Handles TextBox9.TextChanged If IsNumeric(TextBox4.Text) = True Then TextBox10.Text = Format(Val(CStr(Math.Round((Double.Parse(TextBox4.Text) * ER), 2))), "#,##0.00") Else TextBox10.Text = "0.00" End If If IsNumeric(TextBox6.Text) = True Then TextBox7.Text = Format(Val(CStr(Math.Round((Double.Parse(TextBox5.Text) * ER), 2))), "#,##0.00") Else TextBox7.Text = "0.00" End If End Sub Private Sub TextBox6_TextChanged(sender As Object, e As EventArgs) Handles TextBox6.TextChanged If IsNumeric(TextBox6.Text) = True And IsNumeric(TextBox4.Text) = True Then TextBox5.Text = Format(Val(CStr(Math.Round((Double.Parse(TextBox6.Text) * Double.Parse(TextBox4.Text)), 2))), "#,##0.00") TextBox7.Text = Format(Val(CStr(Math.Round((Double.Parse(TextBox5.Text) * ER), 2))), "#,##0.00") Else TextBox5.Text = "0.00" : TextBox7.Text = "0.00" End If End Sub Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click If IsNumeric(TextBox8.Text) = True Then If InStr(TextBox8.Text, ",") = False Then If conn1.State = ConnectionState.Closed Then : conn1.Open() : End If SQL1 = "UPDATE 零件成本紀錄表 SET 安全庫存 = '" & TextBox8.Text & "' WHERE (流水碼 = '" & TextBox1.Text & "')" cmd1.CommandText = SQL1 : cmd1.ExecuteNonQuery() MsgBox("修改完成") conn1.Close() Else MsgBox("進貨成本資料非數字") End If Else MsgBox("進貨成本資料非數字") End If 讀取成本資料表() : Set_grid1() End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click If TextBox1.Text = "" Or TextBox6.Text = "" Or IsNumeric(TextBox6.Text) = False Then MsgBox("資料有誤") Else Dim NUM1 As Integer For NUM1 = 0 To 99999999 If NUM1 < 10 Then TextBox11.Text = "MID" & "0000000" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then TextBox11.Text = "MID" & "000000" & NUM1 ElseIf NUM1 > 99 And NUM1 < 1000 Then TextBox11.Text = "MID" & "00000" & NUM1 ElseIf NUM1 > 999 And NUM1 < 10000 Then TextBox11.Text = "MID" & "0000" & NUM1 ElseIf NUM1 > 9999 And NUM1 < 100000 Then TextBox11.Text = "MID" & "000" & NUM1 ElseIf NUM1 > 99999 And NUM1 < 1000000 Then TextBox11.Text = "MID" & "00" & NUM1 ElseIf NUM1 > 999999 And NUM1 < 10000000 Then TextBox11.Text = "MID" & "0" & NUM1 ElseIf NUM1 > 9999999 Then TextBox11.Text = "MID" & NUM1 End If If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If SQL1 = "SELECT 流水號 FROM 零件進銷存報表 WHERE (流水號 ='" & TextBox11.Text & "')" cmd1.Connection = conn1 : cmd1.CommandText = SQL1 : dr1 = cmd1.ExecuteReader If dr1.Read() Then : TextBox12.Text = dr1("流水號").ToString : Else : TextBox12.Text = "" : End If conn1.Close() If TextBox12.Text = "" Then TextBox12.Text = TextBox11.Text : TextBox11.Text = "可用" NUM1 = 99999999 End If Next If TextBox11.Text = "可用" Then If conn1.State = ConnectionState.Closed Then : conn1.ConnectionString = ConString : conn1.Open() : End If SQL1 = "INSERT INTO 零件進銷存報表 (流水號, 零件編號, 進貨日期, 進貨數量, 進貨成本, 台幣進貨成本, 出貨日期, 出貨數量, 出貨金額, 台幣出貨成本, 匯率, 進貨確認, 出貨確認) " & "VALUES ('" & TextBox12.Text & "','" & TextBox1.Text & "','" & Format(DateTimePicker1.Value, "yyyy/MM/dd") & "','" & TextBox6.Text & "','" & TextBox5.Text & "','" & TextBox7.Text & "','','','','','" & TextBox9.Text & "', '0', '1')" cmd1.Connection = conn1 : cmd1.CommandText = SQL1 : cmd1.ExecuteNonQuery() MsgBox("新增完成") conn1.Close() End If 讀取進貨資料表() : Set_grid2() End If End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click If TextBox12.Text = "" Or IsNumeric(TextBox6.Text) = True Then If conn1.State = ConnectionState.Closed Then : conn1.Open() : End If SQL1 = "UPDATE 零件進銷存報表 SET 進貨日期 = '" & Format(DateTimePicker1.Value, "yyyy/MM/dd") & "', 進貨數量 = '" & TextBox6.Text & "', 進貨成本 = '" & TextBox5.Text & "', 台幣進貨成本 = '" & TextBox7.Text & "', 匯率 = '" & TextBox9.Text & "' WHERE (流水號 = '" & TextBox12.Text & "')" cmd1.CommandText = SQL1 : cmd1.ExecuteNonQuery() MsgBox("修改完成") conn1.Close() Else MsgBox("請選擇正確資料") End If 讀取進貨資料表() : Set_grid2() End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click SQL1 = "DELETE FROM 零件進銷存報表 WHERE (流水號 = '" & TextBox12.Text & "')" cmd1.CommandText = SQL1 : cmd1.Connection = conn1 If conn1.State = ConnectionState.Closed Then : conn1.Open() : End If Dim aa As MsgBoxResult aa = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel) If aa = MsgBoxResult.Ok Then : cmd1.ExecuteNonQuery() : MsgBox("刪除完成") : End If conn1.Close() 讀取進貨資料表() : Set_grid2() End Sub Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click Dim NUM2 As Integer For NUM2 = 0 To DataGridView2.Rows.Count - 1 If conn1.State = ConnectionState.Closed Then : conn1.Open() : End If SQL1 = "UPDATE 零件進銷存報表 SET 進貨確認 = '1' WHERE (流水號 = '" & DataGridView2.Item(0, NUM2).Value & "')" cmd1.CommandText = SQL1 : cmd1.ExecuteNonQuery() conn1.Close() Next 讀取進貨資料表() : Set_grid2() : MsgBox("修改完成") End Sub End Class