Глобальное изменение формата валюты для всех полей валюты во всех формах

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

Поля базы данных тоже просто установлены в Валюта.

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

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

2 ответа

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

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

Это невозможно.

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

Другие вопросы по тегам