2016-04-15 15 views
0

私はAccessデータベースをフロントエンドとバックエンドに分けています。フィールド 'InputMask'プロパティをプログラムで設定する

テーブル内のいずれかのフィールドに関連付けられたプロパティの値をプログラムで変更する必要があります。私は何年も前に何かを達成することを覚えていますが、それはフォームのためのものでした。

テーブルのプロパティは設計時にのみ設定できるようです。コード(myField.Properties("InputMask").Value = "000000")を使用して値を変更しようとすると、エラーが発生します。

すべてのすべてでは、変更する必要があり、フィールドの特定の種類を持っている約80のバッチで、約40または50のテーブルがありますので、私はむしろ、手動よりも、この使用してコードにしてください。誰でもVBAを使ってこれを行う方法を提案できますか?

現在、私はCurrentDb.Execute sqlStringを使ってフィールドを削除して再作成してみましたが、可能であればInputMaskプロパティを保持したいと思います。

元のデータベースは2002/3形式ですが、私は仕事に以下のコードを得た

+0

このコードではどのようなエラーが発生しましたか? – Andre

+0

@ HansUp:はい - 'InputMask'は既に設定されています。 – Paul

答えて

1

アクセス2010でこれを編集しています。指定されたテーブルとフィールドの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 
+0

これはありがとう、ウェイン。私はそれを試み、あなたに知らせるでしょう。 – Paul

+0

それは奇妙だった。 VBAを使用してInputMaskを直接設定すると、エラーが発生し、私の疑問(@Andre)の不思議さが発生するでしょう。これは完全に機能しました。私はすでにサイズ変更ビットを(データベースオブジェクトに対してSQLを使って)考え出しました。私が見逃した(そして問題をさらに混乱させた)主なものは、 'Fields.Refresh'と' TableDefs.Refresh'メソッドで、 'CurrentDb'で別のオブジェクトを設定しました。 – Paul

関連する問題