Nav apraksta
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

FrmMeasure.vb 85KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543
  1. Imports System.Data.SqlClient
  2. Imports System.Reflection
  3. Imports Microsoft.Office.Interop.Excel.XlPaperSize
  4. Imports Microsoft.Office.Interop.Excel.XlPageOrientation
  5. Imports Microsoft.Office.Interop.Excel.XlOrder
  6. Imports Microsoft.Office.Interop.Excel.XlPrintErrors
  7. Imports Microsoft.Office.Core.XlHAlign
  8. Public Class frmMeasure
  9. Dim cmd As New SqlCommand
  10. Dim da As New SqlDataAdapter
  11. Dim sql As String
  12. Dim colorArray(10) As Color
  13. Dim conn As New SqlConnection
  14. Private Sub FrmMeasure_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  15. If gUserName = "matchy" Then
  16. Button1.Visible = True
  17. Button2.Visible = True
  18. Button3.Visible = True
  19. dgv_su2.Visible = True
  20. dgv_TOTAL.Visible = True
  21. DGV_WB.Visible = True
  22. End If
  23. ' Me.MdiParent = FrmMDI
  24. Dim type As Type = dgv_measure.GetType()
  25. Dim pi As PropertyInfo = type.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.NonPublic)
  26. pi.SetValue(dgv_measure, True, Nothing)
  27. Dim DT1 As New DataTable
  28. Dim DT2 As New DataTable
  29. Dim DT3 As New DataTable
  30. conn.ConnectionString = connstring
  31. conn.Open()
  32. cmd.Connection = conn
  33. Dim dr As SqlDataReader
  34. dgv_measure.RowTemplate.Height = 30
  35. dgv_measure.AllowUserToAddRows = False
  36. 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"
  37. cmd.CommandText = sql
  38. dr = cmd.ExecuteReader
  39. While dr.Read
  40. ListBox1.Items.Add(dr("年") & "/" & dr("月"))
  41. End While
  42. dr.Close()
  43. End Sub
  44. Private Sub dgv1_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv1.CellMouseUp
  45. End Sub
  46. Private Sub dgv_measure_CellMouseUp(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgv_measure.CellMouseUp
  47. Dim dt1 As New DataTable
  48. sql = "SELECT class2 AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, CAST(SUM(price) / AVG(wb_weight) " &
  49. " AS numeric(10, 1)) AS 单位成本 " &
  50. " FROM (SELECT NO, CARD, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) " &
  51. " / AVG(ORDER_A) AS percents, " &
  52. " CASE WHEN class1 LIKE N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR " &
  53. " class1 LIKE N'%钛%') " &
  54. " THEN '染料' WHEN class1 = N'基础化工' THEN N'基础化工' ELSE '其他' END AS class2 " &
  55. " FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, " &
  56. " RT_SYS_CHEM_OUT.NO, RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, " &
  57. " RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.TYPE, RT_SYS_CHEM_OUT.UNIT, " &
  58. " RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, " &
  59. " RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD, RT_SYS_CHEM_OUT.DRUM, " &
  60. " RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID, RT_SYS_CHEM_MAIN.price, " &
  61. " RT_SYS_CHEM_MAIN.CLASS1 " &
  62. " FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN " &
  63. " RT_SYS_CHEM_MAIN ON " &
  64. " RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name " &
  65. " WHERE (RT_SYS_CHEM_OUT.CARD = '" & dgv_measure.Rows(dgv_measure.CurrentRow.Index).Cells("卡号").Value & "')) " &
  66. " AS derivedtbl_1 GROUP BY NO, CARD, P, CLASS1) AS derivedtbl_2 " &
  67. " GROUP BY CARD, P, class2 " &
  68. " ORDER BY 类别 DESC "
  69. cmd.CommandText = sql
  70. da.SelectCommand = cmd
  71. da.Fill(dt1)
  72. dgv1.DataSource = dt1
  73. End Sub
  74. Private Sub ListBox1_Click(sender As Object, e As EventArgs) Handles ListBox1.Click
  75. Dim dt1 As New DataTable
  76. Dim dt_MEASURE As New DataTable
  77. Dim p() As String
  78. ListBox2.Items.Clear()
  79. p = Split(ListBox1.Items(ListBox1.SelectedIndex).ToString, "/")
  80. Dim dr As SqlDataReader
  81. 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)"
  82. cmd.CommandText = sql
  83. dr = cmd.ExecuteReader
  84. While dr.Read
  85. ListBox2.Items.Add(dr("day"))
  86. End While
  87. dr.Close()
  88. End Sub
  89. Private Sub ListBox2_Click(sender As Object, e As EventArgs) Handles ListBox2.Click
  90. Dim dt_measure As New DataTable
  91. Dim p() As String
  92. p = Split(ListBox1.Items(ListBox1.SelectedIndex).ToString, "/")
  93. sql = "SELECT RT_MEASURE_DAILY.DATE AS 日期, RT_MEASURE_DAILY.CARD AS 卡号, RT_RETAN_RECORD.CUST AS 客户, " &
  94. " RT_RETAN_RECORD.TECH AS 技术员, RT_MEASURE_DAILY.COLOR AS 颜色, " &
  95. " RT_RETAN_RECORD.THICKNESS AS 厚度, RT_MEASURE_DAILY.SF AS 尺数, " &
  96. " RT_MEASURE_DAILY.WEIGHT AS 蓝皮重, RT_MEASURE_DAILY.SOURCE AS 皮源, " &
  97. " RT_MEASURE_DAILY.COMMENT1 AS 备注, cast(RT_RETAN_RECORD.PRICE/RT_MEASURE_DAILY.WEIGHT as numeric(10,1)) AS 蓝皮单价 " &
  98. " FROM RT_MEASURE_DAILY LEFT OUTER JOIN " &
  99. " 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) & "'" &
  100. " and day(RT_MEASURE_DAILY.date)='" & ListBox2.Items(ListBox2.SelectedIndex).ToString & "' ORDER BY 日期 DESC"
  101. cmd.CommandText = sql
  102. da.SelectCommand = cmd
  103. da.Fill(dt_measure)
  104. dt_measure.Columns.Add("基础")
  105. dt_measure.Columns.Add("染料")
  106. dt_measure.Columns.Add("油脂")
  107. dt_measure.Columns.Add("其他")
  108. dt_measure.Columns.Add("合计")
  109. dt_measure.Columns.Add("得革率")
  110. dt_measure.Columns.Add("量完尺数")
  111. dt_measure.Columns.Add("累加尺数")
  112. dt_measure.Columns.Add("每尺皮料")
  113. dt_measure.Columns.Add("每尺化料")
  114. dt_measure.Columns.Add("每尺染料")
  115. dt_measure.Columns.Add("每尺油脂")
  116. dt_measure.Columns.Add("每尺基础")
  117. dt_measure.Columns.Add("每尺其他")
  118. dgv_measure.DataSource = dt_measure '------打尺
  119. dgv_measure.Columns(0).Width = 80
  120. dgv_measure.Columns(1).Width = 130
  121. dgv_measure.Columns(2).Width = 80
  122. dgv_measure.Columns(3).Width = 70
  123. dgv_measure.Columns(4).Width = 120
  124. dgv_measure.Columns(5).Width = 60
  125. dgv_measure.Columns(6).Width = 80
  126. dgv_measure.Columns(7).Width = 80
  127. dgv_measure.Columns(8).Width = 80
  128. dgv_measure.Columns(9).Width = 60
  129. dgv_measure.Columns(10).Width = 80
  130. dgv_measure.Columns(11).Width = 65
  131. dgv_measure.Columns(12).Width = 65
  132. dgv_measure.Columns(13).Width = 65
  133. dgv_measure.Columns("每尺皮料").Width = 60
  134. dgv_measure.Columns("每尺化料").Width = 60
  135. dgv_measure.Columns("每尺染料").Width = 60
  136. dgv_measure.Columns("每尺基础").Width = 60
  137. dgv_measure.Columns("每尺其他").Width = 60
  138. dgv_measure.Columns("每尺油脂").Width = 60
  139. dgv_measure.Columns("基础").Visible = False
  140. dgv_measure.Columns("染料").Visible = False
  141. dgv_measure.Columns("油脂").Visible = False
  142. dgv_measure.Columns("其他").Visible = False
  143. dgv_measure.Columns("合计").Visible = False
  144. dgv_measure.Columns("累加尺数").Visible = False
  145. ' dgv_measure.Columns("备注").Visible = False
  146. ' dgv_measure.Columns("累加尺数").Visible = False
  147. Dim dr As SqlDataReader
  148. For x As Integer = 0 To dt_measure.Rows.Count - 1
  149. Dim dt1 As New DataTable
  150. 'If Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) = "1911133408" Then
  151. ' MsgBox("")
  152. 'End If
  153. 'sql = "select no from rt_sys_chem_out where card like '%" & Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) & "%'"
  154. 'cmd.CommandText = sql
  155. 'dr = cmd.ExecuteReader
  156. 'If dr.Read Then
  157. ' ' cal_chem
  158. 'End If
  159. 'dr.Close()
  160. 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) " &
  161. " AS numeric(10, 2)) AS 单位成本 " &
  162. " FROM (SELECT NO, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) / AVG(ORDER_A) " &
  163. " AS percents, CASE WHEN class1 LIKE N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR " &
  164. " class Like N'%钛%') THEN '染料' WHEN class1 = N'基础化工' THEN N'基础' ELSE '其他' END AS class " &
  165. " FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, " &
  166. " RT_SYS_CHEM_OUT.NO, RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, " &
  167. " RIGHT(RT_SYS_CHEM_OUT.CARD, 10) AS CARD1, RT_SYS_CHEM_OUT.NAME, " &
  168. " RT_SYS_CHEM_OUT.TYPE, RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, " &
  169. " RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, RT_SYS_CHEM_OUT.P, " &
  170. " RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID, " &
  171. " CASE WHEN new_price Is NULL THEN CAST(RT_SYS_CHEM_MAIN.price AS numeric(10, " &
  172. " 2)) ELSE CAST(new_price AS numeric(10, 2)) END AS price, " &
  173. " RT_SYS_CHEM_MAIN.CLASS1 " &
  174. " FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN " &
  175. " RT_SYS_CHEM_MAIN ON " &
  176. " RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name " &
  177. " WHERE (RIGHT(RT_SYS_CHEM_OUT.CARD,10) = '" & Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) & "')) AS derivedtbl_1 " &
  178. " GROUP BY CARD1, NO, P, CLASS1) AS derivedtbl_2 GROUP BY P, class ) as qq group by 类别"
  179. sql = "SELECT 类别, SUM(比例) AS 比例, SUM(单位成本) AS 单位成本
  180. FROM (SELECT class AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, CAST(SUM(price) / AVG(wb_weight) AS numeric(10, 2)) AS 单位成本
  181. FROM (SELECT NO, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) / AVG(ORDER_A) AS percents,
  182. CASE WHEN class1 LIKE N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR
  183. class1 LIKE N'%钛%') THEN '染料' WHEN class1 = N'基础化工' THEN N'基础' ELSE '其他' END AS class
  184. 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,
  185. 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,
  186. 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,
  187. 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))
  188. END AS price, RT_SYS_CHEM_MAIN.CLASS1
  189. FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN
  190. RT_SYS_CHEM_MAIN ON RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name
  191. WHERE (RIGHT(RT_SYS_CHEM_OUT.CARD, 10) = '" & Microsoft.VisualBasic.Right(dt_measure.Rows(x).Item("卡号"), 10) & "')) AS derivedtbl_1
  192. GROUP BY CARD1, NO, P, CLASS1) AS derivedtbl_2
  193. GROUP BY P, class) AS qq
  194. GROUP BY 类别"
  195. cmd.CommandText = sql
  196. da.SelectCommand = cmd
  197. da.Fill(dt1)
  198. For y As Integer = 0 To dt1.Rows.Count - 1
  199. Select Case dt1.Rows(y).Item("类别")
  200. Case "基础"
  201. dt_measure.Rows(x).Item("基础") = dt1.Rows(y).Item("单位成本")
  202. Case "染料"
  203. dt_measure.Rows(x).Item("染料") = dt1.Rows(y).Item("单位成本")
  204. Case "油脂"
  205. dt_measure.Rows(x).Item("油脂") = dt1.Rows(y).Item("单位成本")
  206. Case "其他"
  207. dt_measure.Rows(x).Item("其他") = dt1.Rows(y).Item("单位成本")
  208. End Select
  209. Next
  210. If IsDBNull(dt_measure.Rows(x).Item("基础")) Then
  211. dt_measure.Rows(x).Item("基础") = 0
  212. End If
  213. If IsDBNull(dt_measure.Rows(x).Item("染料")) Then
  214. dt_measure.Rows(x).Item("染料") = 0
  215. End If
  216. If IsDBNull(dt_measure.Rows(x).Item("油脂")) Then
  217. dt_measure.Rows(x).Item("油脂") = 0
  218. End If
  219. If IsDBNull(dt_measure.Rows(x).Item("其他")) Then
  220. dt_measure.Rows(x).Item("其他") = 0
  221. End If
  222. sql = "select sum(sf) as sf from rt_measure_daily where card='" & dt_measure.Rows(x).Item("卡号") & "' and comment1 like N'%完%'"
  223. cmd.CommandText = sql
  224. If IsDBNull(cmd.ExecuteScalar) Then
  225. sql = "select cast(sum(sf) as numeric(10,1)) as sf from rt_measure_daily where card='" & dt_measure.Rows(x).Item("卡号") & "'"
  226. cmd.CommandText = sql
  227. dt_measure.Rows(x).Item("累加尺数") = cmd.ExecuteScalar
  228. Else
  229. 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) & "'"
  230. cmd.CommandText = sql
  231. dt_measure.Rows(x).Item("量完尺数") = cmd.ExecuteScalar
  232. 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)
  233. 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)
  234. dt_measure.Rows(x).Item("得革率") = Math.Round((Val(dt_measure.Rows(x).Item("量完尺数").ToString) / dt_measure.Rows(x).Item("蓝皮重").ToString), 2)
  235. 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)
  236. 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)
  237. 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)
  238. 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)
  239. End If
  240. 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)
  241. Next
  242. For y As Integer = 0 To dgv_measure.Rows.Count - 1
  243. If IsDBNull(dgv_measure.Rows(y).Cells("量完尺数").Value) Then
  244. If y <> 0 Then
  245. dgv_measure.CurrentCell = dgv_measure.Rows(0).Cells(0)
  246. dgv_measure.Rows(y).Visible = False
  247. End If
  248. End If
  249. Next
  250. End Sub
  251. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  252. Dim dt_measure As New DataTable
  253. Dim p() As String
  254. p = Split(ListBox1.Items(ListBox1.SelectedIndex).ToString, "/")
  255. sql = "SELECT RT_MEASURE_DAILY.DATE AS 日期, right(RT_MEASURE_DAILY.CARD,10) AS 卡号, RT_RETAN_RECORD.CUST AS 客户, " &
  256. " RT_RETAN_RECORD.TECH AS 技术员, RT_MEASURE_DAILY.COLOR AS 颜色, " &
  257. " RT_RETAN_RECORD.THICKNESS AS 厚度, RT_MEASURE_DAILY.SF AS 尺数, " &
  258. " 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 皮源, " &
  259. " RT_MEASURE_DAILY.COMMENT1 AS 备注, cast(RT_RETAN_RECORD.PRICE/RT_MEASURE_DAILY.WEIGHT as numeric(10,1)) AS 蓝皮单价 " &
  260. " FROM RT_MEASURE_DAILY LEFT OUTER JOIN " &
  261. " 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"
  262. cmd.CommandText = sql
  263. da.SelectCommand = cmd
  264. da.Fill(dt_measure)
  265. dt_measure.Columns.Add("基础")
  266. dt_measure.Columns.Add("染料")
  267. dt_measure.Columns.Add("油脂")
  268. dt_measure.Columns.Add("其他")
  269. dt_measure.Columns.Add("合计")
  270. dt_measure.Columns.Add("得革率")
  271. dt_measure.Columns.Add("量完尺数")
  272. dt_measure.Columns.Add("累加尺数")
  273. dt_measure.Columns.Add("每尺皮料")
  274. dt_measure.Columns.Add("每尺化料")
  275. dt_measure.Columns.Add("每尺染料")
  276. dt_measure.Columns.Add("每尺油脂")
  277. dt_measure.Columns.Add("每尺基础")
  278. dt_measure.Columns.Add("每尺其他")
  279. dt_measure.Columns.Add("除染料")
  280. dgv_measure.DataSource = dt_measure '------打尺
  281. dgv_measure.Columns(0).Width = 100
  282. dgv_measure.Columns(1).Width = 130
  283. dgv_measure.Columns(2).Width = 100
  284. dgv_measure.Columns(3).Width = 70
  285. dgv_measure.Columns(4).Width = 120
  286. dgv_measure.Columns(5).Width = 60
  287. dgv_measure.Columns(6).Width = 80
  288. dgv_measure.Columns(7).Width = 80
  289. dgv_measure.Columns(8).Width = 80
  290. dgv_measure.Columns(10).Width = 80
  291. dgv_measure.Columns(11).Width = 65
  292. dgv_measure.Columns(12).Width = 65
  293. dgv_measure.Columns(13).Width = 65
  294. dgv_measure.Columns(14).Width = 65
  295. dgv_measure.Columns(15).Width = 75
  296. dgv_measure.Columns(16).Width = 75
  297. dgv_measure.Columns(17).Width = 75
  298. dgv_measure.Columns(18).Width = 75
  299. dgv_measure.Columns(19).Width = 75
  300. Dim dr As SqlDataReader
  301. For x As Integer = 0 To dt_measure.Rows.Count - 1
  302. Dim dt1 As New DataTable
  303. 'If dt_measure.Rows(x).Item("卡号") = "1909152600" Then
  304. ' MsgBox("")
  305. 'End If
  306. sql = "SELECT class2 AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, CAST(SUM(price) / AVG(wb_weight) " &
  307. " AS numeric(10, 2)) AS 单位成本 " &
  308. " FROM (SELECT NO, CARD, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) " &
  309. " / AVG(ORDER_A) AS percents, " &
  310. " CASE WHEN class1 LIKE N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR " &
  311. " class1 LIKE N'%钛%') " &
  312. " THEN '染料' WHEN class1 = N'基础化工' THEN N'基础' ELSE '其他' END AS class2 " &
  313. " FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, " &
  314. " RT_SYS_CHEM_OUT.NO, RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, " &
  315. " RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.TYPE, RT_SYS_CHEM_OUT.UNIT, " &
  316. " RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, " &
  317. " RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD, RT_SYS_CHEM_OUT.DRUM, " &
  318. " 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, " &
  319. " RT_SYS_CHEM_MAIN.CLASS1 " &
  320. " FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN " &
  321. " RT_SYS_CHEM_MAIN ON " &
  322. " RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name " &
  323. " WHERE (right(RT_SYS_CHEM_OUT.CARD,10) = '" & dt_measure.Rows(x).Item("卡号") & "')) " &
  324. " AS derivedtbl_1 GROUP BY NO, CARD, P, CLASS1) AS derivedtbl_2 " &
  325. " GROUP BY CARD, P, class2 " &
  326. " ORDER BY 类别 DESC "
  327. sql = "SELECT 类别, SUM(比例) AS 比例, SUM(单位成本) AS 单位成本 " &
  328. " FROM (SELECT TOP (100) PERCENT class2 AS 类别, CAST(SUM(percents) * 100 AS numeric(10, 1)) AS 比例, " &
  329. " CAST(SUM(price) / AVG(wb_weight) AS numeric(10, 2)) AS 单位成本 " &
  330. " FROM (SELECT NO, CARD, P, AVG(ORDER_A) AS wb_weight, SUM(WEIGHT * price) AS price, SUM(WEIGHT) " &
  331. " / AVG(ORDER_A) AS percents, " &
  332. " CASE WHEN class1 Like N'%油脂%' THEN '油脂' WHEN (class1 = N'染料' OR " &
  333. " class1 LIKE N'%钛%') " &
  334. " THEN '染料' WHEN class1 = N'基础化工' THEN N'基础' ELSE '其他' END AS class2 " &
  335. " FROM (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, " &
  336. " RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO, " &
  337. " RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, " &
  338. " RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.TYPE, " &
  339. " RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, " &
  340. " RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.WEIGHT1, " &
  341. " RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD, " &
  342. " RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.ORDER_A, " &
  343. " RT_SYS_CHEM_OUT.ID, CASE WHEN new_price IS NULL " &
  344. " THEN CAST(RT_SYS_CHEM_MAIN.price AS numeric(10, 2)) " &
  345. " ELSE CAST(new_price AS numeric(10, 2)) END AS price, " &
  346. " RT_SYS_CHEM_MAIN.CLASS1 " &
  347. " FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN " &
  348. " RT_SYS_CHEM_MAIN ON " &
  349. " RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name " &
  350. " WHERE (RIGHT(RT_SYS_CHEM_OUT.CARD, 10) = '" & dt_measure.Rows(x).Item("卡号") & "')) " &
  351. " AS derivedtbl_1 " &
  352. " GROUP BY NO, CARD, P, CLASS1) AS derivedtbl_2 " &
  353. " GROUP BY CARD, P, class2 ORDER BY 类别 DESC) AS qq GROUP BY 类别"
  354. cmd.CommandText = sql
  355. da.SelectCommand = cmd
  356. da.Fill(dt1)
  357. For y As Integer = 0 To dt1.Rows.Count - 1
  358. Select Case dt1.Rows(y).Item("类别")
  359. Case "基础"
  360. dt_measure.Rows(x).Item("基础") = dt1.Rows(y).Item("单位成本")
  361. Case "染料"
  362. dt_measure.Rows(x).Item("染料") = dt1.Rows(y).Item("单位成本")
  363. Case "油脂"
  364. dt_measure.Rows(x).Item("油脂") = dt1.Rows(y).Item("单位成本")
  365. Case "其他"
  366. dt_measure.Rows(x).Item("其他") = dt1.Rows(y).Item("单位成本")
  367. End Select
  368. Next
  369. If IsDBNull(dt_measure.Rows(x).Item("基础")) Then
  370. dt_measure.Rows(x).Item("基础") = 0
  371. End If
  372. If IsDBNull(dt_measure.Rows(x).Item("染料")) Then
  373. dt_measure.Rows(x).Item("染料") = 0
  374. End If
  375. If IsDBNull(dt_measure.Rows(x).Item("油脂")) Then
  376. dt_measure.Rows(x).Item("油脂") = 0
  377. End If
  378. If IsDBNull(dt_measure.Rows(x).Item("其他")) Then
  379. dt_measure.Rows(x).Item("其他") = 0
  380. End If
  381. sql = "select sum(sf) as sf from rt_measure_daily where right(card,10)='" & dt_measure.Rows(x).Item("卡号") & "' and comment1 like N'%完%'"
  382. cmd.CommandText = sql
  383. If IsDBNull(cmd.ExecuteScalar) Then
  384. sql = "select cast(sum(sf) as numeric(10,1)) as sf from rt_measure_daily where right(card,10)='" & dt_measure.Rows(x).Item("卡号") & "'"
  385. cmd.CommandText = sql
  386. dt_measure.Rows(x).Item("累加尺数") = cmd.ExecuteScalar
  387. Else
  388. sql = "select cast(sum(sf) as numeric(10,1)) as sf from rt_measure_daily where right(card,10)='" & dt_measure.Rows(x).Item("卡号") & "'"
  389. cmd.CommandText = sql
  390. dt_measure.Rows(x).Item("量完尺数") = cmd.ExecuteScalar
  391. 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)
  392. 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)
  393. dt_measure.Rows(x).Item("得革率") = Math.Round((Val(dt_measure.Rows(x).Item("量完尺数").ToString) / dt_measure.Rows(x).Item("蓝皮重").ToString), 3)
  394. 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)
  395. 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)
  396. 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)
  397. 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)
  398. 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)
  399. End If
  400. 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)
  401. Next
  402. sql = "delete from rt_cost" '-------染色
  403. cmd.CommandText = sql
  404. cmd.ExecuteNonQuery()
  405. Dim my_sqlbulk As New SqlBulkCopy(conn)
  406. my_sqlbulk.DestinationTableName = "dbo.rt_cost"
  407. my_sqlbulk.WriteToServer(dt_measure)
  408. MsgBox("")
  409. End Sub
  410. Private Sub CAL_TOTAL()
  411. Dim DT_TOTAL As New DataTable
  412. DT_TOTAL.Columns.Add("技术员")
  413. DT_TOTAL.Columns.Add("颜色")
  414. DT_TOTAL.Columns.Add("蓝皮均重")
  415. DT_TOTAL.Columns.Add("蓝皮均价")
  416. DT_TOTAL.Columns.Add("蓝皮产出率")
  417. DT_TOTAL.Columns.Add("蓝皮每尺成本")
  418. DT_TOTAL.Columns.Add("每尺化工")
  419. DT_TOTAL.Columns.Add("每尺染料")
  420. DT_TOTAL.Columns.Add("每尺其他")
  421. DT_TOTAL.Columns.Add("量尺尺数", GetType(System.Double))
  422. DT_TOTAL.Columns.Add("每尺化工加权", GetType(System.Double))
  423. DT_TOTAL.Columns.Add("每尺染料加权", GetType(System.Double))
  424. sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  425. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  426. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  427. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " &
  428. " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " &
  429. " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " &
  430. " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " &
  431. " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  432. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  433. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  434. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " &
  435. " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " &
  436. " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数)" &
  437. " AS 量尺尺数 " &
  438. " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " &
  439. " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " &
  440. " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " &
  441. " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " &
  442. " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " &
  443. " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " &
  444. " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " &
  445. " FROM rt_cost " &
  446. " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf >0.5) AND (tech = N'罗') " &
  447. " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " &
  448. " GROUP BY 技术员, 颜色) AS q " &
  449. " GROUP BY 技术员, 颜色 "
  450. Dim dt_luo As New DataTable
  451. cmd.CommandText = sql
  452. da.SelectCommand = cmd
  453. da.Fill(dt_luo)
  454. dgv_luo.DataSource = dt_luo
  455. sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  456. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  457. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  458. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " &
  459. " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " &
  460. " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " &
  461. " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " &
  462. " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  463. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  464. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  465. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " &
  466. " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " &
  467. " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " &
  468. " AS 量尺尺数 " &
  469. " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " &
  470. " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " &
  471. " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " &
  472. " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " &
  473. " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " &
  474. " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " &
  475. " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " &
  476. " FROM rt_cost " &
  477. " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf >0.5) AND (tech = N'苏') AND " &
  478. " (source NOT LIKE N'%库存%') AND (source NOT LIKE N'%杂%') AND (source NOT LIKE N'%套%') AND (tech = N'苏')
  479. AND (source NOT LIKE N'%回%') AND (card NOT LIKE '%r18-%') " &
  480. " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " &
  481. " GROUP BY 技术员, 颜色) AS q " &
  482. " GROUP BY 技术员, 颜色 "
  483. Dim dt_su1 As New DataTable
  484. cmd.CommandText = sql
  485. da.SelectCommand = cmd
  486. da.Fill(dt_su1)
  487. dgv_su1.DataSource = dt_su1 '-----苏正常黑色
  488. sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  489. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  490. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  491. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " &
  492. " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " &
  493. " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " &
  494. " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '套黑' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " &
  495. " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  496. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  497. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  498. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " &
  499. " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " &
  500. " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " &
  501. " AS 量尺尺数 " &
  502. " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " &
  503. " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " &
  504. " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " &
  505. " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " &
  506. " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " &
  507. " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " &
  508. " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " &
  509. " FROM rt_cost " &
  510. " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf > 0.5) AND (tech = N'苏') AND " &
  511. " (card like'%r18-%' or source like N'%库存%' or source like N'%杂%' or source like N'%套%' or source LIKE N'%回%' ) " &
  512. " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " &
  513. " GROUP BY 技术员, 颜色) AS q " &
  514. " GROUP BY 技术员, 颜色 "
  515. Dim dt_su2 As New DataTable
  516. cmd.CommandText = sql
  517. da.SelectCommand = cmd
  518. da.Fill(dt_su2)
  519. dgv_su2.DataSource = dt_su2 '----苏改色
  520. sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  521. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  522. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  523. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " &
  524. " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " &
  525. " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " &
  526. " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " &
  527. " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  528. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  529. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  530. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " &
  531. " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " &
  532. " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " &
  533. " AS 量尺尺数 " &
  534. " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " &
  535. " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " &
  536. " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " &
  537. " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " &
  538. " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " &
  539. " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " &
  540. " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " &
  541. " FROM rt_cost " &
  542. " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf > 0.5) AND (tech = N'宁') " &
  543. " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " &
  544. " GROUP BY 技术员, 颜色) AS q " &
  545. " GROUP BY 技术员, 颜色 "
  546. Dim dt_nin As New DataTable
  547. cmd.CommandText = sql
  548. da.SelectCommand = cmd
  549. da.Fill(dt_nin)
  550. dgv_nin.DataSource = dt_nin
  551. sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  552. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  553. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  554. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " &
  555. " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " &
  556. " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " &
  557. " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " &
  558. " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  559. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  560. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  561. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " &
  562. " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " &
  563. " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " &
  564. " AS 量尺尺数 " &
  565. " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " &
  566. " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " &
  567. " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " &
  568. " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " &
  569. " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " &
  570. " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " &
  571. " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " &
  572. " FROM rt_cost " &
  573. " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf > 0.5) AND (tech = N'郑') " &
  574. " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " &
  575. " GROUP BY 技术员, 颜色) AS q " &
  576. " GROUP BY 技术员, 颜色 "
  577. Dim dt_zhen As New DataTable
  578. cmd.CommandText = sql
  579. da.SelectCommand = cmd
  580. da.Fill(dt_zhen)
  581. dgv_zhen.DataSource = dt_zhen
  582. sql = "SELECT 技术员, 颜色, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  583. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  584. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  585. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " &
  586. " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " &
  587. " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数 " &
  588. " FROM (SELECT 技术员, CASE WHEN 颜色 Like '%黑%' THEN '黑色' ELSE '彩色' END AS 颜色, CAST(AVG(蓝皮重) " &
  589. " AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  590. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  591. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  592. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, " &
  593. " CAST(SUM(每尺染料 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, " &
  594. " CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺其他, SUM(量尺尺数) " &
  595. " AS 量尺尺数 " &
  596. " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, left(color,1) AS 颜色, " &
  597. " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " &
  598. " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) " &
  599. " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " &
  600. " AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 1)) " &
  601. " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, CAST(AVG(oil_per_sf) " &
  602. " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " &
  603. " FROM rt_cost " &
  604. " WHERE (sf_finish IS NOT NULL) AND (chem_per_sf > 0.5) AND (tech = N'刘') " &
  605. " GROUP BY tech, card, cust, left(color,1), thick, source) AS p " &
  606. " GROUP BY 技术员, 颜色) AS q " &
  607. " GROUP BY 技术员, 颜色 "
  608. Dim dt_liu As New DataTable
  609. cmd.CommandText = sql
  610. da.SelectCommand = cmd
  611. da.Fill(dt_liu)
  612. dgv_liu.DataSource = dt_liu
  613. sql = "SELECT 技术员, CAST(AVG(蓝皮重) AS numeric(10, 0)) AS 蓝皮重, CAST(AVG(蓝皮单价) AS numeric(10, 1)) AS 蓝皮单价, " &
  614. " CAST(SUM(蓝皮产出率 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 蓝皮产出率, " &
  615. " CAST(SUM(蓝皮每尺成本 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 1)) AS 蓝皮每尺成本, " &
  616. " CAST(SUM(每尺化工 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺化工, CAST(SUM(每尺染料 * 量尺尺数) " &
  617. " / SUM(量尺尺数) AS numeric(10, 2)) AS 每尺染料, CAST(SUM(每尺其他 * 量尺尺数) / SUM(量尺尺数) AS numeric(10, " &
  618. " 2)) AS 每尺其他, SUM(量尺尺数) AS 量尺尺数,sum(量尺尺数*每尺化工) as 每尺化工加权,sum(量尺尺数*每尺染料) as 每尺染料加权 " &
  619. " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, cust AS 客户, color AS 颜色, thick AS 厚度, " &
  620. " CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) AS numeric(10, 0)) AS 蓝皮重, " &
  621. " source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 1)) AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 1)) " &
  622. " AS 蓝皮产出率, CAST(AVG(cost_per_sf) AS numeric(10, 1)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) " &
  623. " AS numeric(10, 1)) AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 1)) AS 每尺染料, " &
  624. " CAST(AVG(oil_per_sf) + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 1)) AS 每尺其他 " &
  625. " FROM rt_cost " &
  626. " WHERE (sf_finish Is Not NULL) And (chem_per_sf <> 0) " &
  627. " GROUP BY tech, card, cust, color, thick, source) AS p " &
  628. " GROUP BY 技术员 HAVING (技术员 <> '林')"
  629. Dim dt_tech As New DataTable
  630. cmd.CommandText = sql
  631. da.SelectCommand = cmd
  632. da.Fill(dt_tech)
  633. Dim newDataTable1 As DataTable = dt_su1.Copy()
  634. For Each dr1 As DataRow In dt_luo.Rows
  635. newDataTable1.ImportRow(dr1)
  636. Next
  637. dgv_luo.Update()
  638. 'dgv_luo.Columns(0).Width = 80
  639. 'dgv_luo.Columns(1).Width = 80
  640. 'dgv_luo.Columns(2).Width = 80
  641. 'dgv_luo.Columns(3).Width = 80
  642. 'dgv_luo.Columns(4).Width = 80
  643. 'dgv_luo.Columns(5).Width = 80
  644. 'dgv_luo.Columns(6).Width = 80
  645. 'dgv_luo.Columns(7).Width = 80
  646. 'dgv_luo.Columns(8).Width = 80
  647. 'dgv_su1.Columns(0).Width = 80
  648. 'dgv_su1.Columns(1).Width = 80
  649. 'dgv_su1.Columns(2).Width = 80
  650. 'dgv_su1.Columns(3).Width = 80
  651. 'dgv_su1.Columns(4).Width = 80
  652. 'dgv_su1.Columns(5).Width = 80
  653. 'dgv_su1.Columns(6).Width = 80
  654. 'dgv_su1.Columns(7).Width = 80
  655. 'dgv_su1.Columns(8).Width = 80
  656. 'dgv_su2.Columns(0).Width = 80
  657. 'dgv_su2.Columns(1).Width = 80
  658. 'dgv_su2.Columns(2).Width = 80
  659. 'dgv_su2.Columns(3).Width = 80
  660. 'dgv_su2.Columns(4).Width = 80
  661. 'dgv_su2.Columns(5).Width = 80
  662. 'dgv_su2.Columns(6).Width = 80
  663. 'dgv_su2.Columns(7).Width = 80
  664. 'dgv_su2.Columns(8).Width = 80
  665. 'dgv_liu.Columns(0).Width = 80
  666. 'dgv_liu.Columns(1).Width = 80
  667. 'dgv_liu.Columns(2).Width = 80
  668. 'dgv_liu.Columns(3).Width = 80
  669. 'dgv_liu.Columns(4).Width = 80
  670. 'dgv_liu.Columns(5).Width = 80
  671. 'dgv_liu.Columns(6).Width = 80
  672. 'dgv_liu.Columns(7).Width = 80
  673. 'dgv_liu.Columns(8).Width = 80
  674. 'dgv_zhen.Columns(0).Width = 80
  675. 'dgv_zhen.Columns(1).Width = 80
  676. 'dgv_zhen.Columns(2).Width = 80
  677. 'dgv_zhen.Columns(3).Width = 80
  678. 'dgv_zhen.Columns(4).Width = 80
  679. 'dgv_zhen.Columns(5).Width = 80
  680. 'dgv_zhen.Columns(6).Width = 80
  681. 'dgv_zhen.Columns(7).Width = 80
  682. 'dgv_zhen.Columns(8).Width = 80
  683. 'dgv_nin.Columns(0).Width = 80
  684. 'dgv_nin.Columns(1).Width = 80
  685. 'dgv_nin.Columns(2).Width = 80
  686. 'dgv_nin.Columns(3).Width = 80
  687. 'dgv_nin.Columns(4).Width = 80
  688. 'dgv_nin.Columns(5).Width = 80
  689. 'dgv_nin.Columns(6).Width = 80
  690. 'dgv_nin.Columns(7).Width = 80
  691. 'dgv_nin.Columns(8).Width = 80
  692. For X As Integer = 0 To dt_su1.Rows.Count - 1
  693. Next
  694. Dim WORKROW As DataRow
  695. WORKROW = DT_TOTAL.NewRow
  696. For I As Integer = 0 To 9
  697. WORKROW(I) = dt_su1.Rows(0).Item(I)
  698. Next I
  699. DT_TOTAL.Rows.Add(WORKROW)
  700. WORKROW = DT_TOTAL.NewRow
  701. For I As Integer = 0 To 9
  702. WORKROW(I) = dt_luo.Rows(1).Item(I)
  703. Next I
  704. DT_TOTAL.Rows.Add(WORKROW)
  705. 'WORKROW = DT_TOTAL.NewRow '----老苏改色
  706. 'For I As Integer = 0 To 9
  707. ' WORKROW(I) = dt_su2.Rows(0).Item(I)
  708. 'Next I
  709. 'DT_TOTAL.Rows.Add(WORKROW)
  710. WORKROW = DT_TOTAL.NewRow
  711. For I As Integer = 0 To 9
  712. WORKROW(I) = dt_luo.Rows(0).Item(I)
  713. Next I
  714. DT_TOTAL.Rows.Add(WORKROW)
  715. WORKROW = DT_TOTAL.NewRow
  716. For I As Integer = 0 To 9
  717. WORKROW(I) = dt_nin.Rows(0).Item(I)
  718. Next I
  719. DT_TOTAL.Rows.Add(WORKROW)
  720. WORKROW = DT_TOTAL.NewRow
  721. For I As Integer = 0 To 9
  722. 'WORKROW(I) = dt_liu.Rows(0).Item(I)
  723. Next I
  724. DT_TOTAL.Rows.Add(WORKROW)
  725. WORKROW = DT_TOTAL.NewRow
  726. For I As Integer = 0 To 9
  727. WORKROW(I) = dt_zhen.Rows(0).Item(I)
  728. Next I
  729. DT_TOTAL.Rows.Add(WORKROW)
  730. dgv_TOTAL.DataSource = DT_TOTAL '---------技术员加权平均
  731. dgv_TOTAL.Columns(0).Width = 80
  732. dgv_TOTAL.Columns(1).Width = 80
  733. dgv_TOTAL.Columns(2).Width = 80
  734. dgv_TOTAL.Columns(3).Width = 80
  735. dgv_TOTAL.Columns(4).Width = 80
  736. dgv_TOTAL.Columns(5).Width = 80
  737. dgv_TOTAL.Columns(6).Width = 80
  738. dgv_TOTAL.Columns(7).Width = 80
  739. dgv_TOTAL.Columns(8).Width = 80
  740. For x As Integer = 0 To DT_TOTAL.Rows.Count - 1
  741. If IsDBNull(DT_TOTAL.Rows(x).Item("每尺化工")) Then
  742. Else
  743. DT_TOTAL.Rows(x).Item("每尺化工加权") = DT_TOTAL.Rows(x).Item("每尺化工") * DT_TOTAL.Rows(x).Item("量尺尺数")
  744. DT_TOTAL.Rows(x).Item("每尺染料加权") = DT_TOTAL.Rows(x).Item("每尺染料") * DT_TOTAL.Rows(x).Item("量尺尺数")
  745. End If
  746. Next
  747. Dim myDataRow As DataRow
  748. myDataRow = DT_TOTAL.NewRow
  749. myDataRow(0) = "平均"
  750. myDataRow(10) = DT_TOTAL.Compute("sum(每尺化工加权)", "")
  751. myDataRow(11) = DT_TOTAL.Compute("sum(每尺染料加权)", "")
  752. Dim XX As Double = DT_TOTAL.Compute("sum(量尺尺数)", "")
  753. myDataRow(6) = Math.Round(myDataRow(10) / XX, 2)
  754. myDataRow(7) = Math.Round(myDataRow(11) / XX, 2)
  755. myDataRow(8) = Math.Round(myDataRow(10) / XX - myDataRow(11) / XX, 2)
  756. myDataRow(9) = Math.Round(DT_TOTAL.Compute("sum(量尺尺数)", ""), 1)
  757. 'l_in.Text = myDataRow(1)
  758. 'l_out.Text = myDataRow(2)
  759. 'l_bal.Text = myDataRow(3)
  760. DT_TOTAL.Rows.InsertAt(myDataRow, DT_TOTAL.Rows.Count)
  761. 'dgv_TOTAL.DataSource = DT_TOTAL
  762. dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(0).Style.ForeColor = Color.Red
  763. dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(6).Style.ForeColor = Color.Red
  764. dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(7).Style.ForeColor = Color.Red
  765. dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(8).Style.ForeColor = Color.Red
  766. dgv_TOTAL.Rows(dgv_TOTAL.Rows.Count - 2).Cells(9).Style.ForeColor = Color.Red
  767. dgv_TOTAL.Columns(10).Visible = False
  768. dgv_TOTAL.Columns(11).Visible = False
  769. End Sub
  770. Private Sub ListBox2_MouseUp(sender As Object, e As MouseEventArgs) Handles ListBox2.MouseUp
  771. End Sub
  772. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  773. CAL_TOTAL()
  774. sql = "SELECT 皮源,CAST(SUM(蓝皮单价*量尺尺数)/SUM(量尺尺数) AS NUMERIC(10,1)) AS 蓝皮每斤单价,CAST(SUM(蓝皮产出率*量尺尺数)/SUM(量尺尺数) AS numeric(10,1)) AS 蓝皮产出率, " &
  775. " CAST(SUM(蓝皮每尺成本*量尺尺数)/SUM(量尺尺数) AS numeric(10,1)) AS 蓝皮每尺成本,SUM(量尺尺数) AS 量尺尺数,SUM(蓝皮单价*量尺尺数) AS 蓝皮加权,SUM(蓝皮每尺成本*量尺尺数) AS 单价加权,SUM(蓝皮产出率*量尺尺数) AS 产出加权 " &
  776. " FROM (SELECT tech AS 技术员, COUNT(*) AS counts, card AS 卡号, left(color,1) as 颜色, " &
  777. " thick AS 厚度, CAST(SUM(sf) AS numeric(10, 1)) AS 量尺尺数, CAST(AVG(wb_weight) " &
  778. " AS numeric(10, 0)) AS 蓝皮重, source AS 皮源, CAST(AVG(wb_price) AS numeric(10, 2)) " &
  779. " AS 蓝皮单价, CAST(AVG(yield) AS numeric(10, 2)) AS 蓝皮产出率, CAST(AVG(cost_per_sf) " &
  780. " AS numeric(10, 2)) AS 蓝皮每尺成本, CAST(AVG(chem_per_sf) AS numeric(10, 2)) " &
  781. " AS 每尺化工, CAST(AVG(dye_per_sf) AS numeric(10, 2)) AS 每尺染料, CAST(AVG(oil_per_sf) " &
  782. " + AVG(com_per_sf) + AVG(other_per_sf) AS numeric(10, 2)) AS 每尺其他 " &
  783. " FROM rt_cost " &
  784. " WHERE (sf_finish Is Not NULL) And (chem_per_sf > 0.5) And ((wb_price) Is Not NULL) And WB_PRICE<>0 " &
  785. " GROUP BY tech, card, left(color,1), thick, source) AS P GROUP BY 皮源 ORDER BY 蓝皮每尺成本 "
  786. Dim DT_TOTAL As New DataTable
  787. cmd.CommandText = sql
  788. da.SelectCommand = cmd
  789. da.Fill(DT_TOTAL)
  790. Dim myDataRow As DataRow
  791. myDataRow = DT_TOTAL.NewRow
  792. myDataRow(0) = "平均"
  793. myDataRow(5) = DT_TOTAL.Compute("sum(蓝皮加权)", "")
  794. myDataRow(6) = DT_TOTAL.Compute("sum(单价加权)", "")
  795. myDataRow(7) = DT_TOTAL.Compute("sum(产出加权)", "")
  796. Dim XX As Double = DT_TOTAL.Compute("sum(量尺尺数)", "")
  797. If IsDBNull(myDataRow(1)) Then myDataRow(1) = 0
  798. If IsDBNull(myDataRow(2)) Then myDataRow(2) = 0
  799. myDataRow(1) = Math.Round(myDataRow(5) / XX, 1)
  800. myDataRow(3) = Math.Round(myDataRow(6) / XX, 1)
  801. myDataRow(2) = Math.Round(myDataRow(7) / XX, 1)
  802. myDataRow(4) = DT_TOTAL.Compute("sum(量尺尺数)", "")
  803. 'l_in.Text = myDataRow(1)
  804. 'l_out.Text = myDataRow(2)
  805. 'l_bal.Text = myDataRow(3)
  806. DT_TOTAL.Rows.InsertAt(myDataRow, DT_TOTAL.Rows.Count)
  807. 'dgv1.DataSource = dt
  808. 'dgv1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
  809. ''DGV3.AllowUserToAddRows = False
  810. DGV_WB.DataSource = DT_TOTAL '--------蓝皮加权平均
  811. DGV_WB.Columns(5).Visible = False
  812. DGV_WB.Columns(6).Visible = False
  813. DGV_WB.Columns(7).Visible = False
  814. DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(0).Style.ForeColor = Color.Red
  815. DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(1).Style.ForeColor = Color.Red
  816. DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(2).Style.ForeColor = Color.Red
  817. DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(3).Style.ForeColor = Color.Red
  818. DGV_WB.Rows(DGV_WB.Rows.Count - 2).Cells(4).Style.ForeColor = Color.Red
  819. DGV_WB.Columns(0).Width = 150
  820. End Sub
  821. Private Sub dgv_TOTAL_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles dgv_TOTAL.MouseDoubleClick
  822. Dim my_form As New Frm_RetanCost_Tech
  823. my_form.Show()
  824. 'Dim frm_tech As New Frm_RetanCost_Tech
  825. 'frm_tech.ShowDialog()
  826. End Sub
  827. Private Sub dgv_TOTAL_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv_TOTAL.CellDoubleClick
  828. 'Dim frm_tech As New Frm_RetanCost_Tech
  829. 'frm_tech.ShowDialog()
  830. End Sub
  831. Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
  832. Dim xlApp As Microsoft.Office.Interop.Excel.Application
  833. Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
  834. Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
  835. Dim xlrange As Microsoft.Office.Interop.Excel.Range
  836. xlApp = CreateObject("Excel.Application")
  837. xlBook = xlApp.Workbooks.Add
  838. 'xlApp.DisplayAlerts = False
  839. xlApp.Visible = True
  840. xlBook.Activate()
  841. xlBook.Parent.Windows(1).Visible = True
  842. xlSheet = xlBook.Worksheets(1)
  843. xlSheet.Activate()
  844. xlSheet.Cells(1, 1).select
  845. dgv_measure.SelectAll()
  846. 'Dim t As New System.Windows.Forms.DataObject
  847. 'Dim tt As New DataTable
  848. 'tt = dgv_measure.DataSource
  849. 't = dgv_measure.GetClipboardContent
  850. 'System.Windows.Forms.Clipboard.SetDataObject(t, False, 1000, 1000)
  851. 'xlSheet.Range("a10").Select()
  852. 'System.Threading.Thread.Sleep(12000)
  853. 'xlSheet.PasteSpecial(Format:="Unicode 文字", Link:=False, DisplayAsIcon:=False)
  854. Me.dgv_measure.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText
  855. Me.dgv_measure.RowHeadersVisible = False
  856. Clipboard.SetDataObject(dgv_measure.GetClipboardContent())
  857. ' xlSheet.PasteSpecial(Format:="文本", Link:=False, DisplayAsIcon:=False)
  858. ' xlSheet.PasteSpecial(Format:="unicode 文字", Link:=False, DisplayAsIcon:=False)
  859. xlSheet.Paste()
  860. xlSheet.Range("B1:AA178").Select()
  861. xlSheet.Rows("2:179").Select
  862. xlApp.Selection.RowHeight = 26
  863. xlSheet.Range("D4").Select()
  864. With xlSheet.Columns("C:C")
  865. .EntireColumn.Hidden = False
  866. .ColumnWidth = 14.777778
  867. End With
  868. xlSheet.Columns("C:AA").HorizontalAlignment = xlHAlignCenter
  869. With xlSheet.Selection
  870. .HorizontalAlignment = xlHAlignGeneral
  871. .IndentLevel = 0
  872. End With
  873. xlSheet.Columns("K:K").EntireColumn.Hidden = True
  874. ' xlSheet.Range("B1:AA178").AutoFilter Field:=19, Criteria1:=Array(""), Operator:=xlFilterValues
  875. '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
  876. With xlSheet.Columns("F:F")
  877. .EntireColumn.Hidden = False
  878. .ColumnWidth = 13.222222
  879. End With
  880. xlSheet.Columns("M:Q").EntireColumn.Hidden = True
  881. xlSheet.Columns("H:H").EntireColumn.Hidden = True
  882. xlSheet.Columns("T:T").EntireColumn.Hidden = True
  883. 'xlSheet.Columns("X:Z").Group Start:=1, End:=1, By:=1, Periods:=1
  884. xlSheet.Columns("U:AA").NumberFormatLocal = "0.00_);[紅色](0.00)"
  885. With xlSheet.PageSetup
  886. .LeftHeader = ""
  887. .CenterHeader = ""
  888. .RightHeader = ""
  889. .LeftFooter = ""
  890. .CenterFooter = ""
  891. .RightFooter = ""
  892. .Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlPortrait
  893. .Zoom = 100
  894. .FirstPageNumber = True
  895. .LeftMargin = 54.141732
  896. .RightMargin = 54.141732
  897. .TopMargin = 72
  898. .BottomMargin = 72
  899. .HeaderMargin = 36
  900. .FooterMargin = 36
  901. .CenterHorizontally = False
  902. .CenterVertically = False
  903. .PrintErrors = Microsoft.Office.Interop.Excel.XlPrintErrors.xlPrintErrorsDisplayed
  904. .Order = Microsoft.Office.Interop.Excel.XlOrder.xlDownThenOver
  905. .PrintGridlines = False
  906. .PrintHeadings = False
  907. .BlackAndWhite = False
  908. .PrintQuality = 600
  909. .PaperSize = Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA4
  910. .PrintComments = -4142
  911. .PrintArea = ""
  912. .PrintTitleRows = "$1:$1"
  913. .PrintTitleColumns = ""
  914. End With
  915. xlSheet.Columns("U:AA").Select
  916. With xlSheet.Selection
  917. .EntireColumn.Hidden = False
  918. .ColumnWidth = 3.888889
  919. End With
  920. With xlSheet.Selection
  921. .EntireColumn.Hidden = False
  922. .ColumnWidth = 4.333333
  923. End With
  924. xlSheet.Columns("R:R").NumberFormatLocal = "0.0_);[紅色](0.0)"
  925. With xlSheet.PageSetup
  926. .LeftHeader = ""
  927. .CenterHeader = ""
  928. .RightHeader = ""
  929. .LeftFooter = ""
  930. .CenterFooter = ""
  931. .RightFooter = ""
  932. .Orientation = Microsoft.Office.Interop.Excel.XlPageOrientation.xlPortrait
  933. .Zoom = 100
  934. .FirstPageNumber = True
  935. .LeftMargin = 14.173228
  936. .RightMargin = 14.173228
  937. .TopMargin = 42.519685
  938. .BottomMargin = 42.519685
  939. .HeaderMargin = 36
  940. .FooterMargin = 36
  941. .CenterHorizontally = False
  942. .CenterVertically = False
  943. .PrintErrors = Microsoft.Office.Interop.Excel.XlPrintErrors.xlPrintErrorsDisplayed
  944. .Order = Microsoft.Office.Interop.Excel.XlOrder.xlDownThenOver
  945. .Order = .xlDownThenOver
  946. .PrintGridlines = False
  947. .PrintHeadings = False
  948. .BlackAndWhite = False
  949. .PrintQuality = 600
  950. .PaperSize = Microsoft.Office.Interop.Excel.XlPaperSize.xlPaperA4
  951. .PrintComments = -4142
  952. .PrintArea = ""
  953. .PrintTitleRows = "$1:$1"
  954. .PrintTitleColumns = ""
  955. End With
  956. xlSheet.PageSetup.FitToPagesTall = 0
  957. xlSheet.PageSetup.FitToPagesWide = 1
  958. xlSheet.PageSetup.Orientation = xlLandscape
  959. xlSheet.Columns("A:A").EntireColumn.Hidden = True
  960. End Sub
  961. End Class