【问题标题】:How to show a field as Currency but with the data type being Text - Access 2013如何将字段显示为货币但数据类型为文本 - Access 2013
【发布时间】:2016-09-01 12:02:02
【问题描述】:

在我的 Access 中,我有一个表单,我想在其中显示几个表绑定(记录源)字段作为货币,它们的表数据类型是文本。

我似乎无法完成这项工作。到目前为止,我为实现这一目标所做的努力:

  • 在字段的控制源中使用Format,因此(在字段的控制源中):=Format(MyTextNumber; "Currency") - 导致#Type 错误(循环引用)
  • 在该字段的控制源中使用CCur=CCur(MyTextNumber) - 这将返回所有 0.00 金额(但带有货币符号)以及设计中的循环引用错误。
  • 我没有在表单中使用table 作为Recordsource,而是使用查询作为Recordsource,在该查询中我根据我尝试更改的字段创建了另一个字段:SELECT *, Format(MyTextNumber, "Currency") as MyTextNumberWithFormat FROM SomeTable 然后我使用MyTextNumberWithFormat 作为控制源,这返回好的值,但我无法直接编辑这些值,因为它基于表达式。
  • 还尝试使用控制源创建一个隐藏字段并创建一个使用隐藏字段作为其值的“空控制源字段”,然后在更改字段时编写我自己的UPDATE 语句(但无法获取这也可以工作)。

还有其他建议吗?

其他信息:

我还尝试在字段的“格式”选项卡中设置货币/欧元的格式/符号,但这也没有任何效果,尽管有趣的是当我使用 =Sum(MyField) 作为记录源时,然后格式/符号货币确实有效。

【问题讨论】:

  • 是的,我做到了。 Format 属性和控制源上的货币仅用于表字段(抱歉,在应该是 Controlsource 的地方使用记录源,在需要的主要帖子中将调整后的记录源写入 controlsource 时,我想不出这个词)
  • 文本是文本,数字是数字。格式化Sum() 有效,因为它会产生一个数字。 Format: Currency 对文本列唯一要做的就是右对齐该字段。最好的方法是修复您的数据类型。如果该字段包含货币值,为什么不将其更改为货币?所有=... 表达式将始终是只读的。
  • 啊,很高兴知道 = 表达式总是把它变成只读的!遗憾的是,我无法将格式更改为货币或任何数字。

标签: vba ms-access


【解决方案1】:
SELECT Table1.Test, Format([test],"Currency") AS Expr1
FROM Table1;

这对我有用,我输入了“123.45 英镑”和“123.45”,并以货币显示。你有过 ;在你的

【讨论】:

  • 如前所述,我已经对此进行了测试(不是用 ; 而是用 , 也)见第 3 点,它也用逗号。虽然它以货币格式显示正确的值,但我无法编辑记录,因为值为based on an expression。我想要的是展示良好的格式(货币),但也能够改变价值。
  • 您能否一次性将货币格式添加到表中的现有文本中,然后在文本框上添加一个更新前的代码,如果它不存在的话? if mid(textbox1.value,1,1)"£" then....
  • 感谢您输入 Nathan!不完全确定您对 Before_Update 语句的含义。你能举一些代码例子吗?如果它没有货币符号(使用您提供的中间代码),则尝试自己对文本框值(在 Form_beforeUpdate 事件上)执行格式,但这似乎不起作用。 Private Sub Form_BeforeUpdate(取消为整数)If Mid(Me.MyTextBox.Value, 1, 1) <> "€" Then Me.CorEenheidPrijs.Value = Format(Me.MyTextBox.Value, "Currency") End If End Sub
【解决方案2】:

导致#Type 错误(循环引用)

然后将您的文本框重命名为 MyTextNumber 以外的其他名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多