【发布时间】:2012-12-07 08:38:15
【问题描述】:
我有一个包含 30 个不同字段的表。只有当它们具有特定值时,我才想要所有列的总和。当字段中的值不满足特定条件时,我不希望将字段的值考虑为求和。比如我有5个字段id,Score1,Score2,Score3,Score4。只有当它们没有值 -8 或 -9 时,我才想要所有这些不同字段的总和。我该怎么做。
【问题讨论】:
标签: ms-access
我有一个包含 30 个不同字段的表。只有当它们具有特定值时,我才想要所有列的总和。当字段中的值不满足特定条件时,我不希望将字段的值考虑为求和。比如我有5个字段id,Score1,Score2,Score3,Score4。只有当它们没有值 -8 或 -9 时,我才想要所有这些不同字段的总和。我该怎么做。
【问题讨论】:
标签: ms-access
在“真正的”SQL 中,您将使用 CASE 语句,但在 Access 中似乎不支持该语句(通过 VBA 除外)。尝试使用类似的东西:
iif(score1 <> -8 and score1 <> -9, score1, 0) + iif(score2 <> -8 and score2 <> -9, score2, 0) + ....
查看此内容以了解有关 iif http://office.microsoft.com/en-us/access-help/iif-function-HA001228853.aspx 的详细信息
【讨论】:
myVariable = iif(),而在查询中则使用 myAlias: iif()。不过我不擅长 Access,你可能不得不说myAlias: (iif() + iif() + ...)
在 SQL 中,您可以使用这样的查询,
SELECT c_id,ch_id, (IIF(Response4 -8 AND Response4 -8, Response4 , 0)) + (IIF(Response3 -8 AND Response3 -8, Response3 , 0)) AS 分数 来自教师问卷;
在 VBA 中你可以使用相同的方法:
将 db 作为数据库 暗淡作为记录集 将 sSQL 作为字符串变暗 将 sSQL1 作为字符串调暗
sSQL = " SELECT SUM ( " & _
"(IIF(Teacher_Questionnaire.Response4 -8 AND Teacher_Questionnaire.Response4 -8, Teacher_Questionnaire.Response4 , 0)) + " & _ "(IIF(Teacher_Questionnaire.Response3 -8 AND Teacher_Questionnaire.Response3 -8, Teacher_Questionnaire.Response3 , 0)) ) AS 分数" & _ “来自 Teacher_Questionnaire,其中 ch_id = 99”
Set db = CurrentDb
Set rs = db.OpenRecordset(sSQL)
If rs.RecordCount > 0 Then
Me.TxtLevel1 = rs!Score
Else
Me.TxtLevel1 = "N/A"
End If
Set rs = Nothing
Set db = Nothing
结束子
【讨论】: