【Access】できるならいいけど…もっとスマートにできないか
Accessのフォームとは通常、レコードソースを指定し、ある程度きれいなかたちに整えてデータを表示させるものです。ですがマスターテーブルをそのまま表示させると、ユーザーはテキストボックスからデータを容易に変更できます。猫がキーボードに乗って歩きまわると「あt;あsちあがkb;あljh」などとテーブルに書き込まれてしまいます笑。マスターデータはマスターというだけありデータベースの根幹を成すものですので、こんな事態になったら取り返しがつかなくなります。脳を直接いじらせるようなものです。テキストボックスを編集不可にすればいいのではないか。ではユーザーが編集したくなったらどうするのか…。ということで、ある程度Accessを使い慣れてくると、フォームにマスターテーブルを使用するのはマズい、とわかってきます。そこで対策として、ワークテーブルを用意し、任意のSQLを発行して書き込み、フォームのレコードソースに指定する、という方法を採ります。ADOなら、'ワークテーブルを削除。strSQL = "DELETE * FROM tbl_WT_表示用cnc.Execute strSQL
'「tbl_WT_表示用」にデータを入力。
strSQL = "SELECT 猫ID, 猫氏名, 猫カラー, …, 猫尻尾の毛並み FROM tbl_MT_猫"
rs1.Open strSQL, , , , adCmdText
rs3.Open "tbl_WT_表示用", , , , adCmdTable
Do Until rs1.EOF
rs3.AddNew
rs3!猫ID = rs1!猫I
0円