#684 | Yes/No型フィールドをチェックボックス表示でテーブルに追加するには? | テーブル、VBA | |||
新規のテーブルを作ってさらにそこにフィールドを追加する、あるいは既存のテーブルに新規のフィールドを追加するといった処理をVBAのプログラムから行いたいといった場合、フィールド構造を決める基本的な属性、たとえばフィールド名やテキスト型のフィールドサイズ、インデックスなどについては、一般的なSQL文を発行することで処理することができます(あるいはデータ定義クエリを発行することでもできます)。 一方、Access固有の属性(プロパティ)、たとえば書式や入力規則・エラーメッセージなどを設定するためには、VBAでTableDefオブジェクトやFieldオブジェクトを操作する必要があります。 さらに、Accessではそれらのプロパティは「標準」と「ルックアップ」というグループに分けられており、後者では、テキスト型であれば「テキストボックス」や「コンボボックス」など、Yes/No型であれば「テキストボックス」や「チェックボックス」など、データシートビューで表示したときの外観的な表示の仕方である「表示コントロール」を設定することもできます。 その表示コントロールについては、プログラムでフィールドを追加しただけの場合(下記の例)、Yes/No型でも”テキストボックス”に設定されてしまいます(プログラムを使わず手操作でフィールド追加した場合は”チェックボックス”になるのですが....)。 ■フィールド追加だけ行うプログラム Dim dbs As Database Dim tdf As TableDef Dim fld As Field Set dbs = CurrentDb Set tdf = dbs.TableDefs("tbl顧客") Set fld = tdf.CreateField("対象", dbBoolean) tdf.Fields.Append fld tdf.Fields.Refresh 実行結果: それを意図的に既定値以外にしたい場合、つまり「Yes/No型フィールドを”チェックボックス”表示で追加したい」といった場合には、フィールドを追加するだけでなく、『そのフィールドに”表示コントロール”プロパティ自体もプログラムから追加』したうえで、その値を設定してやる必要があります。 それには、次のようなプログラムを実行します。 ここでは、tbl顧客テーブルに”対象”という名前の”Yes/No型”フィールドを追加したあと、さらに『DisplayControl/表示コントロール』プロパティを追加するとともに”チェックボックス(acCheckBox)”表示に設定しています。 ■フィールド追加および表示コントロールの設定を行うプログラム Dim dbs As Database Dim tdf As TableDef Dim fld As Field Dim prp As Property Set dbs = CurrentDb Set tdf = dbs.TableDefs("tbl顧客") '対象フィールドを追加する With tdf Set fld = .CreateField("対象", dbBoolean) With .Fields .Append fld .Refresh End With End With '追加されたフィールドにDisplayControlプロパティおよびその値を追加する With fld Set prp = .CreateProperty("DisplayControl", dbInteger, acCheckBox) .Properties.Append prp End With 実行結果: 実行前 実行後 |
|||||
|
Copyright © T'sWare All rights reserved |