で、リリースしたアプリケーションがバグっていたり、機能強化をする時にテーブルに列を追加したりすると思いますのでその方法をメモ。そして解説。
- Dim def As DAO.TableDef
- Dim fld As DAO.Field
- Dim prp As DAO.Property
- Set def = CurrentDb.TableDefs("なんとかテーブル")
- With def
- .Fields.Append .CreateField("メモ", dbMemo)
- Set fld = .CreateField("一括更新", dbBoolean)
- .Fields.Append fld
- Set prp = fld.CreateProperty("Format", dbText, "Yes/No")
- fld.Properties.Append prp
- Set prp = fld.CreateProperty("DisplayControl", dbInteger, acCheckBox)
- fld.Properties.Append prp
- End With
仕様
- 既存のテーブルに対して"メモ"フィールド(メモ型)、一括更新フィールド(ブール型)の列を追加する。
- ブール型の列の表示は、チェックボックスにする
解説
- 5行目:変更するテーブルのTableDefオブジェクトを取得する。
- 7行目:新しいフィールドを追加する
TableDefオブジェクトには、CreateFieldというメソッドでフィールドオブジェクトを作成し、FieldsプロパティのAppedメソッドで追加する。
列を追加するだけだったらこれだけで終わり。 - 8~13行目:フィールドの追加とそのフィールドのフォーマットや表示形式を指定する。
- 8~9行目:7行目と同様ですが、新しく追加するフィールドに対してプロパティを追加したりするので変数に格納する。
- 10行目:テーブルデザインの書式をプロパティオブジェクトに定義します。
※他にも表題、規定値、入力規則、エラーメッセージ、インデックス、文字配置などがありますね。
引数説明
第1引数:書式の英語名を指定する。書式の場合は、Format。
第2引数:プロパティの値のデータ型を指定する。第3引数には、"Yes/No"という引数を指定するので、dbText。
第3引数:設定する値を指定する。テーブルデザインで選択する値をそのまま記載。 - 11行目:できたプロパティオブジェクトを8行目で作成済みのオブジェクトのPropertiesプロパティにAppendメソッドで追加します。
- 12~13行目:テーブルをデータシートビューで見た時に、チェックボックスになるようにするための設定です。
- 12行目:10行目のルックアップタブ内の値を指定します。
第1引数:書式の英語名を指定する。書式の場合は、Format。
第2引数:プロパティの値のデータ型を指定する。第3引数には、acCheckBoxという整数型の定数を引数を指するので、dbInteger。
第3引数:チェックボックスにシたいので、acCheckBoxを指定する。
※他にも、acTextBox、acListBox、acComboBoxというのが有ります。
アプリケーションを変更したいだけなのに、既存データを新しいところにインポートするとかいうわけのわからない作業はしなくても良くなります。
※チョット前に引き継いだAccessのアプリケーションがそんなのでした。
テーブルのデータをエクスポートやインポートで移行するならまだしも、CSVファイルに出力して移行するというアホな設計でした。
0 件のコメント:
コメントを投稿