用分组的记录集,代码可以参考下面:ADODB.Connection对象属性的设置。 错误的设置是 conn.Provider = "SQLOLEDB.1" conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=mytest;Data Source=SUNRY"这个Provider不支持“shape”关键字,必须用下面来设置: conn.Provider = "MSDataShape" conn.ConnectionString = "PROVIDER=MSDataShape;DATA PROVIDER=SQLOLEDB;" & _ "SERVER=;DATABASE=mytest;UID=sa;PWD=;"这样设置就可以支持“shape”关键字。 然后用下面的语句可以生成多重数据集: Dim sqlOne As String Dim sqlTwo As String Dim sqlstr As String sqlOne = "Select 资料类型,归档日期,count(*) as DayTotal from index1 group by 资料类型, 归档日期 order by 资料类型,归档日期" sqlTwo = "SHAPE {" & sqlOne & "}" & _ " as kkk COMPUTE kkk, sum(kkk.DayTotal) as SubTotal by 资料类型" sqlstr = "SHAPE (" & sqlTwo & ")" & _ " as eee COMPUTE eee, sum(eee.SubTotal) as Total "
把datareport中的控件绑定到对应字段
错误的设置是
conn.Provider = "SQLOLEDB.1"
conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=mytest;Data Source=SUNRY"这个Provider不支持“shape”关键字,必须用下面来设置:
conn.Provider = "MSDataShape"
conn.ConnectionString = "PROVIDER=MSDataShape;DATA PROVIDER=SQLOLEDB;" & _
"SERVER=;DATABASE=mytest;UID=sa;PWD=;"这样设置就可以支持“shape”关键字。
然后用下面的语句可以生成多重数据集:
Dim sqlOne As String
Dim sqlTwo As String
Dim sqlstr As String
sqlOne = "Select 资料类型,归档日期,count(*) as DayTotal from index1 group by 资料类型, 归档日期 order by 资料类型,归档日期"
sqlTwo = "SHAPE {" & sqlOne & "}" & _
" as kkk COMPUTE kkk, sum(kkk.DayTotal) as SubTotal by 资料类型"
sqlstr = "SHAPE (" & sqlTwo & ")" & _
" as eee COMPUTE eee, sum(eee.SubTotal) as Total "
rsParent.StayInSync = False
rsParent.CursorLocation = adUseClient
rsParent.Open sqlstr, conn
rsParent.Requery
Set DRDatumType.DataSource = rsParent 'rsParent是一个ADODB.Recordset对象 DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtType").DataField = "资料类型"
DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtDate").DataField = "归档日期"
DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtDayToal").DataField = "DayTotal"
DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtType").DataMember = "kkk"
DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtDate").DataMember = "kkk"
DRDatumType.Sections.Item("DatumType_Detail").Controls.Item("txtDayToal").DataMember = "kkk"
DRDatumType.Sections.Item("DatumType_SubTotal_Footer").Controls.Item("txtSubTotal").DataField = "SubTotal"
DRDatumType.Sections.Item("DatumType_SubTotal_Footer").Controls.Item("txtSubTotal").DataMember = "eee"
DRDatumType.Sections.Item("DatumType_Total_Footer").Controls.Item("txtTotal").DataField = "Total"
DRDatumType.Show 1