2013-04-04 63 views
1

我刚用一些表单构建了一个数据库系统。表格有货币字段。我在Windows和英语访问2007中有美国英语语言设置。所以我想这就是为什么我得到$ x,xxx.yy格式。我继续并完成了这个系统;我只将格式设置为货币,所以我认为实际的格式是在其他地方。更改所有表单上所有货币字段的货币格式

数据库字段也只设置为货币。

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

(也就是说,他们应该还是有格式:货币,并存储在数据库中,并显示在区域里应该简单地显示在正确的瑞典格式的确切数目)

回答

0

It's impossible.

我会稍微留下一点。如果你可以提供一个聪明的解决方案,不必手动编辑所有表单,我会乐意接受你的,而不是这个。 :)

1

此代码尚未经过全面测试但它可能对您有所帮助。在试用之前对数据库进行备份。

其目的是取代硬编码Format属性,如$#,##0.00;($#,##0.00) Access已(暗中)存储与普通值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