Office中国论坛/Access中国论坛

标题: 请教:用窗体列表控件生成动态交叉表查询 [打印本页]

作者: RickyZjw-3721    时间: 2009-5-28 23:09
标题: 请教:用窗体列表控件生成动态交叉表查询
本帖最后由 RickyZjw-3721 于 2009-5-29 22:27 编辑

如附件,我想用窗体组合框列表加一个含VBA代码的Command按扭生成一个不同月份的交叉表查询。CombBox控件"ActExpTabByMth"存放每月不同的表名,Command控件"RNDAcctSplitByProj"中的VBA代码用于生成和查询“RNDAcctsSplitByProject_Apr09”一样格式的每月动态查询。可惜我对VBA代码还不是很熟悉(这些代码我也是参照网友的同类程序依葫芦画瓢,只懂个大概意思 ),尝试了几次均不成功。这个需求的要点是1,组合框控件名作为动态表名;2,要生成一个交叉表查询。恳请各位高手帮忙给指点一下,看如何改动我原来的代码才能达到上述要求。先行谢过了!!
作者: RickyZjw-3721    时间: 2009-6-2 23:04
自己重新修改了一下代码如下:可是运行时还是出现错误提示。是否SQL语句不能执行交叉表查询?
Private Sub RNDAcctSplitByProj_Click()
    Dim MthExpName As String

    Dim Db As DAO.Database
    Dim qdf As DAO.QueryDef

    Dim StrSql As String

    MthExpName = Me.ActExpTabByMth

    Set Db = CurrentDb
   
    If MsgBox("是否要拆分实际月份研发费用", vbYesNo, 警告") = vbNo Then Exit Sub
    StrSql = "SELECT [MthExpName].Reference, [MthExpName].Acct, AccountsDescription.AcctDescription, [MthExpName].Activ, FROM " _
        & "AccountsDescription INNER JOIN MthExpName ON AccountsDescription.Acct = [MthExpName].Acct " _
        & "TRANSFORM Sum ([MthExpName].PeriodActivity) AS PeriodActivity " _
        & "GROUP BY [MthExpName].Reference, [MthExpName].Acct, AccountsDescription.AcctDescription " _
        & "HAVING ((([MthExpName].Activ) Like '6*'))" _
        & "PIVOT Format([MthExpName].Activ)"
   
    Set qdf = Db.CreateQueryDef("RNDAcctsSplitByProject", "StrSql")

    DoCmd.OpenQuery "RNDAcctsSplitByProject", acViewPivotTable, acEdit
        
Exit_RNDAcctSplitByProj_Click:
    Exit Sub

Err_RNDAcctSplitByProj_Click:
    MsgBox Err.Description
    Resume Exit_RNDAcctSplitByProj_Click
   
End Sub
作者: Threaten    时间: 2009-6-3 01:36
SQL语句开头要加上Parameters [MthExpName].Activ;
作者: RickyZjw-3721    时间: 2009-6-3 22:17
是在每一个[MthExpName]前都加Parameters吗?还是不太明白...我又尝试了一下,还是出错(同样的错误提示)。请Threaten老兄再帮忙指点一二。谢谢啦
作者: Threaten    时间: 2009-6-4 16:07
本帖最后由 Threaten 于 2009-6-4 16:11 编辑

只是在SQL语句开头的时候定义一下窗体控件名称, Parameters 控件名称 类型
作者: RickyZjw-3721    时间: 2009-6-4 22:13
我实在是太笨了,还是没领会您的意思。您能直接在代码里按您的意思帮我修改好,然后再指出来是哪里出问题好吗?
作者: 风啸啸    时间: 2009-6-4 22:16
跟随学习。
作者: RickyZjw-3721    时间: 2009-6-6 20:12
这两天看了一些网上的资料,好像要用到ADO(ActiveX Data Objects)方法才能实现动这样的态交叉表查询,这就需要一些编程方面的知识。正在学习中。。。
作者: RickyZjw-3721    时间: 2009-6-28 11:54
经过不懈的尝试和努力终于找到了一个解决方案,其实用不着ADO方法。附件里是我修改后的代码,分享出来供大家参考!也欢迎指正!
作者: dragon2476    时间: 2009-11-10 11:11
收了
作者: gurenhua    时间: 2009-11-29 22:25
跟着学习一下
作者: wen123456    时间: 2009-11-29 23:17
跟着学习一下
作者: xie16abc    时间: 2010-2-26 17:23
学习一下
作者: 风啸啸    时间: 2010-2-26 18:06
看看。




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