2012-03-02 103 views
0

要檢查值是否在LS數字,我會寫下面的代碼:檢查並返回數字字段值?

Dim strVal as String 
Dim dVal as Double 

strVal = doc.fldValue(0) 

If IsNumeric(strVal) Then 
    dVal = cdbl(strVal) 
End If 

如何將我們的XPages內實現這一目標?我剛剛在數字字段上嘗試過getItemValueString,但它不起作用。 getItemValueDouble的工作,但正如我們都知道我們不能依靠該字段值是數字(以防某些流氓代理運行並錯誤地將特定文檔上的字段轉換爲文本字段!),那麼我們如何檢查是否它是數字或不是在XPages中?有沒有簡單的方法來實現這一點,或者我們必須使用getItemValue並檢查矢量對象嗎?有沒有其他人注意到這一點?

謝謝。

回答

3

根據我的經驗,當你保存一個數值時,它將作爲double值返回。如果您想確定.getitemvalue(「field」)值返回哪種數據類型,則可以在返回的值上使用.getClass()方法。例如,當你想將它打印到控制檯:

var x = doc.getItemValue("fieldx").get(0) 

if(x!=null){ 
    print(x.getClass()); 
} 

because of this you can use code like this: 

var x = doc.getItemValue("fieldx").get(0) // get first value of the field 
if(x != null){ 
    if(x instanceof java.lang.Double){ 

    } 

    if(x instanceof java.lang.Integer){} 
} 

或...你可以只使用

@IsNumber() 

;)

+0

不錯會給它一個嘗試 - 非常感謝:) – pipalia 2012-03-02 22:48:02

+1

這裏我們去: 函數isNumeric(doc:NotesDocument,strFieldName:String){0} {0} {0} {0}變量bReturnVal:Boolean = false; \t \t 如果(doc.hasItem(strFieldName)){ \t \t變種fieldVal = doc.getItemValue(strFieldName)[0]; \t \t \t 如果\t(fieldVal!= NULL){ \t \t \t如果(@IsNumber(fieldVal)){ \t \t \t \t bReturnVal = TRUE; \t \t \t} \t \t \t} \t} \t \t 返回bReturnVal; } – pipalia 2012-03-02 22:57:22