Bez popisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Frm1.vb 8.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. Imports System.Data.SqlClient
  2. Imports System.Reflection
  3. Public Class Frm1
  4. Dim cmd As New SqlCommand
  5. Dim da As New SqlDataAdapter
  6. Dim dt As New DataTable
  7. Dim conn As New SqlConnection
  8. Dim sql As String
  9. Private Sub Frm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  10. Dim type As Type = dgv1.GetType()
  11. Dim pi As PropertyInfo = type.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance Or System.Reflection.BindingFlags.NonPublic)
  12. pi.SetValue(dgv1, True, Nothing)
  13. conn.ConnectionString = connstring
  14. conn.Open()
  15. cmd.Connection = conn
  16. sql = "SELECT NAME as 化料名称, CLASS1 as 分类,class2 as 海关,
  17. supplier as 供应商,origin as 产地,price as 单价,price_usd as 美金, stock1 as 库存1, stock2 as 库存2, stock3 as 库存3, 合计, 预估用量, [10] AS [10月], [11] AS [11月], [12] AS [12月] FROM " &
  18. " (SELECT MONTH(RT_SYS_CHEM_OUT.DATE) AS 月份, RT_SYS_CHEM_OUT.NAME, CAST(SUM(RT_SYS_CHEM_OUT.WEIGHT) AS numeric(10, 0)) AS 本月领料, RT_SYS_CHEM_MAIN.CLASS1,RT_SYS_CHEM_MAIN.class2,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,price_usd, rt_chem_stock_month1.stock1, rt_chem_stock_month1.stock2, rt_chem_stock_month1.stock3, " &
  19. " rt_chem_stock_month1.stock1 + rt_chem_stock_month1.stock2 + rt_chem_stock_month1.stock3 AS 合计, CASE WHEN RT_RETAN_RCP_EVA.QTY Is NULL THEN 0 ELSE RT_RETAN_RCP_EVA.QTY END AS 预估用量, RT_SYS_CHEM_MAIN.supplier, RT_SYS_CHEM_MAIN.origin FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN RT_RETAN_RCP_EVA ON RT_SYS_CHEM_OUT.NAME = RT_RETAN_RCP_EVA.NAME LEFT OUTER JOIN " &
  20. " rt_chem_stock_month1 ON RT_SYS_CHEM_OUT.NAME = rt_chem_stock_month1.name LEFT OUTER JOIN RT_SYS_CHEM_MAIN ON RT_SYS_CHEM_OUT.NAME = RT_SYS_CHEM_MAIN.name WHERE (MONTH(RT_SYS_CHEM_OUT.DATE) = 10) Or (MONTH(RT_SYS_CHEM_OUT.DATE) = 11) Or (MONTH(RT_SYS_CHEM_OUT.DATE) = 12 ) " &
  21. " GROUP BY RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_MAIN.CLASS1,class2,price_usd, RT_SYS_CHEM_MAIN.price, RT_SYS_CHEM_MAIN.new_price, rt_chem_stock_month1.stock1, rt_chem_stock_month1.stock2, rt_chem_stock_month1.stock3, RT_RETAN_RCP_EVA.QTY, MONTH(RT_SYS_CHEM_OUT.DATE), RT_SYS_CHEM_MAIN.supplier, RT_SYS_CHEM_MAIN.origin) " &
  22. " AS p PIVOT ( sum(本月领料) FOR 月份 IN ([10],[11], [12])) AS q "
  23. cmd.CommandText = Sql
  24. da.SelectCommand = cmd
  25. da.Fill(dt)
  26. dgv1.DataSource = dt
  27. dt.Columns.Add("本月用量")
  28. dt.Columns.Add("外购入库")
  29. dt.Columns.Add("保税入库")
  30. dt.Columns.Add("调拨出库")
  31. dt.Columns.Add("已订货")
  32. dt.Columns.Add("即时库存")
  33. 'dt.Columns.Add("存貨(月)")
  34. dt.Columns.Add("前置时间")
  35. dt.Columns.Add("余量(月)")
  36. dt.Columns.Add("订货")
  37. Dim dr As SqlDataReader
  38. For x As Integer = 0 To dt.Rows.Count - 1
  39. Dim xx As Integer = 0
  40. Dim YY As Integer = 0
  41. sql = "SELECT sum(qty) as 合计 from rt_chem_s_in_price where dep=N'保税仓-R' and year(date)=2020 and month(date)=2 and matl_name=N'" & dt.Rows(x).Item("化料名称") & "'"
  42. cmd.CommandText = sql
  43. dr = cmd.ExecuteReader
  44. If dr.Read Then
  45. dt.Rows(x).Item("保税入库") = dr("合计").ToString
  46. Else
  47. dt.Rows(x).Item("保税入库") = 0
  48. End If
  49. dr.Close()
  50. sql = "SELECT sum(qty) as 合计 from rt_chem_in_price where (dep is null or dep<>N'保税仓-R') and year(date)=2020 and month(date)=2 and name=N'" & dt.Rows(x).Item("化料名称") & "'"
  51. cmd.CommandText = sql
  52. dr = cmd.ExecuteReader
  53. If dr.Read Then
  54. dt.Rows(x).Item("外购入库") = dr("合计").ToString
  55. Else
  56. dt.Rows(x).Item("外购入库") = 0
  57. End If
  58. dr.Close()
  59. sql = "SELECT sum(qty) as 合计 from rt_chem_container where name=N'" & dt.Rows(x).Item("化料名称") & "' and received is null"
  60. cmd.CommandText = sql
  61. dr = cmd.ExecuteReader
  62. If dr.Read Then
  63. dt.Rows(x).Item("已订货") = dr("合计").ToString
  64. Else
  65. dt.Rows(x).Item("已订货") = 0
  66. End If
  67. dr.Close()
  68. sql = "SELECT cast(sum(weight) as numeric(10,0)) as 合计 from rt_sys_chem_out where name=N'" & dt.Rows(x).Item("化料名称") & "' and year(date)=2020 and month(date)=2"
  69. cmd.CommandText = sql
  70. dr = cmd.ExecuteReader
  71. If dr.Read Then
  72. dt.Rows(x).Item("本月用量") = dr("合计").ToString
  73. Else
  74. dt.Rows(x).Item("本月用量") = 0
  75. End If
  76. dr.Close()
  77. 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) - Val(dt.Rows(x).Item("调拨出库").ToString)
  78. 'Select Case dt.Rows(x).Item("产地").ToString
  79. ' Case "台湾", "泰国", "新加坡"
  80. ' dt.Rows(x).Item("前置时间") = 1
  81. ' If dt.Rows(x).Item("预估用量").ToString = "" Then
  82. ' xx = 0
  83. ' Else
  84. ' xx = dt.Rows(x).Item("预估用量")
  85. ' End If
  86. ' If dt.Rows(x).Item("即时库存").ToString = "" Then
  87. ' YY = 0
  88. ' Else
  89. ' YY = dt.Rows(x).Item("即时库存")
  90. ' End If
  91. ' dt.Rows(x).Item("订货") = YY - xx * dt.Rows(x).Item("前置时间")
  92. ' If xx <> 0 Then dt.Rows(x).Item("余量(月)") = Math.Round(YY / xx, 1)
  93. ' Case "美国", "荷兰", "西班牙", "德国", "义大利"
  94. ' dt.Rows(x).Item("前置时间") = 3
  95. ' dt.Rows(x).Item("订货") = 1
  96. ' If dt.Rows(x).Item("预估用量").ToString = "" Then
  97. ' xx = 0
  98. ' Else
  99. ' xx = dt.Rows(x).Item("预估用量")
  100. ' End If
  101. ' If dt.Rows(x).Item("即时库存").ToString = "" Then
  102. ' YY = 0
  103. ' Else
  104. ' YY = dt.Rows(x).Item("即时库存")
  105. ' End If
  106. ' dt.Rows(x).Item("订货") = YY - xx * dt.Rows(x).Item("前置时间")
  107. ' If xx <> 0 Then dt.Rows(x).Item("余量(月)") = Math.Round(YY / xx, 1)
  108. ' Case "山东", "上海", "厦门"
  109. ' dt.Rows(x).Item("前置时间") = 0.5
  110. ' dt.Rows(x).Item("订货") = 1
  111. ' If dt.Rows(x).Item("预估用量").ToString = "" Then
  112. ' xx = 0
  113. ' Else
  114. ' xx = dt.Rows(x).Item("预估用量")
  115. ' End If
  116. ' If dt.Rows(x).Item("即时库存").ToString = "" Then
  117. ' YY = 0
  118. ' Else
  119. ' YY = dt.Rows(x).Item("即时库存")
  120. ' End If
  121. ' dt.Rows(x).Item("订货") = YY - xx * dt.Rows(x).Item("前置时间")
  122. ' If xx <> 0 Then dt.Rows(x).Item("余量(月)") = Math.Round(YY / xx, 1)
  123. 'End Select
  124. Next x
  125. dgv1.Columns(0).Width = 220
  126. dgv1.Columns(1).Width = 120
  127. dgv1.Columns(2).Width = 90
  128. dgv1.Columns(3).Width = 80
  129. dgv1.Columns(4).Width = 70
  130. dgv1.Columns(5).Width = 80
  131. dgv1.Columns(6).Width = 80
  132. dgv1.Columns(7).Width = 80
  133. dgv1.Columns(8).Width = 80
  134. dgv1.Columns(9).Width = 80
  135. dgv1.Columns(10).Width = 70
  136. dgv1.Columns(11).Width = 100
  137. dgv1.Columns(12).Width = 60
  138. dgv1.Columns(13).Width = 60
  139. dgv1.Columns(14).Width = 60
  140. dgv1.Columns(15).Width = 100
  141. dgv1.Columns(16).Width = 100
  142. dgv1.Columns(17).Width = 100
  143. dgv1.Columns(18).Width = 100
  144. End Sub
  145. End Class