Ei kuvausta
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.

frm_Chem_Cert1.vb 9.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. Imports System.Data.SqlClient
  2. Public Class frm_Chem_Cert1
  3. Dim dt1 As New DataTable
  4. Dim sql As String
  5. Dim conn As New SqlConnection
  6. Dim cmd As New SqlCommand
  7. Dim xlApp As Microsoft.Office.Interop.Excel.Application
  8. Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
  9. Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
  10. Dim xlRange As Microsoft.Office.Interop.Excel.Range
  11. Dim PTCache As Microsoft.Office.Interop.Excel.PivotCache
  12. Dim PT As Microsoft.Office.Interop.Excel.PivotTable
  13. Dim da As New SqlDataAdapter
  14. Dim dt As New DataTable
  15. Dim io_type As String
  16. Dim my_excel_name As String = ""
  17. Dim a As Integer = 0
  18. Dim sql1 As String
  19. Dim sql2 As String
  20. Dim sql3 As String
  21. Dim sql4 As String
  22. Dim my_LL As String
  23. Private Sub frm_Chem_Cert1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  24. conn.ConnectionString = connstring
  25. conn.Open()
  26. cmd.Connection = conn
  27. sql = "select name as 品名,cast(sum(weight) as numeric(10,0)) as 用量,type1 as 分类,type as 分类1,expr1 as 部门,supplier as 供应商 from (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO,
  28. RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.SPEC,
  29. RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.QTY,
  30. RT_SYS_CHEM_OUT.PRICE, RT_SYS_CHEM_OUT.AMOUNT, RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD,
  31. RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.COMMENT, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID,
  32. RT_CHEM_MSDS.type1, RT_CHEM_MSDS.type, RT_CHEM_MSDS.dep AS Expr1,RT_CHEM_MSDS.supplier
  33. FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN
  34. RT_CHEM_MSDS ON RT_SYS_CHEM_OUT.NAME = RT_CHEM_MSDS.sys_name
  35. WHERE (RT_SYS_CHEM_OUT.DATE > '2023/3/1')) as p group by name,type1,type,expr1,supplier"
  36. cmd.CommandText = sql
  37. da.SelectCommand = cmd
  38. da.Fill(dt)
  39. dgv1.DataSource = dt
  40. dgv1.RowHeadersWidth = 20
  41. ' dgv1.RowHeadersVisible = False
  42. dgv1.Columns(0).Width = 180
  43. dgv1.Columns(5).Width = 150
  44. sql = "select type1 as 分类1,cast(sum(weight) as numeric(10,0)) as 用量,count(*) as 笔数,type as 分类,expr1 as 部门 from(select name,sum(weight) as weight,type1,type,expr1 from (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO,
  45. RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.SPEC,
  46. RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.QTY,
  47. RT_SYS_CHEM_OUT.PRICE, RT_SYS_CHEM_OUT.AMOUNT, RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD,
  48. RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.COMMENT, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID,
  49. RT_CHEM_MSDS.type1, RT_CHEM_MSDS.type, RT_CHEM_MSDS.dep AS Expr1
  50. FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN
  51. RT_CHEM_MSDS ON RT_SYS_CHEM_OUT.NAME = RT_CHEM_MSDS.sys_name
  52. WHERE (RT_SYS_CHEM_OUT.DATE > '2023/3/1')) as p group by name,type1,type,expr1) as q group by type,type1,expr1"
  53. cmd.CommandText = sql
  54. da.SelectCommand = cmd
  55. dt = New DataTable
  56. da.Fill(dt)
  57. dgv2.DataSource = dt
  58. dgv2.RowHeadersWidth = 5
  59. dgv2.RowHeadersVisible = False
  60. sql = "select 供应商,count as 笔数,weight as 用量,cast(weight/sum(weight) over () as numeric(10,3))*100 as 用量比例,cast(count/sum(count) over () as numeric(10,3))*100 as 笔数比例 from (select supplier as 供应商,cast(count(*) as numeric(10,1)) as count,sum(weight) as weight from (select name,cast(sum(weight) as numeric(10,0)) as weight,type1,type,expr1,supplier from (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO,
  61. RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.SPEC,
  62. RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.QTY,
  63. RT_SYS_CHEM_OUT.PRICE, RT_SYS_CHEM_OUT.AMOUNT, RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD,
  64. RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.COMMENT, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID,
  65. RT_CHEM_MSDS.type1, RT_CHEM_MSDS.type, RT_CHEM_MSDS.dep AS Expr1,RT_CHEM_MSDS.supplier
  66. FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN
  67. RT_CHEM_MSDS ON RT_SYS_CHEM_OUT.NAME = RT_CHEM_MSDS.sys_name
  68. WHERE (RT_SYS_CHEM_OUT.DATE > '2023/3/1') and RT_CHEM_MSDS.type <>N'基础化工') as p group by name,type1,type,expr1,supplier) as r group by supplier ) as s"
  69. cmd.CommandText = sql
  70. da.SelectCommand = cmd
  71. dt = New DataTable
  72. da.Fill(dt)
  73. dgv3.DataSource = dt
  74. dgv3.RowHeadersWidth = 30
  75. ' dgv3.RowHeadersVisible = False
  76. dgv3.Columns(0).Width = 150
  77. dgv3.Columns(1).Width = 80
  78. For x As Integer = 0 To 11
  79. ListBox1.Items.Add(x + 1)
  80. Next
  81. End Sub
  82. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  83. sql = "select name as 品名,cast(sum(weight) as numeric(10,0)) as 用量,type1 as 分类,type as 分类1,expr1 as 部门,supplier as 供应商 from (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO,
  84. RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.SPEC,
  85. RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.QTY,
  86. RT_SYS_CHEM_OUT.PRICE, RT_SYS_CHEM_OUT.AMOUNT, RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD,
  87. RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.COMMENT, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID,
  88. RT_SYS_CHEM_OUT.cp_id, RT_CHEM_MSDS.type1, RT_CHEM_MSDS.type, RT_CHEM_MSDS.dep AS Expr1,RT_CHEM_MSDS.supplier
  89. FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN
  90. RT_CHEM_MSDS ON RT_SYS_CHEM_OUT.NAME = RT_CHEM_MSDS.sys_name
  91. WHERE (RT_SYS_CHEM_OUT.name like N'%" & TextBox1.Text & "%') and (RT_SYS_CHEM_OUT.DATE > '2023/3/1')) as p group by name,type1,type,expr1,supplier"
  92. cmd.CommandText = sql
  93. da.SelectCommand = cmd
  94. dt = New DataTable
  95. da.Fill(dt)
  96. dgv1.DataSource = dt
  97. dgv1.RowHeadersWidth = 5
  98. dgv1.RowHeadersVisible = False
  99. dgv1.Columns(0).Width = 180
  100. dgv1.Columns(5).Width = 150
  101. End Sub
  102. Private Sub dgv3_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv3.CellContentClick
  103. sql = "select supplier as 供应商,name as 品名,cast(sum(weight) as numeric(10,0)) as 用量,type1 as 分类,type as 分类1,expr1 as 部门 from (SELECT RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO,
  104. RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.SPEC,
  105. RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.QTY,
  106. RT_SYS_CHEM_OUT.PRICE, RT_SYS_CHEM_OUT.AMOUNT, RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD,
  107. RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.COMMENT, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID,
  108. RT_CHEM_MSDS.type1, RT_CHEM_MSDS.type, RT_CHEM_MSDS.dep AS Expr1,RT_CHEM_MSDS.supplier
  109. FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN
  110. RT_CHEM_MSDS ON RT_SYS_CHEM_OUT.NAME = RT_CHEM_MSDS.sys_name
  111. WHERE (RT_SYS_CHEM_OUT.DATE > '2023/3/1') and RT_CHEM_MSDS.supplier=N'" & dgv3.Rows(dgv3.CurrentCell.RowIndex).Cells("供应商").Value & "' ) as p group by name,type1,type,expr1,supplier"
  112. ' sql = "SELECT TOP (200) RT_SYS_CHEM_OUT.DATE, RT_SYS_CHEM_OUT.CHECKED, RT_SYS_CHEM_OUT.DEP, RT_SYS_CHEM_OUT.NO,
  113. ' RT_SYS_CHEM_OUT.WH, RT_SYS_CHEM_OUT.CODE, RT_SYS_CHEM_OUT.NAME, RT_SYS_CHEM_OUT.SPEC,
  114. ' RT_SYS_CHEM_OUT.UNIT, RT_SYS_CHEM_OUT.LOT, RT_SYS_CHEM_OUT.WEIGHT, RT_SYS_CHEM_OUT.QTY,
  115. ' RT_SYS_CHEM_OUT.PRICE, RT_SYS_CHEM_OUT.AMOUNT, RT_SYS_CHEM_OUT.P, RT_SYS_CHEM_OUT.CARD,
  116. ' RT_SYS_CHEM_OUT.DRUM, RT_SYS_CHEM_OUT.COMMENT, RT_SYS_CHEM_OUT.ORDER_A, RT_SYS_CHEM_OUT.ID,
  117. ' RT_SYS_CHEM_OUT.cp_id, RT_CHEM_MSDS.type1, RT_CHEM_MSDS.type, RT_CHEM_MSDS.dep AS Expr1
  118. 'FROM RT_SYS_CHEM_OUT LEFT OUTER JOIN
  119. ' RT_CHEM_MSDS ON RT_SYS_CHEM_OUT.NAME = RT_CHEM_MSDS.sys_name
  120. 'WHERE (RT_SYS_CHEM_OUT.DATE > '2023/3/1') and RT_CHEM_MSDS.supplier=N'" & dgv3.Rows(dgv3.CurrentCell.RowIndex).Cells("供应商").Value & "'"
  121. cmd.CommandText = sql
  122. da.SelectCommand = cmd
  123. dt = New DataTable
  124. da.Fill(dt)
  125. dgv4.DataSource = dt
  126. dgv4.RowHeadersWidth = 20
  127. dgv4.RowHeadersVisible = False
  128. dgv4.Columns(0).Width = 150
  129. dgv4.Columns(1).Width = 180
  130. dgv4.Columns(5).Width = 150
  131. End Sub
  132. Private Sub dgv3_CellEnter(sender As Object, e As DataGridViewCellEventArgs) Handles dgv3.CellEnter
  133. End Sub
  134. End Class