大虾,具体一些么,我一分组,就过滤掉重复的数据呀.表单结构 ID 主键 int aoto+1 考号 vchar 学号 vchar 班级 vchar
而且分组语句提示XXX字段不在聚合函数中
试试: '运行VB,选择“工程_引用”命令,引用 Microsoft ActiveX Data Objects 2.5 LibraryOption ExplicitPrivate Sub DataReport_Initialize() Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Dim Sql, strSql As String
ID 主键 int aoto+1
考号 vchar
学号 vchar
班级 vchar
'运行VB,选择“工程_引用”命令,引用 Microsoft ActiveX Data Objects 2.5 LibraryOption 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"
'用数据源连接(SQL数据库可以这样连接)
'.Open "ODBCName", "sa", "Password"
End With'添加RptTextBox控件,设置属性 '分组标头,注意不要设置其DataMember属性
RptGroup.Sections("Section6").Controls("text1").DataField = "班级"
同时在属性窗口,设置“分组标头”强制分页(ForcePageBreak = 1 - rptPageBreakBefore) '细节标头,其中“miCmd”是自定义的分组名称
RptGroup.Sections("Section1").Controls("text2").DataField = "id"
RptGroup.Sections("Section1").Controls("text2").DataMember = "miCmd"
RptGroup.Sections("Section1").Controls("text3").DataField = "考号"
RptGroup.Sections("Section1").Controls("text3").DataMember = "miCmd"
RptGroup.Sections("Section1").Controls("text4").DataField = "学号"
RptGroup.Sections("Section1").Controls("text4").DataMember = "miCmd"
'查询表:
Sql = "SELECT * FROM `tb`"
'这里注意tb不是用单引号括起来的,而是用Tab键上方的那个带~的键上的`括起来的。
'SQL数据库用数据源的话,可以不用这个`号
'在表名后可以加上Where子句
'分组纪录集:
strSql = "SHAPE {" & Sql & " } " & _
"AS miCmd COMPUTE miCmd BY '班级' "
Set rs = New ADODB.Recordset
rs.Open strSql, cn, adOpenStatic, adLockReadOnly Set Me.DataSource = rs
End Sub
strConn = "Provider=MSDataShape;Data Provider=SQLOLEDB;Password=" & frmLogin.txtPWD.Text & ";Persist Security Info=True;User ID=" & frmLogin.txtUID.Text & ";Initial Catalog=学籍管理;Data Source=" & frmLogin.txtServer.Text Conn.Open strConn, "", "", -1