簡體   English   中英

合並字段的MS Access Calc字段

[英]MS Access Calc Field with combined fields

我一直在嘗試解決此calc字段問題大約30分鍾,看來我在表達式中具有正確的單個字段條件,例如[points]和[contrib],但組合了[[points] + [contrib])字段不符合將字段設置為正確的成員類型的要求,因此添加這些成員時,它將返回其他一些基本成員類型。 我可以在添加的字段之間使用between運算符嗎? 我嘗試過,但是有一些構圖錯誤。 因此,換句話說,如果您獲得45分,則將您設置為僅在點數字段中命名的基本分數,如果您有45分的貢獻,則按預期在calc字段中將其設置為基本分數,但如果是50 + 50,則改為設置為“基本”時應為“更好”的成員標簽。 否則,這個簡單的語句應該看起來是正確的,但是計算機在添加時不會讀取它。 由於某種原因,它一定不能識別組合值,並且calc字段沒有sum()函數。 在這里關注:(([[points] + [Contrib])> = 45 And([points] + [Contrib])<100),“基本”,

IIf(([points] >=45 And [points]<100) Or ([Contrib] >=45 And [Contrib] <100) Or (([points]+[Contrib]) > = 45 And ([points]+[contrib] < 100),"Basic",
IIf(([points] >=100 And [points] <250) Or ([Contrib] >=100 And [Contrib] <250) Or ((([points]+[Contrib]) >=100) And (([points]+[Contrib])<250)),"Better",
IIf(([points] >=250 And [points]<500) Or ([Contrib] >=250 And [Contrib] <500) Or ((([points]+[Contrib]) >=250) And (([points]+[Contrib])<500)),"Great",
IIf(([points] >=500) Or ([Contrib] >=500) Or (([points]+[Contrib]) >=500),"Best","Non-member"))))

這是Access 2010表中的數據示例,該表包括一個名為member_type的計算字段:

id points Contrib member_type
-- ------ ------- ----------
 1      1       1 Non-member
 2     50       1 Basic
 3    200       1 Better
 4    300       1 Great
 5    600       1 Best

如果那是您想要的計算字段,這是我用於member_type的表達式:

IIf([points]+[Contrib]>=45 And [points]+[Contrib]<100,'Basic',IIf([points]+[Contrib]>=100 And [points]+[Contrib]<250,'Better',IIf([points]+[Contrib]>=250 And [points]+[Contrib]<500,'Great',IIf([points]+[Contrib]>=500,'Best','Non-member'))))

如果我沒有完全正確,這里是相同的表達式格式,以便您可以更好地查看需要更改的地方:

IIf([points]+[Contrib]>=45 And [points]+[Contrib]<100,'Basic',
IIf([points]+[Contrib]>=100 And [points]+[Contrib]<250,'Better',
IIf([points]+[Contrib]>=250 And [points]+[Contrib]<500,'Great',
IIf([points]+[Contrib]>=500,'Best','Non-member'
))))

請注意,如果pointContrib均為Null, member_type將顯示“ Non-member” 如果這不是您想要的行為,則將需要一個更復雜的表達式。 由於計算字段表達式不能使用Nz()你將不得不代替像IIf([points] Is Null,0,[points])為每次發生[points]IIf([Contrib] Is Null,0,[Contrib])表示[Contrib]

禁止為這些字段設置Null(將其Required屬性設置為Yes )並將Default Value設置為零會更簡單。

如果您要測試的值是BETWEEN的限制> =或<=,則BETWEEN運算符將返回TRUE。

如果您查看的是50 + 50,則總計= 100,並且您介於44和100之間。這將得出“基本”的答案。 將([points] + [Contrib])在44和100之間的范圍更改為([points] + [Contrib])在44和99之間)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM