|
4#
楼主 |
发表于 2007-8-6 11:58:05
|
只看该作者
Dim strWhere As String '定义条件字符串
Dim qdf As DAO.QueryDef 'qdf被定义为一个查询定义对象
Dim strSQL As String
strWhere = "" '设定初始值-空字符串
'判断【日期】条件是否有输入的值
If Not IsNull(Me.日期) Then
'有输入
strWhere = strWhere & "([日期] like '" & Me.日期 & "') AND "
End If
'如果输入了条件,那么strWhere的最后肯定有" AND ",这是我们不需要的,
'要用LEFT函数截掉这5个字符。
If Len(strWhere) > 0 Then
'有输入条件
strWhere = Left(strWhere, Len(strWhere) - 5)
End If
'先在立即窗口显示一下strWhere的值,代码调试完成后可以取消下一句
'Debug.Print strWhere
'根据是否有条件来设定交叉表查询的SQL语句
If Len(strWhere) > 0 Then
strSQL = "TRANSFORM Sum(星期三.余额) AS 余额之总计 SELECT 星期三.科目, 星期三.日期 FROM 星期三 "
strSQL = strSQL & "WHERE(" & strWhere
strSQL = strSQL & ") GROUP BY 星期三.科目, 星期三.日期 PIVOT 星期三.部门"
strSQL = "TRANSFORM Sum(星期三分类.余额合计) AS 余额合计之总计 SELECT 星期三分类.分类, 星期三分类.日期 FROM 星期三分类 "
strSQL = strSQL & "WHERE(" & strWhere
strSQL = strSQL & ") GROUP BY 星期三分类.分类, 星期三分类.日期 PIVOT 星期三分类.部门"
Else
strSQL = "TRANSFORM Sum(星期三.余额) AS 余额之总计" & _
" SELECT 星期三.科目, 星期三.日期" & _
" FROM 星期三" & _
" GROUP BY 星期三.科目, 星期三.日期" & _
" PIVOT 星期三.部门"
strSQL = "TRANSFORM Sum(星期三分类.余额合计) AS 余额合计之总计" & _
" SELECT 星期三分类.分类, 星期三分类.日期" & _
" FROM 星期三分类" & _
" GROUP BY 星期三分类.分类, 星期三分类.日期" & _
" PIVOT 星期三分类.部门"
End If
'修改交叉表查询的SQL语句
Set qdf = CurrentDb.QueryDefs("全部周报")
Set qdf = CurrentDb.QueryDefs("全部周报分类")
qdf.SQL = strSQL
qdf.Close
Set qdf = Nothing
'显示交叉表的内容,不能直接刷新
Me.全部周报.SourceObject = ""
Me.全部周报分类.SourceObject = ""
Me.全部周报.SourceObject = "查询.全部周报"
Me.全部周报分类.SourceObject = "查询.全部周报分类"
Exit_cmd查询_Click:
Exit Sub
Err_cmd查询_Click:
MsgBox Err.Description
Resume Exit_cmd查询_Click
End Sub |
|