2013-04-04 3 views
1

Я только что создал систему баз данных с несколькими формами. Формы имели валютные поля. У меня есть английский язык на английском языке в Windows и английский доступ 2007. Поэтому я понял, что именно поэтому я получил формат $ x, xxx.yy. Я продолжил и закончил систему; Я только установил формат в валюту, поэтому я решил, что фактическое форматирование было в другом месте.Изменение форматирования валюты по всем валютным полям во всех формах

В поля базы данных также задано значение «Валюта».

Теперь это должно использоваться на шведском компьютере. Как установить глобальный формат валюты, чтобы они не отображали валюты в формате $ x, xxx.yy, без необходимости редактировать все поля в каждой форме?

(То есть, они все равно должны иметь формат:. Валюта и точное число хранится в базе данных и отображается в поле должно быть просто отображается в правильном шведском формате)

ответ

0

It's impossible.

I оставит это немного. Если вы можете предложить умное решение, чтобы не вручную редактировать все формы, я с радостью соглашусь с вами вместо этого. :)

1

Этот код не был тщательно протестирован, но это может быть вам полезной. Сделайте резервную копию своей базы данных, прежде чем попробовать ее.

Его намерение состоит в том, чтобы заменить жестко закодированные 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 
Смежные вопросы