123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- Imports System.Data.SqlClient
- Imports System.Reflection
- Public Class Frm_pu_measure
- Dim cmd As New SqlCommand
- Dim da As New SqlDataAdapter
- Dim dt As New DataTable
- Dim sql As String
- Dim conn As New SqlConnection
- Dim DR As SqlDataReader
- Private Sub Frm_pu_measure_Load(sender As Object, e As EventArgs) Handles MyBase.Load
-
- 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)
-
-
-
- conn.ConnectionString = connstring
- conn.Open()
-
-
- cmd.Connection = conn
-
-
- sql = "SELECT RT_PU_MEASURE1_SYS.card AS 卡号, RT_RETAN_RECORD.TECH AS 技术员, RT_RETAN_RECORD.CUST AS 客户, " &
- " RT_RETAN_RECORD.COLOR AS 颜色, RT_RETAN_RECORD.THICKNESS AS 厚度,RT_RETAN_RECORD.WB_WEIGHT AS 蓝皮重, SUM(RT_PU_MEASURE1_SYS.sf) AS 中检量尺, " &
- " ROUND(SUM(RT_PU_MEASURE1_SYS.sf) / (RT_RETAN_RECORD.WB_WEIGHT/2), 1) AS 得革率, " &
- " ROUND(RT_RETAN_RECORD.PRICE / RT_RETAN_RECORD.WB_WEIGHT, 1) AS '蓝皮单价(斤)', " &
- " ROUND(RT_RETAN_RECORD.PRICE / SUM(RT_PU_MEASURE1_SYS.sf), 1) AS 每尺蓝皮成本, RT_RETAN_RECORD.SOURCE AS 皮源 " &
- " FROM RT_PU_MEASURE1_SYS LEFT OUTER JOIN " &
- " RT_RETAN_RECORD ON RIGHT(RT_PU_MEASURE1_SYS.card, 10) = RIGHT(RT_RETAN_RECORD.CARD, 10) " &
- " LEFT OUTER JOIN " &
- " RT_RETAN_RECORD_D ON RIGHT(RT_PU_MEASURE1_SYS.card, 10) = RIGHT(RT_RETAN_RECORD_D.CARD, 10) " &
- " WHERE (year(RT_PU_MEASURE1_SYS.date) = 2020) " &
- " GROUP BY RT_PU_MEASURE1_SYS.card, RT_RETAN_RECORD_D.CLASS, RT_RETAN_RECORD_D.TYPE, " &
- " RT_RETAN_RECORD.TECH, RT_RETAN_RECORD.WB_WEIGHT, RT_RETAN_RECORD.PRICE, " &
- " RT_RETAN_RECORD.SOURCE, RT_RETAN_RECORD.COLOR, RT_RETAN_RECORD.CUST, " &
- " ROUND(RT_RETAN_RECORD.PRICE / RT_RETAN_RECORD.WB_WEIGHT, 1),rt_retan_record.thickness " &
- " ORDER BY 卡号 "
- cmd.CommandText = sql
- da.SelectCommand = cmd
- da.Fill(dt)
-
-
- dt.Columns.Add("基础")
- dt.Columns.Add("染料")
- dt.Columns.Add("油脂")
- dt.Columns.Add("其他")
- dt.Columns.Add("合计")
-
-
-
- For x As Integer = 0 To dt.Rows.Count - 1
-
- 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, 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) = '" & Microsoft.VisualBasic.Right(dt.Rows(x).Item("卡号"), 10) & "')) " &
- " 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)
-
-
- For y As Integer = 0 To dt1.Rows.Count - 1
-
- Select Case dt1.Rows(y).Item("类别")
- Case "基础"
- dt.Rows(x).Item("基础") = Math.Round(dt1.Rows(y).Item("单位成本") / dt.Rows(x).Item("得革率"), 2)
- Case "染料"
- dt.Rows(x).Item("染料") = Math.Round(dt1.Rows(y).Item("单位成本") / dt.Rows(x).Item("得革率"), 2)
- Case "油脂"
- dt.Rows(x).Item("油脂") = Math.Round(dt1.Rows(y).Item("单位成本") / dt.Rows(x).Item("得革率"), 2)
- Case "其他"
- dt.Rows(x).Item("其他") = Math.Round(dt1.Rows(y).Item("单位成本") / dt.Rows(x).Item("得革率"), 2)
- End Select
- Next
-
-
-
- If IsDBNull(dt.Rows(x).Item("基础")) Then
- dt.Rows(x).Item("基础") = 0
- End If
-
- If IsDBNull(dt.Rows(x).Item("染料")) Then
- dt.Rows(x).Item("染料") = 0
- End If
-
- If IsDBNull(dt.Rows(x).Item("油脂")) Then
- dt.Rows(x).Item("油脂") = 0
- End If
-
- If IsDBNull(dt.Rows(x).Item("其他")) Then
- dt.Rows(x).Item("其他") = 0
- End If
-
-
-
- dt.Rows(x).Item("合计") = Val(dt.Rows(x).Item("基础").ToString) + Val(dt.Rows(x).Item("油脂").ToString) + Val(dt.Rows(x).Item("染料").ToString) + Val(dt.Rows(x).Item("其他").ToString)
-
-
- Next x
-
-
-
-
-
-
-
-
-
-
-
-
- dgv1.DataSource = dt
-
-
- dgv1.Columns(0).Width = 150
- dgv1.Columns(1).Width = 60
- dgv1.Columns(2).Width = 60
- dgv1.Columns(3).Width = 60
- dgv1.Columns(9).Width = 80
- dgv1.Columns(4).Width = 80
- dgv1.Columns(5).Width = 80
- dgv1.Columns(6).Width = 80
- dgv1.Columns(7).Width = 80
- dgv1.Columns(8).Width = 80
- dgv1.Columns(10).Width = 200
-
-
- sql = "SELECT card1 as 新卡号, SUM(sf) AS 尺数 FROM RT_PU_MEASURE1_SYS GROUP BY card1 ORDER BY card1 DESC"
- Dim dt2 As New DataTable
- cmd.CommandText = sql
- da.SelectCommand = cmd
- da.Fill(dt2)
-
- dgv3.DataSource = dt2
-
-
-
- End Sub
-
- Private Sub dgv1_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv1.CellMouseUp
-
-
-
- Dim dt As New DataTable
-
- sql = "SELECT date as 日期,sf as 尺数, card1 as 新卡号, no as [k3单号] FROM RT_PU_MEASURE1_SYS where right(card,10)= '" & Microsoft.VisualBasic.Right(dgv1.Rows(dgv1.CurrentCell.RowIndex).Cells("卡号").Value, 10) & "'"
- cmd.CommandText = sql
- da.SelectCommand = cmd
- da.Fill(dt)
-
- dgv2.DataSource = dt
-
-
- dgv2.Columns(3).Width = 120
-
- End Sub
-
- Private Sub dgv4_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv4.CellMouseUp
-
-
-
-
- End Sub
-
- Private Sub dgv3_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv3.CellMouseUp
-
-
- Dim dt As New DataTable
-
- sql = "SELECT RT_PU_MEASURE1_SYS.date AS 日期, RT_PU_MEASURE1_SYS.sf AS 尺数, RT_PU_MEASURE1_SYS.card AS 卡号,RT_PU_MEASURE1_SYS.no AS k3单号, RT_RETAN_RECORD.SOURCE as 皮源, RT_RETAN_RECORD.TECH as 技术员,RT_RETAN_RECORD.THICKNESS as 厚度 FROM RT_PU_MEASURE1_SYS LEFT OUTER JOIN RT_RETAN_RECORD ON RT_PU_MEASURE1_SYS.card = RT_RETAN_RECORD.CARD where card1= '" & Microsoft.VisualBasic.Right(dgv3.Rows(dgv3.CurrentCell.RowIndex).Cells("新卡号").Value, 10) & "'"
- cmd.CommandText = sql
- da.SelectCommand = cmd
- da.Fill(dt)
-
-
- dgv4.DataSource = dt
-
- dgv4.Columns(1).Width = 80
- dgv4.Columns(2).Width = 150
- dgv4.Columns(3).Width = 120
-
-
- End Sub
- End Class
|