0

30 の異なるフィールドを持つテーブルがあります。特定の値がある場合にのみ、すべての列の合計が必要です。フィールド内の値が特定の条件を満たさない場合、フィールドの値を合計の対象として考慮したくありません。たとえば、id、Score1、Score2、Score3、Score4 の 5 つのフィールドがあります。-8 または -9 の値がない場合にのみ、これらすべての異なるフィールドの合計が必要です。これどうやってするの。

4

2 に答える 2

0

「実際の」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の詳細については、こちらを確認してください

于 2012-12-06T23:25:57.180 に答える
0

SQL では、次のようなクエリを使用できます。

SELECT c_id,ch_id, (IIF(Response4 <> -8 AND Response4 <> -8, Response4 , 0)) + (IIF(Response3 <> -8 AND Response3 <> -8, Response3 , 0)) Teacher_Questionnaire の AS スコア;

VBA では、次のように同じものを使用できます。

Dim db As Database Dim rs As Recordset Dim sSQL As String Dim sSQL1 As String

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

サブ終了

于 2012-12-07T00:38:15.930 に答える