Option Strict Off Imports Microsoft.Office.Interop.Excel.XlUnderlineStyle Imports Microsoft.Office.Interop.Excel.Constants Imports Microsoft.Office.Interop.Excel.XlBordersIndex Imports Microsoft.Office.Interop.Excel.XlLineStyle Imports Microsoft.Office.Interop.Excel.XlBorderWeight Imports Microsoft.Office.Interop.Excel.XlThemeFont Imports Microsoft.Office.Interop.Excel.XlThemeColor Imports Microsoft.Office.Interop.Excel.XlWindowState Imports Microsoft.Office.Interop.Excel Imports System.IO Imports System.Reflection Imports Microsoft.Office.Interop Public Class 估價單 ReadOnly ds As New DataSet : ReadOnly ds1 As New DataSet : ReadOnly ds2 As New DataSet : Dim boo As Boolean : Dim 新項次 As String : Dim 新流水 As String : Dim 新流水1 As String Dim NUM1, NUM2 As Integer Dim xlApp As New Microsoft.Office.Interop.Excel.Application Dim xlBook As Microsoft.Office.Interop.Excel.Workbook Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet Dim 位置1 As String Dim N2 As Integer : Dim N3 As Integer Dim index As Integer Private Sub 估價單_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.MdiParent = ICS_ASMS_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True 報價日期_dtp.CustomFormat = "yyyy/MM/dd" 報價日期_dtp.Format = DateTimePickerFormat.Custom 確認新增_bt.Enabled = False : 修改_bt.Enabled = False : boo = False 選擇供應商_cb.Items.Add("") SQL_物料資料庫_供應商_下拉清單() While (dr.Read()) : 選擇供應商_cb.Items.Add(dr("公司名")) : End While : conn.Close() SQL_讀取公司名稱() If dr.Read() Then 公司_tb.Text = dr("公司名稱") End If Set_清單1() : Set_清單3() End Sub Private Sub 類別清單_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 選擇供應商_cb.SelectedIndexChanged Set_清單3() : 料號_tb.Text = "" : 品名_tb.Text = "" : 成本_tb.Text = "" : 狀態_tb.Text = "" End Sub Private Sub Set_清單1() 控制表_dgv.DataSource = Nothing : ds.Clear() 控制表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 控制表_dgv.ColumnHeadersHeight = 25 控制表_dgv.AllowUserToAddRows = False 控制表_dgv.RowTemplate.Height = 30 If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If SQL_估價單_控制表清單() da.Fill(ds) : 控制表_dgv.DataSource = ds.Tables(0) : conn.Close() 控制表_dgv.Columns(1).FillWeight = 50 : 控制表_dgv.Columns(3).FillWeight = 50 控制表_dgv.Columns(0).Visible = False : 控制表_dgv.Columns(2).Visible = False 控制表_dgv.Columns(4).Visible = False : 控制表_dgv.Columns(5).Visible = False : 控制表_dgv.Columns(6).Visible = False End Sub Private Sub 控制表_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 控制表_dgv.CellClick If boo = False Then If e.RowIndex = -1 Then : Else 確認新增_bt.Enabled = False : 修改_bt.Enabled = True 單號_tb.Text = 控制表_dgv(0, e.RowIndex).Value.ToString : 車主名稱_tb.Text = 控制表_dgv(1, e.RowIndex).Value.ToString 電話_tb.Text = 控制表_dgv(2, e.RowIndex).Value.ToString : 車號_tb.Text = 控制表_dgv(3, e.RowIndex).Value.ToString 報價日期_dtp.Text = 控制表_dgv(4, e.RowIndex).Value.ToString : 備註_tb.Text = 控制表_dgv(5, e.RowIndex).Value.ToString 里程_tb.Text = 控制表_dgv(6, e.RowIndex).Value.ToString Set_清單2() End If End If End Sub Private Sub Set_清單2() 明細表_dgv.DataSource = Nothing : ds1.Clear() 明細表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 明細表_dgv.ColumnHeadersHeight = 25 明細表_dgv.AllowUserToAddRows = False 明細表_dgv.RowTemplate.Height = 35 明細表_dgv.EditMode = DataGridViewEditMode.EditOnEnter SQL_估價單_查詢明細表() : da.Fill(ds1) : 明細表_dgv.DataSource = ds1.Tables(0) : conn.Close() Dim newFont As New System.Drawing.Font("微軟正黑體", 9) 明細表_dgv.Columns("總售價").ReadOnly = True : 明細表_dgv.Columns("項次").ReadOnly = True : 明細表_dgv.Columns("總成本").ReadOnly = True 明細表_dgv.Columns("利潤").ReadOnly = True 明細表_dgv.Columns(0).Visible = False : 明細表_dgv.Columns(1).FillWeight = 60 : 明細表_dgv.Columns(2).FillWeight = 400 : 明細表_dgv.Columns(3).FillWeight = 60 明細表_dgv.Columns(5).FillWeight = 100 : 明細表_dgv.Columns(7).Visible = 100 明細表_dgv.Columns(9).Visible = 300 : 明細表_dgv.Columns(10).Visible = False : 明細表_dgv.Columns(11).Visible = False : 明細表_dgv.Columns(12).Visible = False 明細表_dgv.RowsDefaultCellStyle.Font = newFont If 隱藏成本_cb.Checked = False Then 明細表_dgv.Columns(4).Visible = False 明細表_dgv.Columns(6).Visible = False 明細表_dgv.Columns(8).Visible = False Else 明細表_dgv.Columns(4).FillWeight = 100 : 明細表_dgv.Columns(6).FillWeight = 100 : 明細表_dgv.Columns(8).Visible = 100 明細表_dgv.Columns(6).DefaultCellStyle.Format = "#,##0.##" 明細表_dgv.Columns(4).DefaultCellStyle.Format = "#,##0.##" 明細表_dgv.Columns(8).DefaultCellStyle.Format = "#,##0.##" 明細表_dgv.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 明細表_dgv.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細表_dgv.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 明細表_dgv.Columns(6).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細表_dgv.Columns(8).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 明細表_dgv.Columns(8).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight End If 明細表_dgv.Columns(5).DefaultCellStyle.Format = "#,##0.##" : 明細表_dgv.Columns(7).DefaultCellStyle.Format = "#,##0.##" 明細表_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 明細表_dgv.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 明細表_dgv.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 明細表_dgv.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 明細表_dgv.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 明細表_dgv.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細表_dgv.Columns(7).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 明細表_dgv.Columns(7).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight Dim NUM1 As Integer = 0 Dim NUM2 As Integer = 0 For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 明細表_dgv.Rows(i).Cells("總售價").Value = 明細表_dgv.Rows(i).Cells("數量").Value * 明細表_dgv.Rows(i).Cells("售價").Value 明細表_dgv.Rows(i).Cells("總成本").Value = 明細表_dgv.Rows(i).Cells("數量").Value * 明細表_dgv.Rows(i).Cells("成本").Value 明細表_dgv.Rows(i).Cells("利潤").Value = (明細表_dgv.Rows(i).Cells("數量").Value * 明細表_dgv.Rows(i).Cells("售價").Value) - (明細表_dgv.Rows(i).Cells("數量").Value * 明細表_dgv.Rows(i).Cells("成本").Value) If 明細表_dgv.Rows(i).Cells("狀態").Value <> "承修項目" Then NUM1 += 明細表_dgv.Rows(i).Cells("總售價").Value Else NUM2 += 明細表_dgv.Rows(i).Cells("總售價").Value End If Next 零件_tb.Text = Strings.Format(Val(NUM1), "#,##0") 工資_tb.Text = Strings.Format(Val(NUM2), "#,##0") 總計_tb.Text = Strings.Format(Val(NUM1 + NUM2), "#,##0") If 是否收稅_cb.Checked = True Then 稅金_tb.Text = Strings.Format(Val((NUM1 + NUM2) * 0.05), "#,##0") 應收合計_tb.Text = Strings.Format(Val(NUM1 + NUM2 + ((NUM1 + NUM2) * 0.05)), "#,##0") 總計_tb.Text = Strings.Format(Val(NUM1 + NUM2 + ((NUM1 + NUM2) * 0.05)), "#,##0") Else 稅金_tb.Text = "0" 應收合計_tb.Text = Strings.Format(Val(NUM1 + NUM2), "#,##0") End If End Sub Private Sub 是否收稅_cb_CheckedChanged(sender As Object, e As EventArgs) Handles 是否收稅_cb.CheckedChanged Dim NUM1, NUM2 As Integer If 總計_tb.Text <> "" Then NUM1 = 總計_tb.Text NUM2 = NUM1 * 0.05 If 是否收稅_cb.Checked = True Then 稅金_tb.Text = Strings.Format(Val(NUM2), "#,##0") 應收合計_tb.Text = Strings.Format(Val(NUM1 + NUM2), "#,##0") 總計_tb.Text = Strings.Format(Val(NUM1 + NUM2), "#,##0") Else 稅金_tb.Text = "0" 應收合計_tb.Text = Strings.Format(Val(NUM1), "#,##0") End If End If End Sub Private Sub 明細表_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 明細表_dgv.CellEnter Dim NUM1 As Integer = 0 Dim NUM2 As Integer = 0 index = e.RowIndex If e.RowIndex = -1 Then : Else 項次_tb.Text = 明細表_dgv(1, e.RowIndex).Value.ToString For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 If 明細表_dgv.Rows(i).Cells("數量").Value.ToString <> "" And 明細表_dgv.Rows(i).Cells("售價").Value.ToString <> "" And 明細表_dgv.Rows(i).Cells("成本").Value.ToString <> "" Then 明細表_dgv.Rows(i).Cells("總售價").Value = 明細表_dgv.Rows(i).Cells("數量").Value * 明細表_dgv.Rows(i).Cells("售價").Value 明細表_dgv.Rows(i).Cells("總成本").Value = 明細表_dgv.Rows(i).Cells("數量").Value * 明細表_dgv.Rows(i).Cells("成本").Value 明細表_dgv.Rows(i).Cells("利潤").Value = (明細表_dgv.Rows(i).Cells("數量").Value * 明細表_dgv.Rows(i).Cells("售價").Value) - (明細表_dgv.Rows(i).Cells("數量").Value * 明細表_dgv.Rows(i).Cells("成本").Value) End If If 明細表_dgv.Rows(i).Cells("狀態").Value <> "承修項目" Then NUM1 += 明細表_dgv.Rows(i).Cells("總售價").Value Else NUM2 += 明細表_dgv.Rows(i).Cells("總售價").Value End If Next 零件_tb.Text = Strings.Format(Val(NUM1), "#,##0") 工資_tb.Text = Strings.Format(Val(NUM2), "#,##0") 總計_tb.Text = Strings.Format(Val(NUM1 + NUM2), "#,##0") If 是否收稅_cb.Checked = True Then 稅金_tb.Text = Strings.Format(Val((NUM1 + NUM2) * 0.05), "#,##0") 應收合計_tb.Text = Strings.Format(Val(NUM1 + NUM2 + ((NUM1 + NUM2) * 0.05)), "#,##0") 總計_tb.Text = Strings.Format(Val(NUM1 + NUM2 + ((NUM1 + NUM2) * 0.05)), "#,##0") Else 稅金_tb.Text = "0" 應收合計_tb.Text = Strings.Format(Val(NUM1 + NUM2), "#,##0") End If End If End Sub Private Sub Set_清單3() 物料_dgv.DataSource = Nothing : ds2.Clear() 物料_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 物料_dgv.ColumnHeadersHeight = 25 物料_dgv.AllowUserToAddRows = False 物料_dgv.RowTemplate.Height = 30 物料_dgv.DefaultCellStyle.Font = SystemFonts.DefaultFont If conn.State = ConnectionState.Closed Then : conn.ConnectionString = ConString : conn.Open() : End If SQL_車輛銷售管理_物料清單(選擇供應商_cb.Text) da.Fill(ds2) : 物料_dgv.DataSource = ds2.Tables(0) : conn.Close() Dim newFont As New System.Drawing.Font("微軟正黑體", 9) ' 創建一個新字體,Arial 12pt 物料_dgv.RowsDefaultCellStyle.Font = newFont 物料_dgv.Columns(1).FillWeight = 55 : 物料_dgv.Columns(3).FillWeight = 30 物料_dgv.Columns(0).Visible = False : 物料_dgv.Columns(2).FillWeight = 15 : 物料_dgv.Columns(4).Visible = False If 顯示成本_cb.Checked = True Then 物料_dgv.Columns(5).FillWeight = 30 物料_dgv.Columns(5).DefaultCellStyle.Format = "#,##0.##" 物料_dgv.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter 物料_dgv.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter Else 物料_dgv.Columns(5).Visible = False End If End Sub Private Sub 物料_dgv_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(0, e.RowIndex).Value.ToString 品名_tb.Text = 物料_dgv(1, e.RowIndex).Value.ToString 成本_tb.Text = 物料_dgv(5, e.RowIndex).Value.ToString 狀態_tb.Text = 物料_dgv(4, e.RowIndex).Value.ToString End If End Sub Private Sub 新增_bt_Click(sender As Object, e As EventArgs) Handles 新增_bt.Click 新增_bt.Enabled = False : 確認新增_bt.Enabled = True : 修改_bt.Enabled = False Set_日期格式轉換() : Dim NUM1 As Integer For i As Integer = 1 To 999 NUM1 = 0 + i If NUM1 < 10 Then : 單號_tb.Text = "GD-" & DTP1 & "-00" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 單號_tb.Text = "GD-" & DTP1 & "-0" & NUM1 ElseIf NUM1 > 99 Then : 單號_tb.Text = "GD-" & DTP1 & "-" & NUM1 : End If PA = 單號_tb.Text : SQL_估價單_單號查詢() If dr.Read() Then : Else : i = 999 : conn.Close() : End If : conn.Close() Next 報價日期_dtp.Value = Date.Today 車主名稱_tb.Text = "" : 車號_tb.Text = "" : 電話_tb.Text = "" : 備註_tb.Text = "" : 項次_tb.Text = "" : 里程_tb.Text = "" 工資_tb.Text = "0" : 零件_tb.Text = "0" : 總計_tb.Text = "0" : 稅金_tb.Text = "0" : 應收合計_tb.Text = "0" SQL_估價單_控制表新增() : boo = True : Set_清單2() End Sub Private Sub Set_日期格式轉換() Dim selectedDate As DateTime = Date.Today DTP4 = Strings.Format(selectedDate, "yyyy/MM/dd") : DTP1 = Strings.Format(selectedDate, "yyyyMMdd") End Sub Private Sub 確認新增_bt_Click(sender As Object, e As EventArgs) Handles 確認新增_bt.Click If 車主名稱_tb.Text = "" Or 車號_tb.Text = "" Then MsgBox("車主名稱及車號未輸入完成!!") Else 新增_bt.Enabled = True : 確認新增_bt.Enabled = False : 修改_bt.Enabled = True : boo = False SQL_估價單_控制表修改() : conn.Close() : MsgBox("儲存成功!!") : Set_清單1() End If End Sub Private Sub 修改_bt_Click(sender As Object, e As EventArgs) Handles 修改_bt.Click If 單號_tb.Text = "" Then MsgBox("未選擇單號!!") Else SQL_估價單_控制表修改() : conn.Close() : MsgBox("儲存成功!!") : Set_清單1() End If End Sub Private Sub 刪除_bt_Click(sender As Object, e As EventArgs) Handles 刪除_bt.Click If 單號_tb.Text = "" Then MsgBox("未選擇單號!!") Else 新增_bt.Enabled = True : 確認新增_bt.Enabled = False : 修改_bt.Enabled = False : boo = False SQL_估價單_控制表刪除() : SQL_估價單_明細表刪除() : conn.Close() : MsgBox("刪除成功") 單號_tb.Text = "" : 項次_tb.Text = "" 車主名稱_tb.Text = "" : 車號_tb.Text = "" : 電話_tb.Text = "" : 備註_tb.Text = "" : 里程_tb.Text = "" 工資_tb.Text = "0" : 零件_tb.Text = "0" : 總計_tb.Text = "0" : 稅金_tb.Text = "0" : 應收合計_tb.Text = "0" Set_清單1() : Set_清單2() End If End Sub Private Sub 刪除選中的一筆資料_bt_Click(sender As Object, e As EventArgs) Handles 刪除選中的一筆資料1_bt.Click If 項次_tb.Text = "" Then MsgBox("未選擇需要刪除的資料。") Else For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 Dim 項次 As String = 明細表_dgv.Rows(i).Cells("項次").Value.ToString Dim 項 As String = 明細表_dgv.Rows(i).Cells("各項支出名稱").Value.ToString Dim 數量 As String = 明細表_dgv.Rows(i).Cells("數量").Value.ToString Dim 金額 As String = 明細表_dgv.Rows(i).Cells("售價").Value.ToString Dim 備註 As String = 明細表_dgv.Rows(i).Cells("備註").Value.ToString SQL_估價單_修改明細表(項次, 項, 單號_tb.Text, 數量, 金額, 備註) : conn.Close() Next SQL_估價單_刪除明細表項次() : SQL_估價單_明細表項次更新() : conn.Close() Set_清單2() : 項次_tb.Text = "" : MsgBox("刪除成功。") End If End Sub Private Sub 申請_bt_Click(sender As Object, e As EventArgs) Handles 申請1_bt.Click For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 Dim 項次 As String = 明細表_dgv.Rows(i).Cells("項次").Value.ToString Dim 項 As String = 明細表_dgv.Rows(i).Cells("各項支出名稱").Value.ToString Dim 數量 As String = 明細表_dgv.Rows(i).Cells("數量").Value.ToString Dim 金額 As String = 明細表_dgv.Rows(i).Cells("售價").Value.ToString Dim 備註 As String = 明細表_dgv.Rows(i).Cells("備註").Value.ToString SQL_估價單_修改明細表(項次, 項, 單號_tb.Text, 數量, 金額, 備註) : conn.Close() Next : Set_清單2() : MsgBox("儲存成功。") End Sub Private Sub 查詢_bt_Click(sender As Object, e As EventArgs) Handles 查詢_bt.Click CHB("請輸入要查詢的單號資料。") : PA56 = 訊息回應 : Set_清單1() : PA56 = "" End Sub Private Sub 收支單中新增一筆資料1_bt_Click(sender As Object, e As EventArgs) Handles 收支單中新增一筆資料1_bt.Click If 單號_tb.Text = "" Then MsgBox("未選擇單號!!") Else If 明細表_dgv.Rows.Count > 0 Then For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 Dim 項次 As String = 明細表_dgv.Rows(i).Cells("項次").Value.ToString Dim 項 As String = 明細表_dgv.Rows(i).Cells("各項支出名稱").Value.ToString Dim 數量 As String = 明細表_dgv.Rows(i).Cells("數量").Value.ToString Dim 金額 As String = 明細表_dgv.Rows(i).Cells("售價").Value.ToString Dim 備註 As String = 明細表_dgv.Rows(i).Cells("備註").Value.ToString SQL_估價單_修改明細表(項次, 項, 單號_tb.Text, 數量, 金額, 備註) : conn.Close() Next End If If 料號_tb.Text = "" Or 品名_tb.Text = "" Or 成本_tb.Text = "" Then MsgBox("未選擇物料。") Else SQL_估價單_查詢最後一筆單號項次() If dr.Read() Then 新項次 = dr("項次") NUM1 = Double.Parse(新項次) + 1 Else NUM1 = 1 End If : conn.Close() SQL_估價單_新增明細表(NUM1.ToString(), 品名_tb.Text, 單號_tb.Text, 料號_tb.Text, 成本_tb.Text, 狀態_tb.Text) : conn.Close() Set_清單2() MsgBox("明細表新增成功!!") End If End If End Sub Private Sub 收支單中新增一筆空白資料_bt_Click(sender As Object, e As EventArgs) Handles 收支單中新增一筆空白資料1_bt.Click If 單號_tb.Text = "" Then MsgBox("未選擇單號!!") Else If 明細表_dgv.Rows.Count > 0 Then For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 Dim 項次 As String = 明細表_dgv.Rows(i).Cells("項次").Value.ToString Dim 項 As String = 明細表_dgv.Rows(i).Cells("各項支出名稱").Value.ToString Dim 數量 As String = 明細表_dgv.Rows(i).Cells("數量").Value.ToString Dim 金額 As String = 明細表_dgv.Rows(i).Cells("售價").Value.ToString Dim 備註 As String = 明細表_dgv.Rows(i).Cells("備註").Value.ToString SQL_估價單_修改明細表(項次, 項, 單號_tb.Text, 數量, 金額, 備註) : conn.Close() Next End If SQL_估價單_查詢最後一筆單號項次() If dr.Read() Then 新項次 = dr("項次") NUM1 = Double.Parse(新項次) + 1 Else NUM1 = 1 End If : conn.Close() SQL_估價單_新增明細表(NUM1.ToString(), "", 單號_tb.Text, "", "", "免") : conn.Close() Set_清單2() MsgBox("明細表新增成功!!") End If End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 連動模組.SetCallingPage("估價單") : 連動模組.ShowDialog() : 連動模組.BringToFront() End Sub Public Sub ReceiveDataFromPageB(ByVal data As String, ByVal data1 As String, ByVal data3 As String, ByVal data4 As String) ' 在這裡處理從頁面B接收到的數據,將其設定到頁面A的TextBox中 車主名稱_tb.Text = data 電話_tb.Text = data1 車號_tb.Text = data3 備註_tb.Text = data4 End Sub Private Sub 匯入_bt_Click(sender As Object, e As EventArgs) Handles 匯入_bt.Click If 單號_tb.Text = "" Then MsgBox("未選擇單號!!") Else If 車主名稱_tb.Text <> "" And 車號_tb.Text <> "" Then SQL_估價單_查詢客戶資料(車主名稱_tb.Text, 車號_tb.Text) If dr.Read() Then SQL_估價單_修改客戶資料(車主名稱_tb.Text, 車號_tb.Text, 電話_tb.Text, 備註_tb.Text) Else SQL_客戶資料表_最後一筆資料() If dr.Read() Then : 新流水 = dr("流水號").ToString : Else : 新流水 = "CL00000" : End If conn.Close() Dim NUM1 As Integer NUM1 = Double.Parse(Strings.Right(新流水, 5)) + 1 If NUM1 < 10 Then : 新流水 = "CL" & "0000" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 新流水 = "CL" & "000" & NUM1 ElseIf NUM1 > 99 And NUM1 < 1000 Then : 新流水 = "CL" & "00" & NUM1 ElseIf NUM1 > 999 And NUM1 < 10000 Then : 新流水 = "CL" & "0" & NUM1 ElseIf NUM1 > 9999 And NUM1 < 100000 Then : 新流水 = "CL" & NUM1 : End If SQL_估價單_新增客戶資料(新流水, 車主名稱_tb.Text, 車號_tb.Text, 電話_tb.Text, 備註_tb.Text) : conn.Close() End If Set_日期格式轉換() For i As Integer = 1 To 999 NUM1 = 0 + i If NUM1 < 10 Then : 單號_tb.Text = "CR-" & DTP1 & "-00" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 單號_tb.Text = "CR-" & DTP1 & "-0" & NUM1 ElseIf NUM1 > 99 Then : 單號_tb.Text = "CR-" & DTP1 & "-" & NUM1 : End If PA = 單號_tb.Text : SQL_車輛銷售管理_單號查詢() If dr.Read() Then : Else : i = 999 : conn.Close() : End If : conn.Close() Next SQL_車輛銷售管理_人員明細(車主名稱_tb.Text, 車號_tb.Text) If dr.Read() Then 車型_tb.Text = dr("廠牌") 年_tb.Text = dr("年份型式") 引擎號碼1_tb.Text = dr("引擎號碼") 輪胎尺寸_tb.Text = dr("買入顏色") Else 車型_tb.Text = "" 年_tb.Text = "" 引擎號碼1_tb.Text = "" 輪胎尺寸_tb.Text = "" End If : conn.Close() SQL_估價單_車輛銷售控制表新增(PA, "保養維修", 車主名稱_tb.Text, 車號_tb.Text, DTP4, 電話_tb.Text, 是否收稅_cb.Checked, 應收合計_tb.Text, 車型_tb.Text, 年_tb.Text, 引擎號碼1_tb.Text, 輪胎尺寸_tb.Text) : conn.Close() For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 Set_流水號() Dim 項次 As String = 明細表_dgv.Rows(i).Cells("項次").Value.ToString Dim 項 As String = 明細表_dgv.Rows(i).Cells("各項支出名稱").Value.ToString Dim 數量 As String = 明細表_dgv.Rows(i).Cells("數量").Value.ToString Dim 金額 As String = 明細表_dgv.Rows(i).Cells("售價").Value.ToString Dim 備註 As String = 明細表_dgv.Rows(i).Cells("備註").Value.ToString Dim 料號 As String = 明細表_dgv.Rows(i).Cells("料號").Value.ToString Dim 成本 As String = 明細表_dgv.Rows(i).Cells("成本").Value.ToString Dim 狀態 As String = 明細表_dgv.Rows(i).Cells("狀態").Value.ToString SQL_估價單_車輛銷售明細表新增(新流水1, 項, 數量, 金額, 備註, PA, 料號, 項次, 成本, 狀態) : conn.Close() Next MsgBox("車輛銷售管理匯入成功!!") Else MsgBox("車主和車號不能為空!!") End If End If End Sub Private Sub Set_流水號() conn.Close() : dr.Close() Dim NUM1 As Integer For NUM1 = 0 To 999 Dim d As String : Dim f As String Dim selectedDate As DateTime = Date.Today Dim y As String = selectedDate.Year.ToString().Substring(2, 2) If selectedDate.Month < 10 Then : d = "0" & selectedDate.Month.ToString() Else : d = selectedDate.Month.ToString() End If If selectedDate.Day < 10 Then : f = "0" & selectedDate.Day.ToString() Else : f = selectedDate.Day.ToString() End If If NUM1 < 10 Then : 新流水1 = "C" & y & d & f & "00" & NUM1 ElseIf NUM1 > 9 And NUM1 < 100 Then : 新流水1 = "C" & y & d & f & "0" & NUM1 ElseIf NUM1 > 99 Then : 新流水1 = "C" & y & d & f & NUM1 End If : PA19 = 新流水1 SQL_車輛銷售管理_查詢明細表流水號() If dr.Read() Then : conn.Close() : Else : conn.Close() : NUM1 = 999 : End If Next End Sub Private Sub 顯示成本_cb_CheckedChanged(sender As Object, e As EventArgs) Handles 顯示成本_cb.CheckedChanged Set_清單3() End Sub Private Sub 隱藏成本_cb_CheckedChanged(sender As Object, e As EventArgs) Handles 隱藏成本_cb.CheckedChanged Set_清單2() End Sub Private Sub 查詢物_bt_Click(sender As Object, e As EventArgs) Handles 查詢物_bt.Click CHB("請輸入要查詢的關鍵字。") : PA56 = 訊息回應 : Set_清單3() : PA56 = "" End Sub Private Sub 查詢_bt_MouseEnter(sender As Object, e As EventArgs) Handles 查詢_bt.MouseEnter ToolTip1.SetToolTip(Me.查詢_bt, "查詢單號") End Sub Private Sub 查詢物_bt_MouseEnter(sender As Object, e As EventArgs) Handles 查詢物_bt.MouseEnter ToolTip1.SetToolTip(Me.查詢物_bt, "查詢物料") End Sub Private Sub 新增_bt_MouseEnter(sender As Object, e As EventArgs) Handles 新增_bt.MouseEnter ToolTip1.SetToolTip(Me.新增_bt, "新增準備") End Sub Private Sub 確認新增_bt_MouseEnter(sender As Object, e As EventArgs) Handles 確認新增_bt.MouseEnter ToolTip1.SetToolTip(Me.確認新增_bt, "確認新增") End Sub Private Sub 修改_bt_MouseEnter(sender As Object, e As EventArgs) Handles 修改_bt.MouseEnter ToolTip1.SetToolTip(Me.修改_bt, "修改存檔") End Sub Private Sub 刪除_bt_MouseEnter(sender As Object, e As EventArgs) Handles 刪除_bt.MouseEnter ToolTip1.SetToolTip(Me.刪除_bt, "刪除") End Sub Private Sub 申請_bt_MouseEnter(sender As Object, e As EventArgs) Handles 申請1_bt.MouseEnter ToolTip1.SetToolTip(Me.申請1_bt, "明細表存檔") End Sub Private Sub 匯出EXCEL_bt_MouseEnter(sender As Object, e As EventArgs) Handles 匯出EXCEL_bt.MouseEnter ToolTip1.SetToolTip(Me.匯出EXCEL_bt, "匯出PDF") End Sub Private Sub 收支單中新增一筆資料_bt_MouseEnter(sender As Object, e As EventArgs) Handles 收支單中新增一筆資料1_bt.MouseEnter ToolTip1.SetToolTip(Me.收支單中新增一筆資料1_bt, "明細表新增帶料號的資料") End Sub Private Sub 收支單中新增一筆空白資料_bt_MouseEnter(sender As Object, e As EventArgs) Handles 收支單中新增一筆空白資料1_bt.MouseEnter ToolTip1.SetToolTip(Me.收支單中新增一筆空白資料1_bt, "明細表新增空白的資料") End Sub Private Sub 刪除選中的一筆資料_bt_MouseEnter(sender As Object, e As EventArgs) Handles 刪除選中的一筆資料1_bt.MouseEnter ToolTip1.SetToolTip(Me.刪除選中的一筆資料1_bt, "刪除選中的一筆資料") End Sub Private Sub 匯出EXCEL_bt_Click(sender As Object, e As EventArgs) Handles 匯出EXCEL_bt.Click xlApp = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application) xlApp.Visible = True xlApp.DisplayAlerts = True xlApp.Application.WindowState = xlMaximized xlBook = xlApp.Workbooks.Add xlSheet = NewMethod(xlBook) xlBook.Activate() xlSheet.Activate() xlSheet.Cells(1, 1) = 公司_tb.Text xlSheet.Cells(2, 1) = "估 價 單" xlSheet.Cells(3, 1) = "車主名稱 " : xlSheet.Cells(3, 2) = 車主名稱_tb.Text : xlSheet.Cells(3, 3) = "工資 " : xlSheet.Cells(3, 4) = 工資_tb.Text xlSheet.Cells(3, 5) = "零件 " : xlSheet.Cells(3, 6) = 零件_tb.Text : xlSheet.Cells(4, 1) = "車號 " : xlSheet.Cells(4, 2) = 車號_tb.Text xlSheet.Cells(4, 3) = "稅金5% " : xlSheet.Cells(4, 4) = 稅金_tb.Text : xlSheet.Cells(4, 5) = "總計 " : xlSheet.Cells(4, 6) = 總計_tb.Text xlSheet.Cells(5, 1) = "估價日期 " : xlSheet.Cells(5, 2) = 報價日期_dtp.Text : xlSheet.Cells(5, 5) = "應收合計 " : xlSheet.Cells(5, 6) = 應收合計_tb.Text xlSheet.Cells(5, 3) = "進廠里程 " : xlSheet.Cells(5, 4) = 里程_tb.Text xlSheet.Cells(6, 1) = "項次" : xlSheet.Cells(6, 2) = "各項支出名稱" : xlSheet.Cells(6, 3) = "數量" xlSheet.Cells(6, 4) = "售價" : xlSheet.Cells(6, 5) = "總售價" : xlSheet.Cells(6, 6) = "備註" Dim 總計 As Double = 0 For i As Integer = 0 To 明細表_dgv.Rows.Count - 1 xlSheet.Cells(i + 7, 1) = 明細表_dgv.Rows(i).Cells("項次").Value xlSheet.Cells(i + 7, 2) = 明細表_dgv.Rows(i).Cells("各項支出名稱").Value Dim 數量 As Double = Convert.ToDouble(明細表_dgv.Rows(i).Cells("數量").Value) Dim 售價 As Double = Convert.ToDouble(明細表_dgv.Rows(i).Cells("售價").Value) Dim 總售價 As Double = Convert.ToDouble(明細表_dgv.Rows(i).Cells("總售價").Value) 總計 = 總計 + 總售價 xlSheet.Cells(i + 7, 3) = 數量.ToString("#,##0.##") xlSheet.Cells(i + 7, 4) = 售價.ToString("#,##0.##") xlSheet.Cells(i + 7, 5) = 總售價.ToString("#,##0.##") xlSheet.Cells(i + 7, 6) = 明細表_dgv.Rows(i).Cells("備註").Value N2 = i + 8 Next i xlSheet.Cells(N2, 4) = "總計" : xlSheet.Cells(N2, 5) = 總計.ToString("#,##0") xlSheet.Cells(N2 + 1, 1) = "車主須知" xlSheet.Cells(N2 + 2, 1) = "1.本估價單有效期限3個月,逾期需視材料物料波動情況,重新報價。" xlSheet.Cells(N2 + 3, 1) = "2.如蒙惠顧,請先預付訂金5成。" xlSheet.Cells(N2 + 4, 1) = "3.如在本估價單內未列項目,如需維修,另加計費。" BB(xlApp, xlSheet) xlApp.Sheets(2).Delete : xlSheet.PageSetup.PrintArea = "" '----轉成PDF----- Dim pdfFolderPath As String = Path.Combine(System.Windows.Forms.Application.StartupPath, "pdf") If Not Directory.Exists(pdfFolderPath) Then Directory.CreateDirectory(pdfFolderPath) End If Dim pdfFilePath As String = Path.Combine(pdfFolderPath, 單號_tb.Text & "-估價單.pdf") xlBook.Sheets(1).ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, pdfFilePath, XlFixedFormatQuality.xlQualityStandard, True) '-------- xlApp.Cells.Select() : xlApp.Application.WindowState = xlMinimized : xlBook.Close(False) Runtime.InteropServices.Marshal.ReleaseComObject(xlSheet) Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) xlApp.Quit() : xlSheet = Nothing : xlBook = Nothing : xlApp = Nothing : GC.Collect() Try Dim chromePath As String = "C:\Program Files\Google\Chrome\Application\chrome.exe" If System.IO.File.Exists(chromePath) Then Dim process As New Process() process.StartInfo.FileName = "chrome" process.StartInfo.Arguments = """" & pdfFilePath & """" process.Start() Else : Dim edgePath As String = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" If System.IO.File.Exists(edgePath) Then Dim process As New Process() process.StartInfo.FileName = "msedge" process.StartInfo.Arguments = """" & pdfFilePath & """" process.Start() Else Process.Start(pdfFilePath) End If End If Catch ex As Exception MsgBox("以存檔至桌面 。" & vbCrLf & "檔案名稱:" & 單號_tb.Text & "-估價單.pdf") End Try End Sub Private Sub BB(ByVal myExcel As Microsoft.Office.Interop.Excel.Application, ByVal xlSheet As Microsoft.Office.Interop.Excel.Worksheet) xlSheet.Cells.Select() With myExcel.Selection.Font : .Name = "微軟正黑體" : .Size = 12 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False .Shadow = False : .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone : End With xlSheet.Range("A3:F" & N2).Select() myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone With myExcel.Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With myExcel.Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With myExcel.Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With myExcel.Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With myExcel.Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With With myExcel.Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .ColorIndex = 0 .TintAndShade = 0 .Weight = xlThin End With xlSheet.Range("A1:F1").Select() With myExcel.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With myExcel.Selection.Merge xlSheet.Range("A2:F2").Select() With myExcel.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With myExcel.Selection.Merge xlSheet.Range("A3:F" & N2).Select() With myExcel.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With xlSheet.Range("A" & N2 + 1 & ":F" & N2 + 1).Select() With myExcel.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With myExcel.Selection.Merge xlSheet.Range("A" & N2 + 2 & ":F" & N2 + 2).Select() With myExcel.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With myExcel.Selection.Merge xlSheet.Range("A" & N2 + 3 & ":F" & N2 + 3).Select() With myExcel.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With myExcel.Selection.Merge xlSheet.Range("A" & N2 + 4 & ":F" & N2 + 4).Select() With myExcel.Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With myExcel.Selection.Merge xlSheet.Columns("A:F").AutoFit() AdjustColumnWidth(xlSheet, "A", 10) AdjustColumnWidth(xlSheet, "C", 10) AdjustColumnWidth(xlSheet, "D", 10) AdjustColumnWidth(xlSheet, "E", 10) If xlSheet.Columns("B:B").ColumnWidth > 30 Then xlSheet.Columns("B:B").ColumnWidth = 30 ElseIf xlSheet.Columns("B:B").ColumnWidth < 10 Then xlSheet.Columns("B:B").ColumnWidth = 10 End If If xlSheet.Columns("F:F").ColumnWidth > 20 Then xlSheet.Columns("F:F").ColumnWidth = 20 ElseIf xlSheet.Columns("F:F").ColumnWidth < 10 Then xlSheet.Columns("F:F").ColumnWidth = 10 End If xlSheet.Range("B:B,F:F").Select() With myExcel.Selection .VerticalAlignment = xlCenter .WrapText = True .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext End With xlSheet.Range("A3:F5").Select() With myExcel.Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent4 .TintAndShade = 0.799981688894314 .PatternTintAndShade = 0 End With xlSheet.Range("A6:F6").Select() With myExcel.Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .ThemeColor = xlThemeColorAccent1 .TintAndShade = 0.799981688894314 .PatternTintAndShade = 0 End With For i As Integer = 1 To N2 + 4 xlSheet.Rows(i).AutoFit xlSheet.Rows(i).RowHeight = xlSheet.Rows(i).RowHeight + 5 Next myExcel.Application.PrintCommunication = False With myExcel.ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With myExcel.Application.PrintCommunication = True myExcel.ActiveSheet.PageSetup.PrintArea = "" myExcel.Application.PrintCommunication = False With myExcel.ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = myExcel.Application.InchesToPoints(0.25) .RightMargin = myExcel.Application.InchesToPoints(0.25) .TopMargin = myExcel.Application.InchesToPoints(0.75) .BottomMargin = myExcel.Application.InchesToPoints(0.75) .HeaderMargin = myExcel.Application.InchesToPoints(0.3) .FooterMargin = myExcel.Application.InchesToPoints(0.3) .PrintHeadings = False .PrintGridlines = False .CenterHorizontally = True .CenterVertically = False .Draft = False .FirstPageNumber = xlAutomatic .BlackAndWhite = False .Zoom = False .FitToPagesWide = 1 .FitToPagesTall = False .OddAndEvenPagesHeaderFooter = False .DifferentFirstPageHeaderFooter = False .ScaleWithDocHeaderFooter = True .AlignMarginsHeaderFooter = True .EvenPage.LeftHeader.Text = "" .EvenPage.CenterHeader.Text = "" .EvenPage.RightHeader.Text = "" .EvenPage.LeftFooter.Text = "" .EvenPage.CenterFooter.Text = "" .EvenPage.RightFooter.Text = "" .FirstPage.LeftHeader.Text = "" .FirstPage.CenterHeader.Text = "" .FirstPage.RightHeader.Text = "" .FirstPage.LeftFooter.Text = "" .FirstPage.CenterFooter.Text = "" .FirstPage.RightFooter.Text = "" End With myExcel.Application.PrintCommunication = True End Sub Private Sub AdjustColumnWidth(ByVal sheet As Excel.Worksheet, ByVal column As String, ByVal minWidth As Double) Dim colRange As Excel.Range = sheet.Columns(column & ":" & column) If colRange.ColumnWidth < minWidth Then colRange.ColumnWidth = minWidth End If End Sub Private Shared Function NewMethod(xlBook As Microsoft.Office.Interop.Excel.Workbook) As Microsoft.Office.Interop.Excel.Worksheet Return CType(xlBook.Worksheets.Add, Microsoft.Office.Interop.Excel.Worksheet) End Function End Class