2012-12-06 50 views
0

我有一張有30個不同字段的表。只有當他們有特定的值時,我纔想要總和所有的列。我不希望一個領域的價值被視爲總結,當它的價值不滿足特定的條件。例如,我有5個字段ID,Score1,Score2,Score3,Score4。只有當它們沒有值-8或-9時,我纔會總結所有這些不同的字段。我怎樣才能做到這一點。如何根據每個表中的條件得到表中不同列的總和

回答

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

+0

感謝您的響應。讓我更詳細地解釋一下。我有一個表格和表格,其中輸入並保存了值c_id,ch_id,Score1,Score2,Score3,Score4。我想計算得分的形式是完全不同的形式。要求是我有一個組合框,其中包含所有值c_id。現在基於此,我必須生成一個具有c_id,ch_id,Total Score的報告。如果問題冗長,我真的很抱歉。我沒有得到的是如何使用你在VBA查詢中指定的條件。 – user1804254

+0

對不起,我的意思是說在VBA之外,沒有CASE語句,但是您可以在查詢或VBA語句中使用iif。在VBA中,你可以使用'myVariable = iif()',在查詢中使用'myAlias:iif()'。雖然我並不擅長Access,但你可能不得不說:'myAlias:(iif()+ iif()+ ...)' – EvilBob22

+0

嘿EvilBob ...非常感謝...我做了一些改變,IIF可以用於查詢和VBA。 – user1804254

0

細節在SQL你可以使用這樣的查詢,

SELECT C_ID,ch_id,(IIF(Response4 <> - (IIF(響應3 <> -8 AND響應3 <> -8,響應3,0))來自Teacher_Questionnaire的AS分數 ;以及響應4(響應8,012)響應4,0))+ 。

昏暗DB數據庫 昏暗RS作爲記錄 昏暗sSQL作爲字符串 昏暗sSQL1作爲字符串

sSQL = " SELECT SUM (" & _ 

「(IIF(Teacher_Questionnaire:

在VBA中,你可以按如下方式使用相同的。 (IIF(Teacher_Questionnaire.Response3 <> -8 AND Teac)(「教師問卷調查」響應3 <> -8和教師教學問卷調查響應4 <> -8,Teacher_Questionnaire.Response4,0))+「&_ 」 her_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 

結束子

+0

是的,這是我的想法! – EvilBob22

相關問題