2011-06-06 159 views

回答

2

在表定義中:不可能。

作爲查詢:

SELECT 
    IIF(FieldA = 0; 0; FieldB/FieldA) AS FieldC 
FROM 
    ATableWithFieldAAndFieldB 

正如VBA SQL文本:更換;有,

2

你可以這樣添加程序到你的模塊代碼...

Public Function CalculateFieldC(ByVal fieldA as Long, ByVal fieldB as Long) as Single 
    If fieldA = 0 Then 
    CalculateFieldC = 0 
    Else: CalculateFieldC = fieldB/fieldA 
    End If 
End Function 

然後從SQL語句調用它;例如:

SELECT fieldA, fieldB, CaculateFieldC(fieldA, fieldB) AS fieldC 
FROM aTableWithFieldAandFieldB; 
+0

懶惰的代碼:Variant類型應爲參數和函數返回聲明。返回類型尤其可以顯着改進Jet/ACE對使用此函數的SQL WHERE子句的優化。 – 2011-06-09 01:25:44

+0

我省略了數據類型聲明,因爲我認爲隱式地提出問題的人應該是爲過程輸入和輸出選擇適當變量類型的人。 – 2011-06-10 02:00:58

+0

關於聲明這兩個參數和函數返回變量,我真的不知道這是如何改善......我認爲在VB和VBA的所有版本中,省略了As Type子句會自動導致將變量數據類型分配給變量。這就是說,我同意儘可能避免變體,因爲它們的使用需要更大的內存要求和更多的處理時間。我通常只在聲明變量時要處理空值,或者當我需要能夠測試是否缺少參數時。 – 2011-06-10 06:34:28