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

お世話になります。

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

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

この返信が役に立ちましたか?

役に立ちませんでした。

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

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。今後のサイト改善に役立てて参ります。

この返信の満足度をお教えください。

フィードバックをお送りいただきありがとうございます。

 
 

質問情報


最終更新日 2019年10月01日 表示 2,562 適用先: