特定フィールドに既定値を設定したい

お世話になります。

VBAより新規で作成したテーブルのYes/No型フィールドに、既定値を

設定したいのですがどのようにすればよいのでしょうか。

VBAにてデータ定義クエリを実行し、以下のテーブルを作成しております。

 ID  オートナンバー

 商品 テキスト型(255)

 削除フラグ Yes/No型

この「削除フラグ」の既定値としてFalse(No?)を設定したく。

調べてみたところ、TableDefやALTER TABLEを使うことにより設定できるよう

なのですが、うまくいきません。。

ご教授の程、宜しくお願い致します。

回答
回答

> VBAより新規で作成したテーブルのYes/No型フィールドに、既定値を

> 設定したいのですがどのようにすればよいのでしょうか。

実際にどのようなコードによって

テーブルを新規作成されたのでしょうか。

> この「削除フラグ」の既定値としてFalse(No?)を設定したく

例えば DAO の CreateTableDef メソッドや

CreateField メソッドを使用されているならば、

CreateField メソッドによって新規作成された

DAO.Field オブジェクトの DefaultValue プロパティに

False を設定なさればよろしいかと。

> VBAにてデータ定義クエリを実行し、以下のテーブルを作成しております。

なお、既存のフィールドの DefaultValue プロパティを

設定する場合は次のようなコードを実行します。

----------------------------------------------------------------------

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field

Set db = CurrentDb

Set tdf = db.TableDefs("テーブル名")

Set fld = tdf.Fields("削除フラグ")

fld.DefaultValue = False
    
Set fld = Nothing
Set tdf = Nothing
Set db = Nothing

----------------------------------------------------------------------

> ALTER TABLE

この場合はフィールド定義の変更を行なう際に

DEFAULT キーワードを用いてフィールドの既定値を指定することになりますが、

DEFAULT キーワードを含む ALTER TABLE ステートメントを実行するには

ADO を使用する必要があります。

(クエリのSQLビューやDAOからではエラーが発生します)

----------------------------------------------------------------------

Dim cn As ADODB.Connection
Dim strSQL As String

Set cn = CurrentProject.Connection

strSQL = "ALTER TABLE [テーブル名] ALTER COLUMN [削除フラグ] BIT DEFAULT False"

cn.Execute strSQL

Set cn = Nothing

----------------------------------------------------------------------

1 人がこの回答を役に立ったと思いました。

·

この回答が役に立ちましたか?

お役に立てず、申し訳ございません。

素晴らしい! フィードバックをありがとうございました。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。おかげで、サイトの改善に役立ちます。

この回答にどの程度満足ですか?

フィードバックをありがとうございました。

 
 

質問情報


最終更新日: 2023年11月16日 表示数 499 適用先: