Office中国论坛/Access中国论坛

标题: 用有条件的交叉表查询制作报表代码出错(已解决) [打印本页]

作者: wang1950317    时间: 2013-3-11 09:04
标题: 用有条件的交叉表查询制作报表代码出错(已解决)
本帖最后由 wang1950317 于 2013-3-11 16:54 编辑

'使用论坛老师的一个实例,用一个交叉表查询为源制作一个报表,当在查询中添加一个条件后代码需要改动,请各位老师指教。谢谢!
'查询1名称:test2_交叉表1
TRANSFORM Last(test2.数量) AS 数量之最后一条记录
SELECT test2.编号
FROM test2
GROUP BY test2.编号
PIVOT test2.项目;
*******************
Private Sub Report_Open(Cancel As Integer)
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim A, B, C
Set cn = CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open "select * from test2_交叉表1", cn, adOpenKeyset, adLockPessimistic  '取得来源记录集
If rs.Fields.Count > 11 Then A = 11 Else: A = rs.Fields.Count       '假设记录集栏位大于11列,则a=11、否则a=记录集栏位数
If rs.Fields.Count = 0 Then Exit Sub
For B = 0 To A - 1
    Me("N" & B).ControlSource = rs(B).Name
Next
Me.RecordSource = rs.Source
For C = 0 To A - 1
    Me("L" & C).Caption = rs(C).Name
Next
End Sub
*****************************************88
'上面代码是用查询1制作一个报表(有11列),没有问题。但在查询中加入一个条件,制作报表就提示有问题:
***************************

'查询2:test2_交叉表1     添加了一个查询条件,打开报表提示:至少一个参数没有指定值
*****************
PARAMETERS [forms]![窗体1]![编号] Text ( 255 );
TRANSFORM Last(test2.数量) AS 数量之最后一条记录
SELECT test2.编号
FROM test2
WHERE (((test2.编号)=[forms]![窗体1]![编号]))
GROUP BY test2.编号
PIVOT test2.项目;
***************

rs.Open "select * from test2_交叉表2", cn, adOpenKeyset, adLockPessimistic  '这一句提示:至少一个参数没有指定值
请看附件,这一句该怎样改动?谢谢!
  
一不小心,竟然上传了三个,编辑中找不到删除按钮,抱歉!

作者: roych    时间: 2013-3-11 13:30
默认情况下,交叉表查询的条件会增加一个parameter参数,因此需要重新修正SQL语句。详细请参考附件。
[attach]51425[/attach]
作者: wang1950317    时间: 2013-3-11 16:43
啊啊,非常好!谢谢roych 老师。
不过不太懂,慢慢学习了。
作者: ljp518    时间: 2013-3-12 08:32
{:soso_e181:}




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3