如何防止用户在FileMaker Pro中使用千位分隔符?

时间:2019-02-12 14:19:14

标签: filemaker

在FileMaker Pro中,当使用数字字段时,用户可以选择是否使用千位分隔符。例如,如果我有一个包含商品价格字段的数据库,则用户可以输入1,0001000

我正在使用数据库生成需要上传的XML文件。事实是,我的XML方案规定仅允许1000的值,而不允许1,000的值。因此,我想自动删除逗号,或者(尝试使用千位分隔符输入值时)(在这种情况下为我的首选)提醒用户。

我尝试的是以下内容。

对于该字段,我正在设置验证选项。例如:

  • 需要严格的数据类型:仅数字
  • 通过计算验证:Position ( Self ; ","; 1 ; 1 ) = 0
  • 通过计算验证:Self = Substitue ( Self, ",", "")
  • 自动输入计算:Filter(Self;“ 0123456789.”)

不幸的是,这些都不起作用。由于该字段被定义为一个数字(并且我想像这样保持它,因为我也基于该数字执行计算),所以Position函数和Substitute函数显然忽略了千位分隔符!

编辑: 请注意,我是通过串联字符串来生成XML的,例如:

"<Products><Product><Name>" & Name & "</Name><Price>" & Price & "</Price></Product></Product>"

原因是我导出的内容取决于数据库中的值。因此,我没有使用[File] [Export records ...]函数。

3 个答案:

答案 0 :(得分:1)

  

我正在使用数据库生成需要上传的XML文件。事实是,我的XML方案规定只允许值为1000,而不是1000。

如果这只是导出时的问题,为什么在导出时不处理呢?

  • 如果要使用XSLT导出为XML,则可以向 您的样式表以从所有数字字段中删除逗号;
  • 或者,您可以从字段为 格式化为不显示逗号,并在出现以下情况时选择Apply current's layout data formatting to exported data选项 导出。

已添加:

  

也许我应该澄清一下。我不使用导出功能来生成XML,因为XML的格式应涉及一些逻辑(取决于我要导出的数据)。相反,我要做的是创建一个字符串,在其中结合XML标记和数据库中的实际值。

恕我直言,您由于没有利用内置的XML / XSLT导出选项而犯了一个错误。任何可以想象得到的逻辑都可以通过这种方式实现,而不必为创建有效XML的脆弱任务增加解决方案的负担。

无论如何,如果您在计算中使用该字段,则可以将所有对该字段的引用替换为:

GetAsNumber (YourField )

获取无格式,仅数字的值。

答案 1 :(得分:1)

自动输入计算将起作用,但是您需要取消选中“不替换字段的现有值”框(默认情况下处于选中状态)。

我建议使用计算GetAsNumber(self)作为自动输入计算。如果仅包含整数,则将其包装在对Int()

的调用中

答案 2 :(得分:0)

您的问题使我感到困惑。据我所知,FileMaker不会存储千位分隔符,而是仅将其提供为显示选项。 这就是为什么这些函数找不到它的原因。 您确定要导出原始数据,而不是“格式化为布局”变体吗?