1

我只是用几个表格建立了一个数据库系统。表格有货币字段。我在 Windows 中有一个美国英语语言设置和一个英语 Access 2007。所以我认为这就是我得到 $x,xxx.yy 格式的原因。我继续并完成了系统;我只将格式设置为货币,所以我认为实际的格式在其他地方。

数据库字段也被简单地设置为货币。

现在这将在瑞典机器上使用。如何设置全局货币格式,使其不会以 $x,xxx.yy 格式显示货币,而无需编辑每个表单上的所有字段?

(也就是说,它们仍应具有格式:货币,并且存储在数据库中并显示在字段中的确切数字应以正确的瑞典语格式显示。)

4

2 回答 2

1

此代码尚未经过彻底测试,但它可能对您有所帮助。在尝试之前备份您的数据库。

它的目的是用通用 value 替换 Access (偷偷地)存储的硬编码Format属性。$#,##0.00;($#,##0.00)Currency

Sub TweakCurrencyFormats()
Dim cdb As DAO.Database, tbd As DAO.TableDef, fld As DAO.Field
Dim ao As AccessObject, frm As Form, ctl As Control
Set cdb = CurrentDb

Debug.Print "Processing tables..."
For Each tbd In cdb.TableDefs
    For Each fld In tbd.Fields
        If fld.Type = 5 Then  '' Currency
            Debug.Print "[" & tbd.Name & "].[" & fld.Name & "]"
            fld.Properties("Format").Value = "Currency"
            fld.Properties("CurrencyLCID").Value = 1053  '' Swedish
        End If
    Next
    Set fld = Nothing
Next
Set tbd = Nothing

Debug.Print "Processing forms..."
For Each ao In CurrentProject.AllForms
    If Not ao.IsLoaded Then
        DoCmd.OpenForm ao.Name, acDesign
    End If
    Set frm = Application.Forms(ao.Name)
    For Each ctl In frm.Controls
        If ctl.Properties("ControlType").Value = 109 Then  '' text box
            If Left(ctl.Properties("Format").Value, 1) = "$" Then
                Debug.Print "[" & ao.Name & "].[" & ctl.Name & "]"
                ctl.Properties("Format").Value = "Currency"
            End If
        End If
    Next
    Set ctl = Nothing
    Set frm = Nothing
Next
Set ao = Nothing

Set cdb = Nothing
End Sub
于 2013-04-04T10:15:14.890 回答
0

不可能。

我会暂时搁置一下。如果您可以提供一个无需手动编辑所有表单的巧妙解决方案,我将很乐意接受您的解决方案,而不是这个。:)

于 2013-04-04T08:42:22.880 回答