2015-03-02 113 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