プロが教える店舗&オフィスのセキュリティ対策術

ADOX フィールドのRequiredプロパティをFalseにしたい

アクセスです。

Sub test()
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Dim idx As ADOX.Index
Dim varRet As Variant
Dim strMsg As String

Set cat = New ADOX.Catalog
cat.ActiveConnection = CurrentProject.Connection

Set tbl = New ADOX.Table
tbl.Name = "test"

tbl.Columns.Append "氏名ID", adInteger '手作業で数値型のフィールドを作るとこれがデフォルトになる
tbl.Columns.Append "氏名", adVarWChar, 50

cat.Tables.Append tbl

主キーを作る
Set idx = New ADOX.Index
idx.Name = "Primary"
idx.PrimaryKey = True
idx.Columns.Append "氏名ID"

tbl.Indexes.Append idx

MsgBox tbl.Name & "テーブルを作成しました。"

Set cat = Nothing
End Sub
**********************************************************

上記のコードでテーブルを作ると、RequiredをTrueにしてないのに、
実際にテーブルにデータを入れてる時に、NULLにしようとすると、

**********************************************************
フィールドに必要なプロパティが True に設定されているため、
このフィールド '<フィールド名>' には Null 値は挿入できません。値を入力してください。
**********************************************************
となります。

Requiredプロパティの規定値は、False になってますが、
なぜか値を要求されてしまいます。

ADOXで上記のコードに追加してRequiredをFalse にする方法を教えてください。、

A 回答 (1件)

当方、Access2010 です。

同じ結果になりました。。
無理っぽいと思いつつGoogleと外人さんが教えてくれました。
http://www.pcreview.co.uk/forums/re-change-field …

tbl.Columns.Append "氏名ID", adInteger '手作業で数値型のフィールドを作るとこれがデフォルトになる
tbl.Columns.Append "氏名", adVarWChar, 50
tbl.Columns("氏名").Attributes = adColNullable '追加

では?
    • good
    • 1
この回答へのお礼

tbl.Columns("氏名").Attributes = adColNullable
を追加したら、うまく出来ました!
リンク先は英語なのですね。
それを理解できるnicotinismさんはすばらしいですね!
ありがとうございました。

お礼日時:2012/10/19 23:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!