'-------------------------------------------------------------------------------------- '***************************** DataReport 分组示例 **************************** '---------------------------------------------------------------------------------------'运行VB,选择“工程\引用”命令,引用“Microsoft AetiveX Date 2.x Library” Option ExplicitPrivate Sub DataReport_Initialize() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim Sql, strSql As String
哦,SQL这样连接可能不行(我没试)。但可以建立ODBC数据连接,如下所示:'连接数据库 Set cn = New ADODB.Connection With cn .Provider = "MSDataShape.1" '一定要这句 .Open "youODB","sa","youPass" End With
'***************************** DataReport 分组示例 ****************************
'---------------------------------------------------------------------------------------'运行VB,选择“工程\引用”命令,引用“Microsoft AetiveX Date 2.x Library”
Option ExplicitPrivate Sub DataReport_Initialize()
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim Sql, strSql As String
'连接数据库(Access)
Set cn = New ADODB.Connection
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'设置RptTextBox控件属性
'分组标头,注意不要设置其DataMember属性
RptGroup.Sections("Section6").Controls("text1").DataField = "id"
'细节标头,其中“miCmd”是分组名称
RptGroup.Sections("Section1").Controls("text2").DataField = "iName"
RptGroup.Sections("Section1").Controls("text2").DataMember = "miCmd"
RptGroup.Sections("Section1").Controls("text3").DataField = "iCode"
RptGroup.Sections("Section1").Controls("text3").DataMember = "miCmd"
'查询表:
Sql = "SELECT * FROM `tb`"
'这里注意tb不是用单引号括起来的,而是用Tab键上方的那个带~的键上的`括起来的。
'在表名后可以加上Where子句
'打开查询记录集
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
其实我想用DATA REPORT 实现如下的效果
单号:no0001
项目 原因 说明
1 ffff gggg
2 cccc okffd-------------------------------
单号:no0002
项目 原因 说明
1 dddd wfkjad也就是说有一个按单号分组 然后项目,原因,说明等在细节中
单号可以有很多个,且要能让单号连续打印
这样能实现吗???
你可以建一个数据库db1,字段 ID/iName/iCode,都是文本类型,随便输入数据。在程序中怗上上面的代码试试。
但提示"参数类型不正确,或不在可以接受的范围内,或与其它参数冲突"
Set cn = New ADODB.Connection
With cn
.Provider = "MSDataShape.1" '一定要这句
.Open "youODB","sa","youPass"
End With
问题已经解决,谢谢你的例子,给了我一个很好的思路