如何防止用户在 FileMaker Pro 中使用千位分隔符?
How do I prevent users to use thousands separator in FileMaker Pro?
在FileMaker Pro中,当使用数字字段时,用户可以选择是否使用千位分隔符。例如,如果我有一个包含商品价格字段的数据库,用户可以输入 1,000
或 1000
.
我正在使用我的数据库生成需要上传的 XML 文件。问题是,我的 XML 方案规定只允许 1000
而不是 1,000
的值。因此,我想自动删除逗号,或者(在这种情况下我的偏好)在尝试输入带有千位分隔符的值时提醒用户。
我尝试的是以下内容。
对于该字段,我正在设置验证选项。例如:
- 需要严格数据类型:仅限数字
- 通过计算验证:
Position ( Self ; ","; 1 ; 1 ) = 0
- 通过计算验证:
Self = Substitue ( Self, ",", "")
- 自动输入计算:Filter( Self ; "0123456789." )
不幸的是,none 这些工作。由于该字段被定义为一个数字(我想保持这样,因为我也在根据这个数字执行计算),Position
函数和 Substitute
函数显然忽略了千位分隔符!
编辑:
请注意,我通过连接字符串生成 XML,例如:
"<Products><Product><Name>" & Name & "</Name><Price>" & Price & "</Price></Product></Product>"
原因是我导出的内容取决于我数据库中的值。因此,我没有使用[文件][导出记录...]功能。
你的问题让我很困惑。据我所知,FileMaker 不存储千位分隔符,而是仅将其作为显示选项提供。
这也是那些函数找不到它的原因。
您确定要导出原始数据而不是 "formatted as layout" 变体吗?
I am using my database to generate an XML file that needs to be uploaded. The thing is, that my XML scheme dictates that only a value of 1000 is allowed and not 1,000.
如果这只是导出时的问题,为什么不在导出时处理呢?
- 如果您使用 XSLT 导出为 XML,您可以将说明添加到
您的样式表从所有数字字段中删除逗号;
- 或者,您可以从字段所在的布局中导出
格式化为显示时不带逗号和 select
Apply current's layout data formatting to exported data
选项
正在导出。
已添加:
Perhaps I should have clarified. I am not using the export function to generate the XML as there is some logic involved in how the XML should be formatted (dependent on the data that I want to export). What I do instead is that I make a string where I combine XML-tags and actual values from the database.
恕我直言,您没有利用内置的 XML/XSLT 导出选项是错误的。任何可以想象到的逻辑都可以通过这种方式实现,而不会给您的解决方案增加创建有效 XML 的脆弱任务的负担。
无论如何,如果您在计算中使用该字段,您可以将所有对它的引用替换为:
GetAsNumber (YourField )
获取未格式化的纯数字值。
自动输入计算将起作用,但您需要取消选中框 "Do not replace existing value of field"(默认选中)。
我建议使用计算 GetAsNumber(self)
作为自动输入计算。如果它只应包含整数,请将其包装在对 Int()
的调用中
在FileMaker Pro中,当使用数字字段时,用户可以选择是否使用千位分隔符。例如,如果我有一个包含商品价格字段的数据库,用户可以输入 1,000
或 1000
.
我正在使用我的数据库生成需要上传的 XML 文件。问题是,我的 XML 方案规定只允许 1000
而不是 1,000
的值。因此,我想自动删除逗号,或者(在这种情况下我的偏好)在尝试输入带有千位分隔符的值时提醒用户。
我尝试的是以下内容。
对于该字段,我正在设置验证选项。例如:
- 需要严格数据类型:仅限数字
- 通过计算验证:
Position ( Self ; ","; 1 ; 1 ) = 0
- 通过计算验证:
Self = Substitue ( Self, ",", "")
- 自动输入计算:Filter( Self ; "0123456789." )
不幸的是,none 这些工作。由于该字段被定义为一个数字(我想保持这样,因为我也在根据这个数字执行计算),Position
函数和 Substitute
函数显然忽略了千位分隔符!
编辑: 请注意,我通过连接字符串生成 XML,例如:
"<Products><Product><Name>" & Name & "</Name><Price>" & Price & "</Price></Product></Product>"
原因是我导出的内容取决于我数据库中的值。因此,我没有使用[文件][导出记录...]功能。
你的问题让我很困惑。据我所知,FileMaker 不存储千位分隔符,而是仅将其作为显示选项提供。 这也是那些函数找不到它的原因。 您确定要导出原始数据而不是 "formatted as layout" 变体吗?
I am using my database to generate an XML file that needs to be uploaded. The thing is, that my XML scheme dictates that only a value of 1000 is allowed and not 1,000.
如果这只是导出时的问题,为什么不在导出时处理呢?
- 如果您使用 XSLT 导出为 XML,您可以将说明添加到 您的样式表从所有数字字段中删除逗号;
- 或者,您可以从字段所在的布局中导出
格式化为显示时不带逗号和 select
Apply current's layout data formatting to exported data
选项 正在导出。
已添加:
Perhaps I should have clarified. I am not using the export function to generate the XML as there is some logic involved in how the XML should be formatted (dependent on the data that I want to export). What I do instead is that I make a string where I combine XML-tags and actual values from the database.
恕我直言,您没有利用内置的 XML/XSLT 导出选项是错误的。任何可以想象到的逻辑都可以通过这种方式实现,而不会给您的解决方案增加创建有效 XML 的脆弱任务的负担。
无论如何,如果您在计算中使用该字段,您可以将所有对它的引用替换为:
GetAsNumber (YourField )
获取未格式化的纯数字值。
自动输入计算将起作用,但您需要取消选中框 "Do not replace existing value of field"(默认选中)。
我建议使用计算 GetAsNumber(self)
作为自动输入计算。如果它只应包含整数,请将其包装在对 Int()