2015-03-02 114 views
2

我有一個名爲「fin_Paiement」的窗體上的字段。我想要做的是:字段值只接受數字和點,並用點替換任何其他字符。我用替換funciton做了字母值,但它不起作用。 我試過這個:檢查數字字段lotusscript

Dim workspace As New NotesUIWorkspace 
Dim uidoc As NotesUIDocument 
Dim doc As NotesDocument 
Dim db As NotesDatabase 
Set uidoc = workspace.CurrentDocument 
Set doc = uidoc.Document 
doc.fin_Paiement = Replace(doc.fin_Paiement_Montant(0), "*[a-z,A-Z]*", ".") 

我會感謝您的幫助!謝謝

回答

4

創造出改變所有的非數字的功能,以圓點

Function ToDigitsAndDots(orig As String) As String 
    Dim i As Integer 
    Dim char As String 
    For i=1 To Len(orig) 
     char = Mid(orig, i, 1) 
     If Not char Like "#" Then char = "." 
     JustDigitsAndDots = JustDigitsAndDots & char 
    Next 
End Function 

,改變你的代碼行

doc.fin_Paiement = ToDigitsAndDots(doc.fin_Paiement_Montant(0)) 
+0

它的工作原理,感謝您的幫助 – user3082877 2015-03-03 12:32:51

0

LotusScript的Replace方法不支持正則表達式。你將不得不作出的第二個參數的所有字母組成的數組,例如:

doc.fin_Paiement = Replace(
Cstr(doc.fin_Paiement_Montant(0)), 
Split("a, b, c, d, e, f, g, h, i, j, you get the idea...", ", "), 
"." 
) 

注意,我沒有測試過這一點,但在理論上它應該做的伎倆。

0

請緩解我一個可怕的疑問:你的領域是類型「數字」,不是嗎?在這種情況下,不需要代碼,它只接受數字,並且在其屬性中指定小數點分隔符。默認情況下,字段的語言環境設置是Notes客戶端的語言環境設置,默認情況下是操作系統的語言環境設置,因此通常不需要擔心。

無論如何,這是你在LotusScript中通常不會做的事情! 最直接的方法是在該領域的一個事件中使用@functions。

查看您的幫助,here is some hint,然後您可能需要review this