1,216
社区成员
发帖
与我相关
我的任务
分享
Option Explicit
Private Sub Command1_Click()
Dim cn As ADODB.Connection
Dim rsCol As ADODB.Recordset
Dim rsRow As ADODB.Recordset
Dim rsData As ADODB.Recordset
Dim oSubCode As Collection
Dim lvi As ListItem
Dim sCriteria As String
Dim i As Long
Set cn = New ADODB.Connection
cn.Open "..."
Set rsCol = cn.Execute("SELECT * FROM 表2")
Set rsRow = cn.Execute("SELECT DISTINCT ID FROM 表1")
Set rsData = cn.Execute("SELECT * FROM 表1")
Set oSubCode = New Collection
'添加列头'
ListView1.ListItems.Clear
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , , "ID"
While Not rsCol.EOF
ListView1.ColumnHeaders.Add , , rsCol("代码") & rsCol("名称")
oSubCode.Add rsCol("代码").Value
rsCol.MoveNext
Wend
'添加数据'
While Not rsRow.EOF
Set lvi = ListView1.ListItems.Add(, , rsRow("ID"))
For i = 1 To oSubCode.Count
rsData.Filter = "(ID=" & rsRow("ID") & ") AND (代码='" & oSubCode(i) & "')"
If rsData.EOF Then
lvi.SubItems(i) = "无"
Else
lvi.SubItems(i) = rsData("用量")
End If
Next
rsRow.MoveNext
Wend
End Sub
Private Sub Form_Load()
ListView1.View = lvwReport
End Sub
Private Sub Command1_Click()
Dim strSql As String
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim i As Integer
Dim j As Integer
cn.CursorLocation = adUseClient
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\tt\t1.mdb;Persist Security Info=False"
strSql = ""
strSql = strSql & " Transform Sum(用量) " & vbNewLine
strSql = strSql & " SELECT 日期, 产量" & vbNewLine
strSql = strSql & " FROM (select a1.日期, 明细, 用量, 产量" & vbNewLine
strSql = strSql & " from a1, a2, (select 日期, sum(a1.产量) as 产量 from a1 group by 日期) a3" & vbNewLine
strSql = strSql & " Where a1.id = a2.id And a1.日期 = a3.日期" & vbNewLine
strSql = strSql & " )" & vbNewLine
strSql = strSql & " GROUP BY 日期, 产量" & vbNewLine
strSql = strSql & " Pivot 明细" & vbNewLine
rs.Open strSql, cn, adOpenStatic, adLockOptimistic
With ListView1
'设置ListView1的标题、显示类型、整行选择和网格线属性
.ColumnHeaders.Clear
.ListItems.Clear
.View = lvwReport
.FullRowSelect = True
.GridLines = True
'为ListView1设置标题
For i = 0 To rs.Fields.Count - 1
.ColumnHeaders.Add , , rs.Fields(i).Name
Next i
'为ListView1设置各行数据
.ListItems.Clear
i = 0
While Not rs.EOF
i = i + 1
.ListItems.Add , , rs.Fields(0).Value
For j = 1 To rs.Fields.Count - 1
.ListItems(i).SubItems(j) = rs.Fields(j).Value & ""
Next j
rs.MoveNext
Wend
End With
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub