Office中国论坛/Access中国论坛

标题: 请教:一个看似简单的查询问题 [打印本页]

作者: RickyZjw-3721    时间: 2009-10-16 22:32
标题: 请教:一个看似简单的查询问题
如附件,我想设计一个查询把表"ExpnDTL10101_Jul"以A20和F20开头的字段值加起来作为一个新字段TtlYrFC,把以P20开头的字段值加起来作为字段TtlYrPP,也考虑到了动态字段名的选取问题,在窗体"TabTtl_Query"里的按钮"Command0"包含了查询的VBA代码,经过多次调试总执行不成功. 烦请各位高手帮忙看一下问题出在哪里?谢谢!
作者: asklove    时间: 2009-10-17 10:17
笨办法:一个一个相加,不用sum()
            With rs
                .Open "ExpnDTL10101_Jul", CurrentProject.Connection, adOpenKeyset, adLockReadOnly
                For a = 0 To .Fields.Count - 1
                    Bj = Left(.Fields(a).Name, 3)
                    If Bj = "A20" Or Bj = "F20" Or Bj = "P20" Then
                        If Bj = "P20" Then
                            flds1 = flds1 & "+" & "[" & .Fields(a).Name & "]"
                        Else
                            flds = flds & "+" & "[" & .Fields(a).Name & "]"
                        End If
                    End If
                Next
                .Close
            End With
            
            flds = Right(flds, Len(flds) - 1)
            flds1 = Right(flds1, Len(flds1) - 1)
            striSQL = "SELECT acct,AcctDescription ," & flds & " AS TtlYrFC, " & flds1 & " AS TtlYrPP FROM ExpnDTL10101_Jul "
            Set qdf = CurrentDb.QueryDefs("ExpnDtlQry")
            qdf.Sql = striSQL
            qdf.Close
            Set qdf = Nothing
            DoCmd.OpenQuery "ExpnDtlQry"
作者: asklove    时间: 2009-10-17 10:28
本帖最后由 asklove 于 2009-10-17 10:50 编辑

不好意思,看一下你的表,好像结果不正确 :( 郁闷

加上Nz()结果好像正确

If Bj = "A20" Or Bj = "F20" Or Bj = "P20" Then
            If Bj = "P20" Then
               flds1 = flds1 & "+ Nz([" & .Fields(a).Name & "],0)"
            Else
               flds = flds & "+ Nz([" & .Fields(a).Name & "],0)"
            End If
End If
作者: RickyZjw-3721    时间: 2009-10-17 21:57
太感谢了!其实有时"笨"办法倒是最有效的办法! 我把修改后的代码附上,供感兴趣的其他网友参考.




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