Imports System.Data.SqlClient Imports System.Reflection Imports Microsoft.Office.Interop.Excel.XlPaperSize Imports Microsoft.Office.Interop.Excel.XlPageOrientation Imports Microsoft.Office.Interop.Excel.XlOrder Imports Microsoft.Office.Interop.Excel.XlPrintErrors Imports Microsoft.Office.Core.XlHAlign Public Class frmMeasure Dim cmd As New SqlCommand Dim da As New SqlDataAdapter Dim sql As String Dim colorArray(10) As Color Dim conn As New SqlConnection Private Sub FrmMeasure_Load(sender As Object, e As EventArgs) Handles MyBase.Load If gUserName = "matchy" Then Button1.Visible = True Button2.Visible = True Button3.Visible = True dgv_su2.Visible = True dgv_TOTAL.Visible = True DGV_WB.Visible = True End If ' Me.MdiParent = FrmMDI Dim type As Type = dgv_measure.GetType() Dim pi As PropertyInfo = type.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.NonPublic) pi.SetValue(dgv_measure, True, Nothing) Dim DT1 As New DataTable Dim DT2 As New DataTable Dim DT3 As New DataTable conn.ConnectionString = connstring conn.Open() cmd.Connection = conn Dim dr As SqlDataReader dgv_measure.RowTemplate.Height = 30 dgv_measure.AllowUserToAddRows = False sql = "SELECT year(date) as 年, month(date) as 月 from rt_measure_daily group by year(date),month(date) order by year(date) desc,month(date) desc" cmd.CommandText = sql dr = cmd.ExecuteReader While dr.Read ListBox1.Items.Add(dr("年") & "/" & dr("月")) End While dr.Close() End Sub Private Sub dgv1_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv1.CellMouseUp End Sub Private Sub dgv_measure_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv_measure.CellMouseUp Dim dt1 As New DataTable sql = "SELECT class2 AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, CAST(SUM(price) / AVG(wb_weight) " & " AS numeric(10, 1)) AS 单位成本 " & " FROM (SELECT NO, CARD, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) " & " / AVG(ORDER_A) AS percents, " & " CASE WHEN class1 LIKE N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR " & " class1 LIKE N'%钛%') " & " THEN '染料' WHEN class1 = N'基础化工' THEN N'基础化工' ELSE '其他' END AS class2 " & " FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, " & " RT_SYS_CHEM_OUT.NO, RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, " & " RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.TYPE, RT_SYS_CHEM_OUT.UNIT, " & " RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, " & " RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD, RT_SYS_CHEM_OUT.DRUM, " & " RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID, RT_SYS_CHEM_MAIN.price, " & " RT_SYS_CHEM_MAIN.CLASS1 " & " FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN " & " RT_SYS_CHEM_MAIN ON " & " RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name " & " WHERE (RT_SYS_CHEM_OUT.CARD = '" & dgv_measure.Rows(dgv_measure.CurrentRow.Index).Cells("卡号").Value & "')) " & " AS derivedtbl_1 GROUP BY NO, CARD, P, CLASS1) AS derivedtbl_2 " & " GROUP BY CARD, P, class2 " & " ORDER BY 类别 DESC " cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt1) dgv1.DataSource = dt1 End Sub Private Sub ListBox1_Click(sender As Object, e As EventArgs) Handles ListBox1.Click Dim dt1 As New DataTable Dim dt_MEASURE As New DataTable Dim p() As String ListBox2.Items.Clear() p = Split(ListBox1.Items(ListBox1.SelectedIndex).ToString, "/") Dim dr As SqlDataReader sql = "SELECT day(date) as day from rt_measure_daily where year(date)='" & p(0) & "' and month(date)='" & p(1) & "'group by day(date) order by day(date)" cmd.CommandText = sql dr = cmd.ExecuteReader While dr.Read ListBox2.Items.Add(dr("day")) End While dr.Close() End Sub Private Sub ListBox2_Click(sender As Object, e As EventArgs) Handles ListBox2.Click Dim dt_measure As New DataTable Dim p() As String p = Split(ListBox1.Items(ListBox1.SelectedIndex).ToString, "/") sql = "SELECT RT_MEASURE_DAILY.DATE AS 日期, RT_MEASURE_DAILY.CARD AS 卡号, RT_RETAN_RECORD.CUST AS 客户, " & " RT_RETAN_RECORD.TECH AS 技术员, RT_MEASURE_DAILY.COLOR AS 颜色, " & " RT_RETAN_RECORD.THICKNESS AS 厚度, RT_MEASURE_DAILY.SF AS 尺数, " & " RT_MEASURE_DAILY.WEIGHT AS 蓝皮重, RT_MEASURE_DAILY.SOURCE AS 皮源, " & " RT_MEASURE_DAILY.COMMENT1 AS 备注, cast(RT_RETAN_RECORD.PRICE/RT_MEASURE_DAILY.WEIGHT as numeric(10,1)) AS 蓝皮单价 " & " FROM RT_MEASURE_DAILY LEFT OUTER JOIN " & " RT_RETAN_RECORD ON RIGHT(RT_MEASURE_DAILY.CARD,10) = RIGHT(RT_RETAN_RECORD.CARD,10) where year(rt_measure_daily.date)='" & p(0) & "' And month(rt_measure_daily.date)='" & p(1) & "'" & " and day(RT_MEASURE_DAILY.date)='" & ListBox2.Items(ListBox2.SelectedIndex).ToString & "' ORDER BY 日期 DESC" cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_measure) dt_measure.Columns.Add("基础") dt_measure.Columns.Add("染料") dt_measure.Columns.Add("油脂") dt_measure.Columns.Add("其他") dt_measure.Columns.Add("合计") dt_measure.Columns.Add("得革率") dt_measure.Columns.Add("量完尺数") dt_measure.Columns.Add("累加尺数") dt_measure.Columns.Add("每尺皮料") dt_measure.Columns.Add("每尺化料") dt_measure.Columns.Add("每尺染料") dt_measure.Columns.Add("每尺油脂") dt_measure.Columns.Add("每尺基础") dt_measure.Columns.Add("每尺其他") dgv_measure.DataSource = dt_measure '------打尺 dgv_measure.Columns(0).Width = 80 dgv_measure.Columns(1).Width = 130 dgv_measure.Columns(2).Width = 80 dgv_measure.Columns(3).Width = 70 dgv_measure.Columns(4).Width = 120 dgv_measure.Columns(5).Width = 60 dgv_measure.Columns(6).Width = 80 dgv_measure.Columns(7).Width = 80 dgv_measure.Columns(8).Width = 80 dgv_measure.Columns(9).Width = 60 dgv_measure.Columns(10).Width = 80 dgv_measure.Columns(11).Width = 65 dgv_measure.Columns(12).Width = 65 dgv_measure.Columns(13).Width = 65 dgv_measure.Columns("每尺皮料").Width = 60 dgv_measure.Columns("每尺化料").Width = 60 dgv_measure.Columns("每尺染料").Width = 60 dgv_measure.Columns("每尺基础").Width = 60 dgv_measure.Columns("每尺其他").Width = 60 dgv_measure.Columns("每尺油脂").Width = 60 dgv_measure.Columns("基础").Visible = False dgv_measure.Columns("染料").Visible = False dgv_measure.Columns("油脂").Visible = False dgv_measure.Columns("其他").Visible = False dgv_measure.Columns("合计").Visible = False dgv_measure.Columns("累加尺数").Visible = False ' dgv_measure.Columns("备注").Visible = False ' dgv_measure.Columns("累加尺数").Visible = False Dim dr As SqlDataReader For x As Integer = 0 To dt_measure.Rows.Count - 1 Dim dt1 As New DataTable 'If Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) = "1911133408" Then ' MsgBox("") 'End If 'sql = "select no from rt_sys_chem_out where card like '%" & Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) & "%'" 'cmd.CommandText = sql 'dr = cmd.ExecuteReader 'If dr.Read Then ' ' cal_chem 'End If 'dr.Close() sql = "SELECT 类别, SUM(比例) AS 比例, SUM(单位成本) AS 单位成本 from (SELECT class AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, CAST(SUM(price) / AVG(wb_weight) " & " AS numeric(10, 2)) AS 单位成本 " & " FROM (SELECT NO, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) / AVG(ORDER_A) " & " AS percents, CASE WHEN class1 LIKE N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR " & " class Like N'%钛%') THEN '染料' WHEN class1 = N'基础化工' THEN N'基础' ELSE '其他' END AS class " & " FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, " & " RT_SYS_CHEM_OUT.NO, RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, " & " RIGHT(RT_SYS_CHEM_OUT.CARD, 10) AS CARD1, RT_SYS_CHEM_OUT.NAME, " & " RT_SYS_CHEM_OUT.TYPE, RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, " & " RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, RT_SYS_CHEM_OUT.P, " & " RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID, " & " CASE WHEN new_price Is NULL THEN CAST(RT_SYS_CHEM_MAIN.price AS numeric(10, " & " 2)) ELSE CAST(new_price AS numeric(10, 2)) END AS price, " & " RT_SYS_CHEM_MAIN.CLASS1 " & " FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN " & " RT_SYS_CHEM_MAIN ON " & " RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name " & " WHERE (RIGHT(RT_SYS_CHEM_OUT.CARD,10) = '" & Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) & "')) AS derivedtbl_1 " & " GROUP BY CARD1, NO, P, CLASS1) AS derivedtbl_2 GROUP BY P, class ) as qq group by 类别" sql = "SELECT 类别, SUM(比例) AS 比例, SUM(单位成本) AS 单位成本 FROM (SELECT class AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, CAST(SUM(price) / AVG(wb_weight) AS numeric(10, 2)) AS 单位成本 FROM (SELECT NO, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) / AVG(ORDER_A) AS percents, CASE WHEN class1 LIKE N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR class1 LIKE N'%钛%') THEN '染料' WHEN class1 = N'基础化工' THEN N'基础' ELSE '其他' END AS class FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO, RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, RIGHT(RT_SYS_CHEM_OUT.CARD, 10) AS CARD1, RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.TYPE, RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID, CASE WHEN new_price IS NULL THEN CAST(RT_SYS_CHEM_MAIN.price AS numeric(10, 2)) ELSE CAST(new_price AS numeric(10, 2)) END AS price, RT_SYS_CHEM_MAIN.CLASS1 FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN RT_SYS_CHEM_MAIN ON RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name WHERE (RIGHT(RT_SYS_CHEM_OUT.CARD, 10) = '" & Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) & "')) AS derivedtbl_1 GROUP BY CARD1, NO, P, CLASS1) AS derivedtbl_2 GROUP BY P, class) AS qq GROUP BY 类别" cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt1) For y As Integer = 0 To dt1.Rows.Count - 1 Select Case dt1.Rows(y).Item("类别") Case "基础" dt_measure.Rows(x).Item("基础") = dt1.Rows(y).Item("单位成本") Case "染料" dt_measure.Rows(x).Item("染料") = dt1.Rows(y).Item("单位成本") Case "油脂" dt_measure.Rows(x).Item("油脂") = dt1.Rows(y).Item("单位成本") Case "其他" dt_measure.Rows(x).Item("其他") = dt1.Rows(y).Item("单位成本") End Select Next If IsDBNull(dt_measure.Rows(x).Item("基础")) Then dt_measure.Rows(x).Item("基础") = 0 End If If IsDBNull(dt_measure.Rows(x).Item("染料")) Then dt_measure.Rows(x).Item("染料") = 0 End If If IsDBNull(dt_measure.Rows(x).Item("油脂")) Then dt_measure.Rows(x).Item("油脂") = 0 End If If IsDBNull(dt_measure.Rows(x).Item("其他")) Then dt_measure.Rows(x).Item("其他") = 0 End If sql = "select sum(sf) as sf from rt_measure_daily where card='" & dt_measure.Rows(x).Item("卡号") & "' and comment1 like N'%完%'" cmd.CommandText = sql If IsDBNull(cmd.ExecuteScalar) Then sql = "select cast(sum(sf) as numeric(10,1)) as sf from rt_measure_daily where card='" & dt_measure.Rows(x).Item("卡号") & "'" cmd.CommandText = sql dt_measure.Rows(x).Item("累加尺数") = cmd.ExecuteScalar Else sql = "select cast(sum(sf) as numeric(10,1)) as sf from rt_measure_daily where RIGHT(card,10)='" & Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) & "'" cmd.CommandText = sql dt_measure.Rows(x).Item("量完尺数") = cmd.ExecuteScalar dt_measure.Rows(x).Item("每尺化料") = Math.Round((Val(dt_measure.Rows(x).Item("基础").ToString) + Val(dt_measure.Rows(x).Item("油脂").ToString) + Val(dt_measure.Rows(x).Item("染料").ToString) + Val(dt_measure.Rows(x).Item("其他").ToString)) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / Val(dt_measure.Rows(x).Item("量完尺数").ToString), 1) dt_measure.Rows(x).Item("每尺皮料") = Math.Round((Val(dt_measure.Rows(x).Item("蓝皮单价").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / dt_measure.Rows(x).Item("量完尺数").ToString), 1) dt_measure.Rows(x).Item("得革率") = Math.Round((Val(dt_measure.Rows(x).Item("量完尺数").ToString) / dt_measure.Rows(x).Item("蓝皮重").ToString), 2) dt_measure.Rows(x).Item("每尺染料") = Math.Round((Val(dt_measure.Rows(x).Item("染料").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 1) dt_measure.Rows(x).Item("每尺基础") = Math.Round((Val(dt_measure.Rows(x).Item("基础").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 1) dt_measure.Rows(x).Item("每尺油脂") = Math.Round((Val(dt_measure.Rows(x).Item("油脂").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 1) dt_measure.Rows(x).Item("每尺其他") = Math.Round((Val(dt_measure.Rows(x).Item("其他").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 1) End If dt_measure.Rows(x).Item("合计") = Val(dt_measure.Rows(x).Item("基础").ToString) + Val(dt_measure.Rows(x).Item("油脂").ToString) + Val(dt_measure.Rows(x).Item("染料").ToString) + Val(dt_measure.Rows(x).Item("其他").ToString) Next For y As Integer = 0 To dgv_measure.Rows.Count - 1 If IsDBNull(dgv_measure.Rows(y).Cells("量完尺数").Value) Then If y <> 0 Then dgv_measure.CurrentCell = dgv_measure.Rows(0).Cells(0) dgv_measure.Rows(y).Visible = False End If End If Next End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim dt_measure As New DataTable Dim p() As String p = Split(ListBox1.Items(ListBox1.SelectedIndex).ToString, "/") sql = "SELECT RT_MEASURE_DAILY.DATE AS 日期, right(RT_MEASURE_DAILY.CARD,10) AS 卡号, RT_RETAN_RECORD.CUST AS 客户, " & " RT_RETAN_RECORD.TECH AS 技术员, RT_MEASURE_DAILY.COLOR AS 颜色, " & " RT_RETAN_RECORD.THICKNESS AS 厚度, RT_MEASURE_DAILY.SF AS 尺数, " & " case when (RT_MEASURE_DAILY.SOURCE like N'%改%' or RT_MEASURE_DAILY.SOURCE like N'%干%') then RT_MEASURE_DAILY.WEIGHT*1.6 else RT_MEASURE_DAILY.WEIGHT end AS 蓝皮重, RT_MEASURE_DAILY.SOURCE AS 皮源, " & " RT_MEASURE_DAILY.COMMENT1 AS 备注, cast(RT_RETAN_RECORD.PRICE/RT_MEASURE_DAILY.WEIGHT as numeric(10,1)) AS 蓝皮单价 " & " FROM RT_MEASURE_DAILY LEFT OUTER JOIN " & " RT_RETAN_RECORD ON right(RT_MEASURE_DAILY.CARD,10) = right(RT_RETAN_RECORD.CARD,10) where year(rt_measure_daily.date)='" & p(0) & "' And month(rt_measure_daily.date)='" & p(1) & "' ORDER BY 日期 DESC" cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_measure) dt_measure.Columns.Add("基础") dt_measure.Columns.Add("染料") dt_measure.Columns.Add("油脂") dt_measure.Columns.Add("其他") dt_measure.Columns.Add("合计") dt_measure.Columns.Add("得革率") dt_measure.Columns.Add("量完尺数") dt_measure.Columns.Add("累加尺数") dt_measure.Columns.Add("每尺皮料") dt_measure.Columns.Add("每尺化料") dt_measure.Columns.Add("每尺染料") dt_measure.Columns.Add("每尺油脂") dt_measure.Columns.Add("每尺基础") dt_measure.Columns.Add("每尺其他") dt_measure.Columns.Add("除染料") dgv_measure.DataSource = dt_measure '------打尺 dgv_measure.Columns(0).Width = 100 dgv_measure.Columns(1).Width = 130 dgv_measure.Columns(2).Width = 100 dgv_measure.Columns(3).Width = 70 dgv_measure.Columns(4).Width = 120 dgv_measure.Columns(5).Width = 60 dgv_measure.Columns(6).Width = 80 dgv_measure.Columns(7).Width = 80 dgv_measure.Columns(8).Width = 80 dgv_measure.Columns(10).Width = 80 dgv_measure.Columns(11).Width = 65 dgv_measure.Columns(12).Width = 65 dgv_measure.Columns(13).Width = 65 dgv_measure.Columns(14).Width = 65 dgv_measure.Columns(15).Width = 75 dgv_measure.Columns(16).Width = 75 dgv_measure.Columns(17).Width = 75 dgv_measure.Columns(18).Width = 75 dgv_measure.Columns(19).Width = 75 Dim dr As SqlDataReader For x As Integer = 0 To dt_measure.Rows.Count - 1 Dim dt1 As New DataTable 'If dt_measure.Rows(x).Item("卡号") = "1909152600" Then ' MsgBox("") 'End If sql = "SELECT class2 AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, CAST(SUM(price) / AVG(wb_weight) " & " AS numeric(10, 2)) AS 单位成本 " & " FROM (SELECT NO, CARD, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) " & " / AVG(ORDER_A) AS percents, " & " CASE WHEN class1 LIKE N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR " & " class1 LIKE N'%钛%') " & " THEN '染料' WHEN class1 = N'基础化工' THEN N'基础' ELSE '其他' END AS class2 " & " FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, " & " RT_SYS_CHEM_OUT.NO, RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, " & " RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.TYPE, RT_SYS_CHEM_OUT.UNIT, " & " RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, " & " RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD, RT_SYS_CHEM_OUT.DRUM, " & " RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID, CASE WHEN new_price Is NULL THEN CAST(RT_SYS_CHEM_MAIN.price AS numeric(10, 2)) ELSE CAST(new_price AS numeric(10, 2)) END AS price, " & " RT_SYS_CHEM_MAIN.CLASS1 " & " FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN " & " RT_SYS_CHEM_MAIN ON " & " RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name " & " WHERE (right(RT_SYS_CHEM_OUT.CARD,10) = '" & dt_measure.Rows(x).Item("卡号") & "')) " & " AS derivedtbl_1 GROUP BY NO, CARD, P, CLASS1) AS derivedtbl_2 " & " GROUP BY CARD, P, class2 " & " ORDER BY 类别 DESC " sql = "SELECT 类别, SUM(比例) AS 比例, SUM(单位成本) AS 单位成本 " & " FROM (SELECT TOP (100) PERCENT class2 AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, " & " CAST(SUM(price) / AVG(wb_weight) AS numeric(10, 2)) AS 单位成本 " & " FROM (SELECT NO, CARD, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) " & " / AVG(ORDER_A) AS percents, " & " CASE WHEN class1 Like N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR " & " class1 LIKE N'%钛%') " & " THEN '染料' WHEN class1 = N'基础化工' THEN N'基础' ELSE '其他' END AS class2 " & " FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, " & " RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO, " & " RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, " & " RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.TYPE, " & " RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, " & " RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, " & " RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD, " & " RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.ORDER_A, " & " RT_SYS_CHEM_OUT.ID, CASE WHEN new_price IS NULL " & " THEN CAST(RT_SYS_CHEM_MAIN.price AS numeric(10, 2)) " & " ELSE CAST(new_price AS numeric(10, 2)) END AS price, " & " RT_SYS_CHEM_MAIN.CLASS1 " & " FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN " & " RT_SYS_CHEM_MAIN ON " & " RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name " & " WHERE (RIGHT(RT_SYS_CHEM_OUT.CARD, 10) = '" & dt_measure.Rows(x).Item("卡号") & "')) " & " AS derivedtbl_1 " & " GROUP BY NO, CARD, P, CLASS1) AS derivedtbl_2 " & " GROUP BY CARD, P, class2 ORDER BY 类别 DESC) AS qq GROUP BY 类别" cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt1) For y As Integer = 0 To dt1.Rows.Count - 1 Select Case dt1.Rows(y).Item("类别") Case "基础" dt_measure.Rows(x).Item("基础") = dt1.Rows(y).Item("单位成本") Case "染料" dt_measure.Rows(x).Item("染料") = dt1.Rows(y).Item("单位成本") Case "油脂" dt_measure.Rows(x).Item("油脂") = dt1.Rows(y).Item("单位成本") Case "其他" dt_measure.Rows(x).Item("其他") = dt1.Rows(y).Item("单位成本") End Select Next If IsDBNull(dt_measure.Rows(x).Item("基础")) Then dt_measure.Rows(x).Item("基础") = 0 End If If IsDBNull(dt_measure.Rows(x).Item("染料")) Then dt_measure.Rows(x).Item("染料") = 0 End If If IsDBNull(dt_measure.Rows(x).Item("油脂")) Then dt_measure.Rows(x).Item("油脂") = 0 End If If IsDBNull(dt_measure.Rows(x).Item("其他")) Then dt_measure.Rows(x).Item("其他") = 0 End If sql = "select sum(sf) as sf from rt_measure_daily where right(card,10)='" & dt_measure.Rows(x).Item("卡号") & "' and comment1 like N'%完%'" cmd.CommandText = sql If IsDBNull(cmd.ExecuteScalar) Then sql = "select cast(sum(sf) as numeric(10,1)) as sf from rt_measure_daily where right(card,10)='" & dt_measure.Rows(x).Item("卡号") & "'" cmd.CommandText = sql dt_measure.Rows(x).Item("累加尺数") = cmd.ExecuteScalar Else sql = "select cast(sum(sf) as numeric(10,1)) as sf from rt_measure_daily where right(card,10)='" & dt_measure.Rows(x).Item("卡号") & "'" cmd.CommandText = sql dt_measure.Rows(x).Item("量完尺数") = cmd.ExecuteScalar dt_measure.Rows(x).Item("每尺化料") = Math.Round((Val(dt_measure.Rows(x).Item("基础").ToString) + Val(dt_measure.Rows(x).Item("油脂").ToString) + Val(dt_measure.Rows(x).Item("染料").ToString) + Val(dt_measure.Rows(x).Item("其他").ToString)) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / Val(dt_measure.Rows(x).Item("量完尺数").ToString), 3) dt_measure.Rows(x).Item("每尺皮料") = Math.Round((Val(dt_measure.Rows(x).Item("蓝皮单价").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / dt_measure.Rows(x).Item("量完尺数").ToString), 3) dt_measure.Rows(x).Item("得革率") = Math.Round((Val(dt_measure.Rows(x).Item("量完尺数").ToString) / dt_measure.Rows(x).Item("蓝皮重").ToString), 3) dt_measure.Rows(x).Item("每尺染料") = Math.Round((Val(dt_measure.Rows(x).Item("染料").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 3) dt_measure.Rows(x).Item("每尺基础") = Math.Round((Val(dt_measure.Rows(x).Item("基础").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 3) dt_measure.Rows(x).Item("每尺油脂") = Math.Round((Val(dt_measure.Rows(x).Item("油脂").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 3) dt_measure.Rows(x).Item("每尺其他") = Math.Round((Val(dt_measure.Rows(x).Item("其他").ToString) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 3) dt_measure.Rows(x).Item("除染料") = Math.Round(((Val(dt_measure.Rows(x).Item("基础").ToString) + Val(dt_measure.Rows(x).Item("油脂").ToString) + Val(dt_measure.Rows(x).Item("其他").ToString)) * Val(dt_measure.Rows(x).Item("蓝皮重").ToString) / 2 / dt_measure.Rows(x).Item("量完尺数").ToString), 3) End If dt_measure.Rows(x).Item("合计") = Val(dt_measure.Rows(x).Item("基础").ToString) + Val(dt_measure.Rows(x).Item("油脂").ToString) + Val(dt_measure.Rows(x).Item("染料").ToString) + Val(dt_measure.Rows(x).Item("其他").ToString) Next sql = "delete from rt_cost" '-------染色 cmd.CommandText = sql cmd.ExecuteNonQuery() Dim my_sqlbulk As New SqlBulkCopy(conn) my_sqlbulk.DestinationTableName = "dbo.rt_cost" my_sqlbulk.WriteToServer(dt_measure) MsgBox("") End Sub Private Sub CAL_TOTAL() Dim DT_TOTAL As New DataTable DT_TOTAL.Columns.Add("技术员") DT_TOTAL.Columns.Add("颜色") DT_TOTAL.Columns.Add("蓝皮均重") DT_TOTAL.Columns.Add("蓝皮均价") DT_TOTAL.Columns.Add("蓝皮产出率") DT_TOTAL.Columns.Add("蓝皮每尺成本") DT_TOTAL.Columns.Add("每尺化工") DT_TOTAL.Columns.Add("每尺染料") DT_TOTAL.Columns.Add("每尺其他") DT_TOTAL.Columns.Add("量尺尺数", GetType(System.Double)) DT_TOTAL.Columns.Add("每尺化工加权", GetType(System.Double)) DT_TOTAL.Columns.Add("每尺染料加权", GetType(System.Double)) sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " & " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " & " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " & " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " & " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " & " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " & " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数)" & " AS 量尺尺数 " & " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " & " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " & " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " & " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " & " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " & " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " & " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " & " FROM rt_cost " & " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf >0.5) AND (tech = N'罗') " & " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " & " GROUP BY 技术员, 颜色) AS q " & " GROUP BY 技术员, 颜色 " Dim dt_luo As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_luo) dgv_luo.DataSource = dt_luo sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " & " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " & " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " & " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " & " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " & " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " & " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " & " AS 量尺尺数 " & " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " & " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " & " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " & " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " & " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " & " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " & " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " & " FROM rt_cost " & " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf >0.5) AND (tech = N'苏') AND " & " (source NOT LIKE N'%库存%') AND (source NOT LIKE N'%杂%') AND (source NOT LIKE N'%套%') AND (tech = N'苏') AND (source NOT LIKE N'%回%') AND (card NOT LIKE '%r18-%') " & " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " & " GROUP BY 技术员, 颜色) AS q " & " GROUP BY 技术员, 颜色 " Dim dt_su1 As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_su1) dgv_su1.DataSource = dt_su1 '-----苏正常黑色 sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " & " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " & " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " & " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '套黑' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " & " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " & " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " & " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " & " AS 量尺尺数 " & " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " & " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " & " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " & " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " & " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " & " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " & " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " & " FROM rt_cost " & " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf > 0.5) AND (tech = N'苏') AND " & " (card like'%r18-%' or source like N'%库存%' or source like N'%杂%' or source like N'%套%' or source LIKE N'%回%' ) " & " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " & " GROUP BY 技术员, 颜色) AS q " & " GROUP BY 技术员, 颜色 " Dim dt_su2 As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_su2) dgv_su2.DataSource = dt_su2 '----苏改色 sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " & " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " & " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " & " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " & " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " & " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " & " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " & " AS 量尺尺数 " & " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " & " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " & " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " & " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " & " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " & " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " & " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " & " FROM rt_cost " & " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf > 0.5) AND (tech = N'宁') " & " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " & " GROUP BY 技术员, 颜色) AS q " & " GROUP BY 技术员, 颜色 " Dim dt_nin As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_nin) dgv_nin.DataSource = dt_nin sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " & " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " & " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " & " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " & " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " & " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " & " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " & " AS 量尺尺数 " & " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " & " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " & " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " & " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " & " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " & " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " & " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " & " FROM rt_cost " & " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf > 0.5) AND (tech = N'郑') " & " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " & " GROUP BY 技术员, 颜色) AS q " & " GROUP BY 技术员, 颜色 " Dim dt_zhen As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_zhen) dgv_zhen.DataSource = dt_zhen sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " & " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " & " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " & " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " & " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " & " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " & " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " & " AS 量尺尺数 " & " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " & " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " & " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " & " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " & " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " & " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " & " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " & " FROM rt_cost " & " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf > 0.5) AND (tech = N'刘') " & " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " & " GROUP BY 技术员, 颜色) AS q " & " GROUP BY 技术员, 颜色 " Dim dt_liu As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_liu) dgv_liu.DataSource = dt_liu sql = "SELECT 技术员, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " & " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " & " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " & " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " & " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数,sum(量尺尺数*每尺化工) as 每尺化工加权,sum(量尺尺数*每尺染料) as 每尺染料加权 " & " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, color AS 颜色, thick AS 厚度, " & " CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) AS numeric(10, 0)) AS 蓝皮重, " & " source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) " & " AS 蓝皮产出率, CAST(AVG(cost_per_sf) AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) " & " AS numeric(10, 1)) AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, " & " CAST(AVG(oil_per_sf) + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " & " FROM rt_cost " & " WHERE (sf_finish Is Not NULL) And (chem_per_sf <> 0) " & " GROUP BY tech, card, cust, color, thick, source) AS p " & " GROUP BY 技术员 HAVING (技术员 <> '林')" Dim dt_tech As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt_tech) Dim newDataTable1 As DataTable = dt_su1.Copy() For Each dr1 As DataRow In dt_luo.Rows newDataTable1.ImportRow(dr1) Next dgv_luo.Update() 'dgv_luo.Columns(0).Width = 80 'dgv_luo.Columns(1).Width = 80 'dgv_luo.Columns(2).Width = 80 'dgv_luo.Columns(3).Width = 80 'dgv_luo.Columns(4).Width = 80 'dgv_luo.Columns(5).Width = 80 'dgv_luo.Columns(6).Width = 80 'dgv_luo.Columns(7).Width = 80 'dgv_luo.Columns(8).Width = 80 'dgv_su1.Columns(0).Width = 80 'dgv_su1.Columns(1).Width = 80 'dgv_su1.Columns(2).Width = 80 'dgv_su1.Columns(3).Width = 80 'dgv_su1.Columns(4).Width = 80 'dgv_su1.Columns(5).Width = 80 'dgv_su1.Columns(6).Width = 80 'dgv_su1.Columns(7).Width = 80 'dgv_su1.Columns(8).Width = 80 'dgv_su2.Columns(0).Width = 80 'dgv_su2.Columns(1).Width = 80 'dgv_su2.Columns(2).Width = 80 'dgv_su2.Columns(3).Width = 80 'dgv_su2.Columns(4).Width = 80 'dgv_su2.Columns(5).Width = 80 'dgv_su2.Columns(6).Width = 80 'dgv_su2.Columns(7).Width = 80 'dgv_su2.Columns(8).Width = 80 'dgv_liu.Columns(0).Width = 80 'dgv_liu.Columns(1).Width = 80 'dgv_liu.Columns(2).Width = 80 'dgv_liu.Columns(3).Width = 80 'dgv_liu.Columns(4).Width = 80 'dgv_liu.Columns(5).Width = 80 'dgv_liu.Columns(6).Width = 80 'dgv_liu.Columns(7).Width = 80 'dgv_liu.Columns(8).Width = 80 'dgv_zhen.Columns(0).Width = 80 'dgv_zhen.Columns(1).Width = 80 'dgv_zhen.Columns(2).Width = 80 'dgv_zhen.Columns(3).Width = 80 'dgv_zhen.Columns(4).Width = 80 'dgv_zhen.Columns(5).Width = 80 'dgv_zhen.Columns(6).Width = 80 'dgv_zhen.Columns(7).Width = 80 'dgv_zhen.Columns(8).Width = 80 'dgv_nin.Columns(0).Width = 80 'dgv_nin.Columns(1).Width = 80 'dgv_nin.Columns(2).Width = 80 'dgv_nin.Columns(3).Width = 80 'dgv_nin.Columns(4).Width = 80 'dgv_nin.Columns(5).Width = 80 'dgv_nin.Columns(6).Width = 80 'dgv_nin.Columns(7).Width = 80 'dgv_nin.Columns(8).Width = 80 For X As Integer = 0 To dt_su1.Rows.Count - 1 Next Dim WORKROW As DataRow WORKROW = DT_TOTAL.NewRow For I As Integer = 0 To 9 WORKROW(I) = dt_su1.Rows(0).Item(I) Next I DT_TOTAL.Rows.Add(WORKROW) WORKROW = DT_TOTAL.NewRow For I As Integer = 0 To 9 WORKROW(I) = dt_luo.Rows(1).Item(I) Next I DT_TOTAL.Rows.Add(WORKROW) 'WORKROW = DT_TOTAL.NewRow '----老苏改色 'For I As Integer = 0 To 9 ' WORKROW(I) = dt_su2.Rows(0).Item(I) 'Next I 'DT_TOTAL.Rows.Add(WORKROW) WORKROW = DT_TOTAL.NewRow For I As Integer = 0 To 9 WORKROW(I) = dt_luo.Rows(0).Item(I) Next I DT_TOTAL.Rows.Add(WORKROW) WORKROW = DT_TOTAL.NewRow For I As Integer = 0 To 9 WORKROW(I) = dt_nin.Rows(0).Item(I) Next I DT_TOTAL.Rows.Add(WORKROW) WORKROW = DT_TOTAL.NewRow For I As Integer = 0 To 9 'WORKROW(I) = dt_liu.Rows(0).Item(I) Next I DT_TOTAL.Rows.Add(WORKROW) WORKROW = DT_TOTAL.NewRow For I As Integer = 0 To 9 WORKROW(I) = dt_zhen.Rows(0).Item(I) Next I DT_TOTAL.Rows.Add(WORKROW) dgv_TOTAL.DataSource = DT_TOTAL '---------技术员加权平均 dgv_TOTAL.Columns(0).Width = 80 dgv_TOTAL.Columns(1).Width = 80 dgv_TOTAL.Columns(2).Width = 80 dgv_TOTAL.Columns(3).Width = 80 dgv_TOTAL.Columns(4).Width = 80 dgv_TOTAL.Columns(5).Width = 80 dgv_TOTAL.Columns(6).Width = 80 dgv_TOTAL.Columns(7).Width = 80 dgv_TOTAL.Columns(8).Width = 80 For x As Integer = 0 To DT_TOTAL.Rows.Count - 1 If IsDBNull(DT_TOTAL.Rows(x).Item("每尺化工")) Then Else DT_TOTAL.Rows(x).Item("每尺化工加权") = DT_TOTAL.Rows(x).Item("每尺化工") * DT_TOTAL.Rows(x).Item("量尺尺数") DT_TOTAL.Rows(x).Item("每尺染料加权") = DT_TOTAL.Rows(x).Item("每尺染料") * DT_TOTAL.Rows(x).Item("量尺尺数") End If Next Dim myDataRow As DataRow myDataRow = DT_TOTAL.NewRow myDataRow(0) = "平均" myDataRow(10) = DT_TOTAL.Compute("sum(每尺化工加权)", "") myDataRow(11) = DT_TOTAL.Compute("sum(每尺染料加权)", "") Dim XX As Double = DT_TOTAL.Compute("sum(量尺尺数)", "") myDataRow(6) = Math.Round(myDataRow(10) / XX, 2) myDataRow(7) = Math.Round(myDataRow(11) / XX, 2) myDataRow(8) = Math.Round(myDataRow(10) / XX - myDataRow(11) / XX, 2) myDataRow(9) = Math.Round(DT_TOTAL.Compute("sum(量尺尺数)", ""), 1) 'l_in.Text = myDataRow(1) 'l_out.Text = myDataRow(2) 'l_bal.Text = myDataRow(3) DT_TOTAL.Rows.InsertAt(myDataRow, DT_TOTAL.Rows.Count) 'dgv_TOTAL.DataSource = DT_TOTAL dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(0).Style.ForeColor = Color.Red dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(6).Style.ForeColor = Color.Red dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(7).Style.ForeColor = Color.Red dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(8).Style.ForeColor = Color.Red dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(9).Style.ForeColor = Color.Red dgv_TOTAL.Columns(10).Visible = False dgv_TOTAL.Columns(11).Visible = False End Sub Private Sub ListBox2_MouseUp(sender As Object, e As MouseEventArgs) Handles ListBox2.MouseUp End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click CAL_TOTAL() sql = "SELECT 皮源,CAST(SUM(蓝皮单价*量尺尺数)/SUM(量尺尺数) AS NUMERIC(10,1)) AS 蓝皮每斤单价,CAST(SUM(蓝皮产出率*量尺尺数)/SUM(量尺尺数) AS numeric(10,1)) AS 蓝皮产出率, " & " CAST(SUM(蓝皮每尺成本*量尺尺数)/SUM(量尺尺数) AS numeric(10,1)) AS 蓝皮每尺成本,SUM(量尺尺数) AS 量尺尺数,SUM(蓝皮单价*量尺尺数) AS 蓝皮加权,SUM(蓝皮每尺成本*量尺尺数) AS 单价加权,SUM(蓝皮产出率*量尺尺数) AS 产出加权 " & " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, left(color,1) as 颜色, " & " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " & " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 2)) " & " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 2)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " & " AS numeric(10, 2)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 2)) " & " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 2)) AS 每尺染料, CAST(AVG(oil_per_sf) " & " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 2)) AS 每尺其他 " & " FROM rt_cost " & " WHERE (sf_finish Is Not NULL) And (chem_per_sf > 0.5) And ((wb_price) Is Not NULL) And WB_PRICE<>0 " & " GROUP BY tech, card, left(color,1), thick, source) AS P GROUP BY 皮源 ORDER BY 蓝皮每尺成本 " Dim DT_TOTAL As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(DT_TOTAL) Dim myDataRow As DataRow myDataRow = DT_TOTAL.NewRow myDataRow(0) = "平均" myDataRow(5) = DT_TOTAL.Compute("sum(蓝皮加权)", "") myDataRow(6) = DT_TOTAL.Compute("sum(单价加权)", "") myDataRow(7) = DT_TOTAL.Compute("sum(产出加权)", "") Dim XX As Double = DT_TOTAL.Compute("sum(量尺尺数)", "") If IsDBNull(myDataRow(1)) Then myDataRow(1) = 0 If IsDBNull(myDataRow(2)) Then myDataRow(2) = 0 myDataRow(1) = Math.Round(myDataRow(5) / XX, 1) myDataRow(3) = Math.Round(myDataRow(6) / XX, 1) myDataRow(2) = Math.Round(myDataRow(7) / XX, 1) myDataRow(4) = DT_TOTAL.Compute("sum(量尺尺数)", "") 'l_in.Text = myDataRow(1) 'l_out.Text = myDataRow(2) 'l_bal.Text = myDataRow(3) DT_TOTAL.Rows.InsertAt(myDataRow, DT_TOTAL.Rows.Count) 'dgv1.DataSource = dt 'dgv1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing ''DGV3.AllowUserToAddRows = False DGV_WB.DataSource = DT_TOTAL '--------蓝皮加权平均 DGV_WB.Columns(5).Visible = False DGV_WB.Columns(6).Visible = False DGV_WB.Columns(7).Visible = False DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(0).Style.ForeColor = Color.Red DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(1).Style.ForeColor = Color.Red DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(2).Style.ForeColor = Color.Red DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(3).Style.ForeColor = Color.Red DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(4).Style.ForeColor = Color.Red DGV_WB.Columns(0).Width = 150 End Sub Private Sub dgv_TOTAL_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles dgv_TOTAL.MouseDoubleClick Dim my_form As New Frm_RetanCost_Tech my_form.Show() 'Dim frm_tech As New Frm_RetanCost_Tech 'frm_tech.ShowDialog() End Sub Private Sub dgv_TOTAL_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv_TOTAL.CellDoubleClick 'Dim frm_tech As New Frm_RetanCost_Tech 'frm_tech.ShowDialog() End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlBook As Microsoft.Office.Interop.Excel.Workbook Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet Dim xlrange As Microsoft.Office.Interop.Excel.Range xlApp = CreateObject("Excel.Application") xlBook = xlApp.Workbooks.Add 'xlApp.DisplayAlerts = False xlApp.Visible = True xlBook.Activate() xlBook.Parent.Windows(1).Visible = True xlSheet = xlBook.Worksheets(1) xlSheet.Activate() xlSheet.Cells(1, 1).select dgv_measure.SelectAll() 'Dim t As New System.Windows.Forms.DataObject 'Dim tt As New DataTable 'tt = dgv_measure.DataSource 't = dgv_measure.GetClipboardContent 'System.Windows.Forms.Clipboard.SetDataObject(t, False, 1000, 1000) 'xlSheet.Range("a10").Select() 'System.Threading.Thread.Sleep(12000) 'xlSheet.PasteSpecial(Format:="Unicode 文字", Link:=False, DisplayAsIcon:=False) Me.dgv_measure.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText Me.dgv_measure.RowHeadersVisible = False Clipboard.SetDataObject(dgv_measure.GetClipboardContent()) ' xlSheet.PasteSpecial(Format:="文本", Link:=False, DisplayAsIcon:=False) ' xlSheet.PasteSpecial(Format:="unicode 文字", Link:=False, DisplayAsIcon:=False) xlSheet.Paste() xlSheet.Range("B1:AA178").Select() xlSheet.Rows("2:179").Select xlApp.Selection.RowHeight = 26 xlSheet.Range("D4").Select() With xlSheet.Columns("C:C") .EntireColumn.Hidden = False .ColumnWidth = 14.777778 End With xlSheet.Columns("C:AA").HorizontalAlignment = xlHAlignCenter With xlSheet.Selection .HorizontalAlignment = xlHAlignGeneral .IndentLevel = 0 End With xlSheet.Columns("K:K").EntireColumn.Hidden = True ' xlSheet.Range("B1:AA178").AutoFilter Field:=19, Criteria1:=Array(""), Operator:=xlFilterValues 'Range("B1:AA178").AutoFilter Field:=21, Criteria1:=Array("0.019", "0.256", "0.266", "0.307", "0.352", "0.357", "0.373", "0.474", "0.653", "0.809", "0.95", "1.074", "1.088", "1.183", "1.224", "1.238", "1.247", "1.248", "1.257", "1.261", "1.273", "1.278", "1.281", "1.289", "1.29", "1.293", "1.302", "1.307", "1.323", "1.327", "1.353", "1.36", "1.371", "1.372", "1.378", "1.38", "1.383", "1.384", "1.395", "1.407", "1.409", "1.411", "1.422", "1.428", "1.429", "1.432", "1.44", "1.45", "1.455", "1.467", "1.475", "1.476", "1.496", "1.502", "1.507", "1.529", "1.539", "1.568", "1.573", "1.575", "1.585", "1.595", "1.599", "1.642", "1.645", "1.647", "1.654", "1.694", "1.738", "1.783", "1.799", "1.807", "1.813", "1.822", "1.861", "1.877", "1.93", "2.01", "2.292", "2.3", "2.604", "5.058", "5.413"), Operator:=xlFilterValues With xlSheet.Columns("F:F") .EntireColumn.Hidden = False .ColumnWidth = 13.222222 End With xlSheet.Columns("M:Q").EntireColumn.Hidden = True xlSheet.Columns("H:H").EntireColumn.Hidden = True xlSheet.Columns("T:T").EntireColumn.Hidden = True 'xlSheet.Columns("X:Z").Group Start:=1, End:=1, By:=1, Periods:=1 xlSheet.Columns("U:AA").NumberFormatLocal = "0.00_);[紅色](0.00)" With xlSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlPortrait .Zoom = 100 .FirstPageNumber = True .LeftMargin = 54.141732 .RightMargin = 54.141732 .TopMargin = 72 .BottomMargin = 72 .HeaderMargin = 36 .FooterMargin = 36 .CenterHorizontally = False .CenterVertically = False .PrintErrors = Microsoft.Office.Interop.Excel.XlPrintErrors.xlPrintErrorsDisplayed .Order = Microsoft.Office.Interop.Excel.XlOrder.xlDownThenOver .PrintGridlines = False .PrintHeadings = False .BlackAndWhite = False .PrintQuality = 600 .PaperSize = Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA4 .PrintComments = -4142 .PrintArea = "" .PrintTitleRows = "$1:$1" .PrintTitleColumns = "" End With xlSheet.Columns("U:AA").Select With xlSheet.Selection .EntireColumn.Hidden = False .ColumnWidth = 3.888889 End With With xlSheet.Selection .EntireColumn.Hidden = False .ColumnWidth = 4.333333 End With xlSheet.Columns("R:R").NumberFormatLocal = "0.0_);[紅色](0.0)" With xlSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlPortrait .Zoom = 100 .FirstPageNumber = True .LeftMargin = 14.173228 .RightMargin = 14.173228 .TopMargin = 42.519685 .BottomMargin = 42.519685 .HeaderMargin = 36 .FooterMargin = 36 .CenterHorizontally = False .CenterVertically = False .PrintErrors = Microsoft.Office.Interop.Excel.XlPrintErrors.xlPrintErrorsDisplayed .Order = Microsoft.Office.Interop.Excel.XlOrder.xlDownThenOver .Order = .xlDownThenOver .PrintGridlines = False .PrintHeadings = False .BlackAndWhite = False .PrintQuality = 600 .PaperSize = Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA4 .PrintComments = -4142 .PrintArea = "" .PrintTitleRows = "$1:$1" .PrintTitleColumns = "" End With xlSheet.PageSetup.FitToPagesTall = 0 xlSheet.PageSetup.FitToPagesWide = 1 xlSheet.PageSetup.Orientation = xlLandscape xlSheet.Columns("A:A").EntireColumn.Hidden = True End Sub End Class