2013-04-04 92 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