Imports System.Data.SqlClient Imports System.Reflection Imports System.Runtime.InteropServices Public Class Frm_process Dim cmd As New SqlCommand Dim da As New SqlDataAdapter Dim dt As New DataTable Dim sql As String Private Sub AddData(ByVal name As String, ByVal listX As ListBox, ByVal mph As Integer, ByVal hp As Integer, ByVal price As Decimal) ' Build a tab-delimited string. Dim txt As String = name & vbTab & mph.ToString() & " mph" & vbTab & hp.ToString() & " hp" & vbTab & price.ToString("C") ' Display in the ListBox and first TextBox. 'lstCars.Items.Add(txt) 'txtCars.Text &= txt & vbCrLf ' Display formatted. 'txtFormattedCars.Text &= String.Format("{0,-30}{1,7} mph{2,7} hp{3,15:C}" & vbCrLf, name, mph, hp, price) End Sub ' Set tab stops inside a ListBox. Private Sub SetListBoxTabs(ByVal lst As ListBox, ByVal tabs As IList(Of Integer)) ' Make sure the control will use them. lst.UseTabStops = True lst.UseCustomTabOffsets = True ' Get the control's tab offset collection. Dim offsets As ListBox.IntegerCollection = ListBox12.CustomTabOffsets ' Define the tabs. For Each tab As Integer In tabs offsets.Add(tab) Next tab End Sub Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer()) As IntPtr End Function Private Const EM_SETTABSTOPS As Integer = &HCB ' Set tab stops inside a TextBox. Private Sub SetTextBoxTabs(ByVal txt As TextBox, ByVal tabs As Integer()) SendMessage(txt.Handle, EM_SETTABSTOPS, tabs.Length, tabs) End Sub Private Sub Frm_retan_record_Load(sender As Object, e As EventArgs) Handles MyBase.Load DGV1.ReadOnly = True SetListBoxTabs(ListBox12, New Integer() {20, 45, 70}) ' Me.MdiParent = FrmMDI Dim type As Type = DGV1.GetType() Dim pi As PropertyInfo = type.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.NonPublic) pi.SetValue(DGV1, True, Nothing) Dim conn As New SqlConnection Dim DR As SqlDataReader 'connstring = "Data Source=127.0.0.1;Persist Security Info=True;User ID=sa;Password=Lafayette11;Initial Catalog=maindb_hy2014" conn.ConnectionString = connstring conn.Open() cmd.Connection = conn sql = "Select Top(300) card As 卡号, Date As 日期, cust As 客户, article As 品名, source As 皮源, selection As 选级, qty As 数量, sammy_qty As 挤水片数, sammy_qty1 AS 挤水尺数, chem, no, no1, date1, no2 From HT_WB where not(cust like N'%N/A%') order by date desc " cmd.CommandText = sql da.SelectCommand = cmd da.Fill(dt) DGV1.DataSource = dt ' DGV1.SelectionMode = DataGridViewSelectionMode.FullRowSelect 'Dim DT1 As New DataTable 'sql = "SELECT MONTH AS 时间, SUM(Expr1) AS 重量, CLASS AS 类别, TYPE AS 染色, 颜色 FROM (SELECT MONTH, SUM(TOTAL) / 2 AS Expr1, CLASS, TYPE, CASE WHEN COLOR LIKE '%黑%' THEN '黑色' WHEN COLOR LIKE '%白%' THEN '白色' ELSE '彩色' END AS 颜色 FROM RT_RETAN_RECORD_D GROUP BY MONTH, CLASS, TYPE, COLOR) AS derivedtbl_1 GROUP BY MONTH, CLASS, TYPE, 颜色 ORDER BY 时间, 染色, 颜色" 'cmd.CommandText = sql 'da.SelectCommand = cmd 'da.Fill(DT1) 'DGV2.DataSource = DT1 set_grid() End Sub Function RemoveRightNonDigits(input As String) As String For i As Integer = input.Length To 1 Step -1 ' 检查当前字符是否为数字或非中文字符 If Char.IsDigit(input(i - 1)) Then ' 保留到最后一个数字为止的部分 Return input.Substring(0, i) ElseIf IsChinese(input(i - 1)) Then ' 如果是中文字符,继续查找 Return input.Substring(0, i - 1) ' 只去掉最后一个中文字符 End If Next ' 如果没有数字,返回空字符串 Return "" End Function Function IsChinese(ch As Char) As Boolean Return Char.GetUnicodeCategory(ch) = Globalization.UnicodeCategory.OtherLetter AndAlso ch >= ChrW(&H4E00) AndAlso ch <= ChrW(&H9FFF) End Function Private Sub DGV1_SelectionChanged(sender As Object, e As EventArgs) Handles DGV1.SelectionChanged lb1.Items.Clear() ListBox1.Items.Clear() ListBox2.Items.Clear() ListBox3.Items.Clear() ListBox4.Items.Clear() ListBox5.Items.Clear() ListBox6.Items.Clear() ListBox7.Items.Clear() ListBox8.Items.Clear() ListBox9.Items.Clear() ListBox10.Items.Clear() ListBox11.Items.Clear() ListBox12.Items.Clear() ListBox13.Items.Clear() ListBox14.Items.Clear() ListBox15.Items.Clear() ListBox16.Items.Clear() ListBox17.Items.Clear() ListBox18.Items.Clear() ListBox19.Items.Clear() ListBox20.Items.Clear() ListBox21.Items.Clear() TextBox1.Text = "" TextBox2.Text = "" TextBox3.Text = "" Label10.Text = "" Label12.Text = "" Label9.Text = "" sql = “select CASE WHEN CHARINDEX(',', comment) > 0 AND CHARINDEX(',', comment, CHARINDEX(',', comment) + 1) > 0 THEN CASE WHEN PATINDEX('%[a-zA-Z]%', REVERSE(SUBSTRING(comment, CHARINDEX(',', comment) + 1, CHARINDEX(',', comment, CHARINDEX(',', comment) + 1) - CHARINDEX(',', comment) - 1))) > 0 THEN LEFT(SUBSTRING(comment, CHARINDEX(',', comment) + 1, CHARINDEX(',', comment, CHARINDEX(',', comment) + 1) - CHARINDEX(',', comment) - 1), LEN(SUBSTRING(comment, CHARINDEX(',', comment) + 1, CHARINDEX(',', comment, CHARINDEX(',', comment) + 1) - CHARINDEX(',', comment) - 1)) - PATINDEX('%[a-zA-Z]%', REVERSE(SUBSTRING(comment, CHARINDEX(',', comment) + 1, CHARINDEX(',', comment, CHARINDEX(',', comment) + 1) - CHARINDEX(',', comment) - 1))) + 1) ELSE SUBSTRING(comment, CHARINDEX(',', comment) + 1, CHARINDEX(',', comment, CHARINDEX(',', comment) + 1) - CHARINDEX(',', comment) - 1) END ELSE '' END AS 尺数,CASE WHEN CHARINDEX(',', comment) > 0 THEN SUBSTRING(comment, 1, CHARINDEX(',', comment) - 1) ELSE comment END AS 皮源, CASE WHEN CHARINDEX(',', comment) > 0 AND CHARINDEX(',', comment, CHARINDEX(',', comment) + 1) > 0 THEN SUBSTRING(comment, CHARINDEX(',', comment, CHARINDEX(',', comment) + 1) + 1, LEN(comment)) ELSE '' END AS 片数, work_name, work_id, unit, qty, piece FROM HT_workshop3 WHERE (CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "') and (comment IS NOT NULL) AND (work_name LIKE N'蓝皮%') ORDER BY date DESC” cmd.CommandText = sql If cmd.ExecuteScalar Is Nothing Then Else TextBox1.Text = cmd.ExecuteScalar End If sql = "SELECT CASE WHEN CHARINDEX(',', comment) > 0 THEN SUBSTRING(comment, CHARINDEX(',', comment) + 1, LEN(comment)) ELSE '' END AS 尺数, CASE WHEN CHARINDEX(',', comment) > 0 THEN SUBSTRING(comment, 1, CHARINDEX(',', comment) - 1) ELSE comment END AS 片数, card, name, product, code1, spec, work_name, work_id, unit, qty, piece FROM HT_workshop3 WHERE (CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "') AND (work_name LIKE N'%打%') AND (dep = N'二车间') ORDER BY date DESC" cmd.CommandText = sql If cmd.ExecuteScalar Is Nothing Then Else TextBox2.Text = cmd.ExecuteScalar End If sql = "SELECT CASE WHEN CHARINDEX(' ', comment) > 0 THEN SUBSTRING(comment, CHARINDEX(' ', comment) + 1, LEN(comment)) ELSE '' END AS 尺数, CASE WHEN CHARINDEX('', comment) > 0 THEN SUBSTRING(comment, 1, CHARINDEX(' ', comment) - 1) ELSE comment END AS 片数, card, name, product, code1, spec, work_name, work_id, unit, qty, piece FROM HT_workshop3 WHERE (CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "') AND (work_name LIKE N'%打尺%') AND (dep = N'三车间') ORDER BY date DESC" cmd.CommandText = sql If cmd.ExecuteScalar Is Nothing Then Else TextBox3.Text = Microsoft.VisualBasic.Trim(cmd.ExecuteScalar) End If Dim wb As Double = 0 Dim crust As Double = 0 Dim finish As Double = 0 If (TextBox1.Text <> "") Then wb = RemoveRightNonDigits(TextBox1.Text) If (TextBox2.Text <> "") Then If IsNumeric(RemoveRightNonDigits(TextBox2.Text)) Then crust = RemoveRightNonDigits(TextBox2.Text) End If End If Label10.Text = (crust / wb * 100).ToString("f2") & "%" If IsNumeric(TextBox3.Text) Then Label12.Text = (TextBox3.Text / wb * 100).ToString("f2") & "%" '----染色 sql = "SELECT year(in_date) as year,MONTH(in_DATE) AS MONTH, DAY(in_DATE) AS DAY,in_date,out_date,out_qty,piece FROM ht_retan WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' ORDER BY in_DATE" cmd.CommandText = sql Dim DR As SqlDataReader DR = cmd.ExecuteReader While DR.Read 'Label1.Text = Label1.Text & vbCrLf & DR("MONTH") & "/" & DR("DAY") 'Label46.Text = Label46.Text & DR("TYPE") ' lb1.Items.Add(DR("year") & "/" & DR("MONTH") & "/" & DR("DAY") & " " & DR("out_qty") & "片") lb1.Items.Add("进鼓" & DR("in_date") & " " & DR("piece") & "片") lb1.Items.Add("出鼓" & DR("out_date") & " " & DR("out_qty") & "片") End While DR.Close() '--蓝皮 sql = "SELECT date,source,selection,sammy_qty,sammy_qty1 FROM ht_wb WHERE CARD='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox21.Items.Add((DR("date") & "-" & DR("source")) & "/" & DR("selection")) ListBox21.Items.Add((DR("date") & "-" & DR("sammy_qty")) & "/" & DR("sammy_qty1")) End While DR.Close() '--打软 sql = "SELECT date,p1,sf FROM ht_vibration WHERE CARD='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox5.Items.Add((DR("date") & "-" & DR("p1")) & "片" & DR("sf") & "尺") End While DR.Close() '--真空 sql = "SELECT date,machine,piece FROM ht_vacumn WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox3.Items.Add(DR("machine") & DR("date") & " " & DR("piece")) End While DR.Close() '--磨皮 sql = "SELECT date,work_name,piece FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%磨%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox6.Items.Add((DR("date") & DR("work_name")) & " " & DR("piece")) End While DR.Close() '--3打软 sql = "SELECT date,work_name,piece,comment FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%打软%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox19.Items.Add((DR("date") & DR("work_name")) & " " & DR("piece")) End While DR.Close() '--真空 sql = "SELECT date,work_name,piece FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%真空%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox14.Items.Add((DR("date") & DR("work_name")) & " " & DR("piece")) End While DR.Close() '--拉网 sql = "SELECT date,work_name,piece FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%绷%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox8.Items.Add((DR("date") & DR("work_name")) & " " & DR("piece")) End While DR.Close() '--压板 sql = "SELECT date,work_name,piece FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%压%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox9.Items.Add((DR("date") & DR("work_name")) & " " & DR("piece")) End While DR.Close() '--喷台 sql = "SELECT date,work_name,qty FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%喷%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox10.Items.Add((DR("date") & DR("work_name") & " -- " & DR("qty"))) End While DR.Close() '--摔软 sql = "SELECT date,work_name,qty FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%摔%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox16.Items.Add((DR("date") & DR("work_name") & " -- " & DR("qty"))) End While DR.Close() '--滚光 sql = "SELECT date,work_name,qty FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%滚%' and work_name not like N'%油%' and work_name not like N'%浆%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox15.Items.Add((DR("date") & DR("work_name") & " -- " & DR("qty"))) End While DR.Close() '--刷浆 sql = "SELECT date,work_name,piece FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%刷浆%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox17.Items.Add((DR("date") & DR("work_name")) & " " & DR("piece")) End While DR.Close() '--修边 sql = "SELECT date,work_name,piece FROM ht_workshop3 WHERE CARD=N'" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%修%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox18.Items.Add((DR("date") & DR("work_name")) & " " & DR("piece")) End While DR.Close() '--量尺 sql = "SELECT date,COMMENT FROM ht_workshop3 WHERE card='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%打尺%' ORDER BY DATE" sql = " SELECT date, p, dep, card, name, product, code1, spec, work_name, CASE WHEN CHARINDEX(' ', comment) > 0 THEN SUBSTRING(comment, 1, CHARINDEX(' ', comment) - 1) ELSE comment END AS 片数, CASE WHEN CHARINDEX(' ', comment) > 0 THEN trim(SUBSTRING(comment, CHARINDEX(' ', comment) + 1, LEN(comment) - CHARINDEX(' ', comment))) ELSE '' END AS 尺数, work_id, unit, qty, piece, comment FROM HT_workshop3 WHERE card='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%打尺%' ORDER BY date DESC" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox12.Items.Add(DR("date") & "-" & DR("片数") & "片-" & DR("尺数") & "尺") End While DR.Close() '--滚油蜡 sql = "SELECT date,COMMENT,work_name FROM ht_workshop3 WHERE card='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' and work_name like N'%滚油%' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ListBox20.Items.Add(DR("date") & vbTab & DR("work_name")) End While DR.Close() '--销售 sql = "SELECT date,cust,coin,price,qty FROM ht_sale_k3 WHERE lot='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "' ORDER BY DATE" cmd.CommandText = sql DR = cmd.ExecuteReader While DR.Read ' ListBox13.Items.Add(DR("date") & DR("cust") & DR("qty") & "尺" & DR("coin") & DR("price")) ListBox13.Items.Add(DR("date") & DR("cust") & DR("qty") & "尺") End While DR.Close() sql = "SELECT HT_ChemOut.date as 日期, HT_ChemOut.name as 品名,cast(SUM(HT_ChemOut.qty) as numeric(10,1)) AS 数量, cast(AVG(HT_Chem_In.price) as numeric(10,1)) AS 单价 FROM HT_ChemOut LEFT OUTER JOIN HT_Chem_In ON HT_ChemOut.name = HT_Chem_In.name WHERE (HT_ChemOut.dep = N'三车间') AND (HT_ChemOut.card2='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "') GROUP BY HT_ChemOut.date, HT_ChemOut.name, HT_ChemOut.no" cmd.CommandText = sql dt = New DataTable da.Fill(dt) DGV_finish.DataSource = dt sql = "SELECT HT_ChemOut.date AS 日期, HT_ChemOut.name AS 品名, HT_Chem_Main.type1, CAST(SUM(HT_ChemOut.qty) AS numeric(10, 1)) AS 数量, CAST(AVG(HT_Chem_In_1.price) AS numeric(10, 1)) AS 单价 FROM HT_ChemOut LEFT OUTER JOIN HT_Chem_Main ON HT_ChemOut.name = HT_Chem_Main.sys_name LEFT OUTER JOIN (SELECT name, AVG(price) AS price FROM HT_Chem_In GROUP BY name) AS ht_chem_in_1 ON HT_ChemOut.name = ht_chem_in_1.name WHERE (HT_ChemOut.card1='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "') GROUP BY HT_ChemOut.date, HT_ChemOut.name, HT_ChemOut.no, HT_Chem_Main.type1" sql = "SELECT HT_ChemOut.date AS 日期, HT_ChemOut.name AS 品名, HT_Chem_Main.type1, CAST(SUM(HT_ChemOut.qty) AS numeric(10, 1)) AS 数量, CAST(AVG(ht_chem_in_1.price) AS numeric(10, 1)) AS 单价, ht_retanrcp_1.weight, HT_ChemOut.card1, CAST(SUM(HT_ChemOut.qty) / ht_retanrcp_1.weight AS numeric(10, 1)) AS 比例 FROM HT_ChemOut LEFT OUTER JOIN (SELECT CASE WHEN CHARINDEX(' ', no) > 0 THEN SUBSTRING(no, 1, CHARINDEX(' ', no) - 1) ELSE no END AS result, weight FROM HT_RetanRcp) AS ht_retanrcp_1 ON HT_ChemOut.card1 = ht_retanrcp_1.result LEFT OUTER JOIN HT_Chem_Main ON HT_ChemOut.name = HT_Chem_Main.sys_name LEFT OUTER JOIN (SELECT name, AVG(price) AS price FROM HT_Chem_In GROUP BY name) AS ht_chem_in_1 ON HT_ChemOut.name = ht_chem_in_1.name WHERE (HT_ChemOut.card1 like '" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "%') GROUP BY HT_ChemOut.date, HT_ChemOut.name, HT_Chem_Main.type1, ht_retanrcp_1.weight, HT_ChemOut.card1 ORDER BY HT_Chem_Main.type1" cmd.CommandText = sql dt = New DataTable da.Fill(dt) DGV_Chem.DataSource = dt sql = "SELECT rcp_no + '--' + no FROM HT_RetanRcp WHERE (no like '%" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "%')" cmd.CommandText = sql If cmd.ExecuteScalar Is Nothing Then TextBox5.Text = "" Else TextBox5.Text = cmd.ExecuteScalar.ToString End If sql = "select type1 as 类型,SUM(比例) AS 比例,SUM(数量 * 单价) AS 金额 from ( SELECT HT_ChemOut.date AS 日期, HT_ChemOut.name AS 品名, HT_Chem_Main.type1, CAST(SUM(HT_ChemOut.qty) AS numeric(10, 1)) AS 数量, CAST(AVG(ht_chem_in_1.price) AS numeric(10, 1)) AS 单价, ht_retanrcp_1.weight, HT_ChemOut.card1, CAST(SUM(HT_ChemOut.qty) / ht_retanrcp_1.weight AS numeric(10, 1)) AS 比例 FROM HT_ChemOut LEFT OUTER JOIN (SELECT CASE WHEN CHARINDEX(' ', no) > 0 THEN SUBSTRING(no, 1, CHARINDEX(' ', no) - 1) ELSE no END AS result, weight FROM HT_RetanRcp) AS ht_retanrcp_1 ON HT_ChemOut.card1 = ht_retanrcp_1.result LEFT OUTER JOIN HT_Chem_Main ON HT_ChemOut.name = HT_Chem_Main.sys_name LEFT OUTER JOIN (SELECT name, AVG(price) AS price FROM HT_Chem_In GROUP BY name) AS ht_chem_in_1 ON HT_ChemOut.name = ht_chem_in_1.name WHERE (HT_ChemOut.card1='" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "') GROUP BY HT_ChemOut.date, HT_ChemOut.name, HT_Chem_Main.type1, ht_retanrcp_1.weight, HT_ChemOut.card1 ) as z GROUP BY type1 ORDER BY 金额 DESC" sql = "SELECT type1 AS 类型, SUM(百分比) AS 比例, SUM(数量 * 单价) AS 金额,cast(SUM(数量 * 单价) * 100 / SUM(SUM(数量 * 单价)) OVER () as numeric(10,2)) AS 金额比例 FROM (SELECT HT_ChemOut.date AS 日期, HT_ChemOut.name AS 品名, HT_Chem_Main.type1, CAST(SUM(HT_ChemOut.qty) AS numeric(10, 1)) AS 数量, CAST(SUM(HT_ChemOut.qty) / ht_retanrcp_1.weight * 100 AS numeric(10, 2)) AS 百分比, CAST(AVG(ht_chem_in_1.price) AS numeric(10, 1)) AS 单价, HT_ChemOut.card1, ht_retanrcp_1.weight FROM HT_ChemOut LEFT OUTER JOIN (SELECT result AS no, AVG(weight) AS weight FROM (SELECT CASE WHEN CHARINDEX(' ', no) > 0 THEN SUBSTRING(no, 1, CHARINDEX(' ', no) - 1) ELSE no END AS result, weight FROM HT_RetanRcp) AS z_1 GROUP BY result) AS ht_retanrcp_1 ON HT_ChemOut.card1 = ht_retanrcp_1.no LEFT OUTER JOIN HT_Chem_Main ON HT_ChemOut.name = HT_Chem_Main.sys_name LEFT OUTER JOIN (SELECT name, AVG(price) AS price FROM HT_Chem_In GROUP BY name) AS ht_chem_in_1 ON HT_ChemOut.name = ht_chem_in_1.name WHERE (HT_ChemOut.card1 like '" & DGV1.Rows(DGV1.CurrentRow.Index).Cells("卡号").Value & "%') GROUP BY HT_ChemOut.date, HT_ChemOut.name, HT_Chem_Main.type1, HT_ChemOut.card1, ht_retanrcp_1.weight) AS z GROUP BY type1 order by SUM(数量 * 单价) * 100 / SUM(SUM(数量 * 单价)) OVER () desc" cmd.CommandText = sql dt = New DataTable da.Fill(dt) Dim myRow As DataRow myRow = dt.NewRow If IsDBNull(dt.Compute("sum(金额)", "")) Then myRow(2) = 0 Else myRow(2) = Math.Round(dt.Compute("sum(金额)", ""), 1) End If If IsDBNull(dt.Compute("sum(比例)", "")) Then myRow(1) = 0 Else myRow(1) = Math.Round(dt.Compute("sum(比例)", ""), 1) End If myRow(0) = "合计" dt.Rows.InsertAt(myRow, 0) dgv_retan_sum.DataSource = dt End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '-----顏色查詢 sql = "Select Case Top(200) card As 卡号, Date As 日期, cust As 客户, article As 品名, source As 皮源, selection As 选级, qty As 数量, sammy_qty As 片数, sammy_qty1 AS 尺数, chem, no, no1, date1, no2 From HT_WB WHERE (card like N'%" & txtColor.Text & "%') and not(cust like N'%N/A%') " sql = "Select Date As 下单日,duedate As 交期, cust As 客户,article As 品名, thick As 厚度, qty As 订单数量, order_no As 订单号,work_no As 型体号,card As 卡号 FROM HT_orders WHERE article Like N'%" & txtcard.Text & "%' ORDER BY date DESC, card" sql = "Select Top(300) card As 卡号, Date As 日期, cust As 客户, article As 品名, source As 皮源, selection As 选级, qty As 数量, sammy_qty As 挤水片数, sammy_qty1 AS 挤水尺数, chem, no, no1, date1, no2 From HT_WB where not(cust like N'%N/A%') and (article Like N'%" & txtColor.Text & "%' ) order by date desc " Dim DT As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(DT) DGV1.DataSource = DT set_grid() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '-----卡号查询 sql = "select date as 下单日,duedate as 交期, cust as 客户,article AS 品名, thick as 厚度, qty as 订单数量, order_no as 订单号,work_no as 型体号,card as 卡号 FROM ht_k3_orders WHERE card like N'%" & txtcard.Text & "%' ORDER BY date DESC, card" Dim DT As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(DT) DGV1.DataSource = DT set_grid() End Sub Private Sub set_grid() DGV1.Columns(0).Width = 120 DGV1.Columns(1).Width = 120 DGV1.Columns(2).Width = 120 DGV1.Columns(3).Width = 250 DGV1.Columns(4).Width = 150 DGV1.Columns(5).Width = 80 DGV1.Columns(6).Width = 80 DGV1.Columns(7).Width = 80 DGV1.Columns(8).Width = 80 'DGV1.Columns(9).Width = 80 'DGV1.Columns(10).Width = 80 'DGV1.Columns(11).Width = 80 'DGV1.Columns(12).Width = 80 'DGV1.Columns(13).Width = 80 'DGV1.Columns(14).Width = 80 'DGV1.Columns(15).Width = 80 End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click sql = "SELECT derivedtbl_1.DATE AS 日期, derivedtbl_1.CUST AS 客户, derivedtbl_1.CARD AS 卡号, " & " derivedtbl_1.S_CARD As 简短卡号, derivedtbl_1.THICKNESS As 厚度, derivedtbl_1.COLOR As 颜色, " & " derivedtbl_1.SOURCE AS 皮源, derivedtbl_1.ORDER_QTY AS 订单数量, derivedtbl_1.WB_WEIGHT AS 蓝皮重, " & " derivedtbl_1.SPEC As 规格, derivedtbl_1.PRICE As 蓝皮价, derivedtbl_1.PRICE1 As 单价, " & " derivedtbl_1.TECH AS 技衔员, derivedtbl_1.CLASS AS 类别, derivedtbl_1.TYPE AS 染色, " & " RT_PACKAGE.SF As 包装尺数, RT_PACKAGE.B As 是否取完 " & " FROM (SELECT TOP (100) PERCENT RT_RETAN_RECORD.DATE, RT_RETAN_RECORD.CUST, " & " RT_RETAN_RECORD.CARD, RT_RETAN_RECORD.S_CARD, RT_RETAN_RECORD.THICKNESS, " & " RT_RETAN_RECORD.COLOR, RT_RETAN_RECORD.SOURCE, RT_RETAN_RECORD.ORDER_QTY, " & " RT_RETAN_RECORD.WB_WEIGHT, RT_RETAN_RECORD.SPEC, RT_RETAN_RECORD.PRICE, " & " CASE WHEN WB_WEIGHT = 0 THEN 0 WHEN WB_WEIGHT Is NULL " & " Then 0 Else CAST(PRICE / (WB_WEIGHT) As NUMERIC(10, 2)) End As PRICE1, " & " RT_RETAN_RECORD.TECH, RT_RETAN_RECORD_D.DATE AS Expr1, RT_RETAN_RECORD_D.CLASS, " & " RT_RETAN_RECORD_D.TYPE " & " FROM RT_RETAN_RECORD LEFT OUTER JOIN " & " RT_RETAN_RECORD_D On RT_RETAN_RECORD.S_CARD = RT_RETAN_RECORD_D.CARD " & " ORDER BY RT_RETAN_RECORD.DATE DESC) AS derivedtbl_1 LEFT OUTER JOIN " & " RT_PACKAGE On derivedtbl_1.CARD = RT_PACKAGE.CARD " & " WHERE (derivedtbl_1.Expr1 Is Not NULL) And (YEAR(derivedtbl_1.DATE) > 2018) " & " ORDER BY 日期 DESC " sql = "SELECT RT_RETAN_RECORD.DATE AS 日期, RT_RETAN_RECORD.CUST AS 客户, " & " RT_RETAN_RECORD.CARD AS 卡号, RT_RETAN_RECORD.S_CARD AS 短卡号, " & " RT_RETAN_RECORD.THICKNESS AS 厚度, RT_RETAN_RECORD.COLOR AS 颜色, " & " RT_RETAN_RECORD.SOURCE AS 皮源, RT_RETAN_RECORD.ORDER_QTY AS 订单数, " & " RT_RETAN_RECORD.WB_WEIGHT AS 蓝皮重, RT_RETAN_RECORD.SPEC AS 规格, RT_RETAN_RECORD.PRICE AS 总价, " & " CASE WHEN WB_WEIGHT = 0 THEN 0 WHEN WB_WEIGHT IS NULL THEN 0 ELSE CAST(PRICE / (WB_WEIGHT) " & " AS NUMERIC(10, 2)) END AS 单价, RT_RETAN_RECORD.TECH AS 技术员, RT_RETAN_RECORD_D.DATE AS 日期1, " & " RT_RETAN_RECORD_D.CLASS AS 类别, RT_RETAN_RECORD_D.TYPE AS 类别1 " & " FROM RT_RETAN_RECORD LEFT OUTER JOIN " & " RT_RETAN_RECORD_D ON RT_RETAN_RECORD.CARD = RT_RETAN_RECORD_D.CARD " & " WHERE RT_RETAN_RECORD.cust like N'%" & txtCust.Text & "%' ORDER BY 日期 DESC, 卡号" sql = "Select Top(300) card As 卡号, Date As 日期, cust As 客户, article As 品名, source As 皮源, selection As 选级, qty As 数量, sammy_qty As 挤水片数, sammy_qty1 AS 挤水尺数, chem, no, no1, date1, no2 From HT_WB where not(cust like N'%N/A%') and (article Like N'%" & txtCust.Text & "%' ) order by date desc " Dim DT As New DataTable cmd.CommandText = sql da.SelectCommand = cmd da.Fill(DT) DGV1.DataSource = DT set_grid() End Sub Private Sub DGV1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DGV1.CellContentClick End Sub End Class