假设,在ACCESS中有表sheet1,编排如下
主编号 副编号 数据
1 1 1
1 2 2
1 3 3
2 1 4
2 1 5
3 1 6我想列出报表如下:
主编号1
副编号 数据
1 1
2 2
3 3
主编号2
副编号 数据
1 4
2 5
主编号3
副编号 数据
1 6请问我怎样才能用DataReport和DataEnviroment做出这样的报表呢?
主编号 副编号 数据
1 1 1
1 2 2
1 3 3
2 1 4
2 1 5
3 1 6我想列出报表如下:
主编号1
副编号 数据
1 1
2 2
3 3
主编号2
副编号 数据
1 4
2 5
主编号3
副编号 数据
1 6请问我怎样才能用DataReport和DataEnviroment做出这样的报表呢?
1.运行VB,选择“工程_引用”命令,引用 Microsoft ActiveX Data Objects 2.5 Library
2.添加DataReport。插入分组标头
3.添加Text控件布局。它们的相应属性可以在代码中设置。
双击DataReport,添加代码如下:Private Sub DataReport_Initialize()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Sql, strSql As String
'连接数据库
Set cn = New ADODB.Connection
With cn
.Provider = "MSDataShape.1" '一定要这句
.Open "miGroup", "Admin", "" '通过数据源连接数据库
End With
'设置text控件属性
'分组标头,注意不要设置其DataMember属性
DataReport1.Sections("Section6").Controls("text1").DataField = "id"
'细节标头,其中“miCmd”是分组名称
DataReport1.Sections("Section1").Controls("text2").DataField = "iName"
DataReport1.Sections("Section1").Controls("text2").DataMember = "miCmd"
DataReport1.Sections("Section1").Controls("text3").DataField = "iCode"
DataReport1.Sections("Section1").Controls("text3").DataMember = "miCmd"
'查询表:
Sql = "SELECT * FROM `tb`"
'(这里注意tb不是用单引号括起来的,而是用Tab键上方的那个带~的键上的`括起来的)
'分组并打开查询记录集
strSql = "SHAPE {" & Sql & " } " & _
"AS miCmd COMPUTE miCmd BY 'id' "
Set rs = New ADODB.Recordset
rs.Open strSql, cn, adOpenStatic, adLockReadOnly Set Me.DataSource = rs
End Sub你只要将上述代码中的id改为“主编号”,iName改为“付编号”,iCode改为“数据”,就可以了
With cn
.Provider = "MSDataShape.1" '一定要这句
.Open "Data Provider=Microsoft.Jet.OLEDB.4.0 ;" & _
"Data Source=" & App.Path & "\db1.mdb;" & _
"Persist Security Info=False"
End With
以上注意次序以上代码和用数据源只是连接数据库的格方式不同,不用DataEnviroment的原因就是可以灵活的调整报表的数据源,你只要修改上述代码中的Sql和strSql,就可以打印出不同要求的报表