以编程方式设置字段'InputMask'属性

时间:2016-04-15 15:26:37

标签: properties access-vba ms-access-2010 field ms-access-2003

我将Access数据库分为前端和后端。

我需要以编程方式修改与表中某个字段关联的属性的值。我确实记得在几年前实现了类似的东西,但那是形式。

似乎表的属性只能在设计时设置;任何使用代码(myField.Properties("InputMask").Value = "000000")修改值的尝试都会导致错误。

总而言之,大约80个批次中有大约40或50个表具有必须更改的特定类型字段,所以我宁愿使用代码而不是手动。有人可以建议使用VBA这样做的方法吗?

目前我已经考虑过使用CurrentDb.Execute sqlString删除并重新创建字段,但是如果可能的话,我想保留InputMask属性。

原始数据库是2002/3格式,但我在Access 2010中对此进行了编辑。

1 个答案:

答案 0 :(得分:1)

我得到了以下代码。它将更改指定表和字段的InputMask ....

Option Compare Database
Option Explicit

Sub Test_It()
Dim WGD

    WGD = Resize_And_AddInputMask("Table3", "SomeNbr")

End Sub

' Modified version of code found at: http://www.tek-tips.com/viewthread.cfm?qid=1708626
Public Function Resize_And_AddInputMask(ByVal someTableName As String, ByVal someZCField As String)

Dim db  As DAO.Database
Dim td  As DAO.TableDef
Dim fd  As DAO.Field
Dim prp As DAO.Property

    Set db = CurrentDb
    Set td = db.TableDefs(someTableName)
    Set fd = td.Fields(someZCField)
    fd.Properties("InputMask") = "000099"
    fd.Properties.Refresh
    db.TableDefs.Refresh

    Set prp = Nothing
    Set fd = Nothing
    Set td = Nothing
    Set db = Nothing

End Function