• ベストアンサー

ACCESSのVBAなのですが・・・・

SQLを使って、新たにテーブルにフィールドを追加したのですが(Yes/No型で)テーブルの表示が0とー1になってしまいます。これを□の形式にしたいのですが(書式をYes/No型に変換したい)どうすればよいでしょうか? ちなみにSQLは ALTER TABLE aaaa ADD bb BIT で追加しました。これだとテーブル表示が-1 or 0です。 困ってます。よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.1

テーブルのフィールドをチェックボックス型にするには、"DisplayControl/表示コントロール" プロパティを設定してやる必要があり、これをVBAで設定するには、DAO(私はADOについては詳しくありませんので、DAOでご容赦ください。)を使って行います。 (DAOを使いますので、はじめにモジュールウィンドウを開いて、ツール→参照設定で、 Microsoft DAO 3.* Object Library がチェックされていないようでしたら、チェックしておいてください。) 以下に、コードを示します。 (せっかくDAOを使いますので、フィールドの追加も ALTER TABLE ではなく、DAOの Append fld で行うようにしています。) ‘各変数を宣言 Dim dbs As DAO.Database, tdf As DAO.TableDef, fld As DAO.Field, prp As DAO.Property ‘変数dbs を現在のデータベースに設定 Set dbs = CurrentDb ‘変数tdf を ”aaaa” テーブルに設定 Set tdf = dbs.TableDefs!aaaa ‘変数fld をブール型のフィールド “bb” とし、”aaaa” テーブルに追加 Set fld = tdf.CreateField("bb", dbBoolean) tdf.Fields.Append fld ‘変数prp を整数型のプロパティ “DisplayControl” とし、”bb” フィールドに追加 Set prp = fld.CreateProperty("DisplayControl", dbInteger, acCheckBox) Call fld.Properties.Append(prp) ‘各変数のメモリー領域を開放 Set prp = Nothing Set fld = Nothing Set tdf = Nothing Set dbs = Nothing ちなみに、DisplayControl プロパティは、明示的に Properties コレクションに追加してやらないとVBAから参照できません(HELPでは、Field オブジェクトのプロパティには載っていません。)ので、Set prp =fld.~ 以下の2行で、追加をしています。

関連するQ&A