みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

AccessのテーブルにVBAでフィールドを追加したい

Access97を使用しています。
クロス集計クエリを基にテーブルを新規作成します。
その後、フォームのコマンドボタンのイベントプロシージャでコードを記述してフィールドを追加していきたいのですが、どう書けばいいのでしょうか。
このテーブルは作業用で、頻繁に作って作業後は削除しますが、作成するたびにフィールドの数が異なります。(フィールド名も一部変わります。)それを常に同じフィールド数にしたいのです。追加したフィールドの表題は”-”(空白っぽく表現する)にしたい。

たとえば

商品名|場所A|場所B|合計|仕入先
みかん| 10 | 20 | 30|a店
りんご| 30 | 40 | 70|b店

を、下記のようにしたいと思います。

商品名|場所A|場所B|-|-|合計|仕入先
みかん| 10 | 20 | | | 30|a店
りんご| 30 | 40 | | | 70|b店

また、下記のようなケースもあります。

商品名|場所D|-|-|-|合計|仕入先
みかん| 10 | | | | 10|a店
りんご| 30 | | | | 30|b店

商品名|場所B|場所C|場所D|-|合計|仕入先
みかん| 10 | 20 | 20 | | 50|a店
りんご| 30 | 40 | 10 | | 80|b店

わかりにくい説明ですみません(>_<)
よろしくお願いします。

投稿日時 - 2003-04-24 13:12:38

QNo.530875

すぐに回答ほしいです

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

あるテーブルのフィールド数を数えるには、Fields.Countを使います。
例えば、DAOでやるなら次のようにすると、メッセージボックスに「テーブル名」で指定したテーブルのフィールド数が表示されます。

Dim db2 As DAO.Database
Dim rs2 As DAO.Recordset


Set db2 = CurrentDb
Set rs2 = db2.OpenRecordset("テーブル名")

MsgBox rs2.Fields.Count

Set rs2 = Nothing
Set db2 = Nothing



以上を利用して、足りない分のフィールドを作成すればよいのではないでしょうか?

もし意図していることと違ったらごめんなさい。

投稿日時 - 2003-04-25 10:49:14

お礼

返事が遅くなってすみません。ようやく、フィールド数を数え、不足分を追加することができました。本当にありがとうございました!

投稿日時 - 2003-04-28 02:33:55

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

具体的なコードがわからないので申し訳ないのですが、多分、TableDefの、Fieldsコレクションなどを使ってフィールドを追加するようなかたちになるのだと思います。

「TableDef」 や 「VBA テーブル作成」というような語句でインターネットを検索すると何か出てくるかもしれません。ちなみにこんなのが出てきました。
http://www.accessclub.net/samplefile/samplefile_163.htm

市販のVBAの教則本(中級以上)などにも載っていますので、調べてみて下さい。

参考URL:http://www.accessclub.net/samplefile/samplefile_163.htm

投稿日時 - 2003-04-25 02:47:46

補足

参考URLを見て、「既に同名のテーブルがある場合は、テーブルを削除」の方法がわかって喜んでいます。ありがとうございます。
質問の内容を言い換えますと、新規作成したテーブルのフィールド数を取得して、それに足りない数のフィールドを追加することができますか?
最終的にはすでに保存されているExcelワークシートの決められたセルに書き出ししたいのです。

投稿日時 - 2003-04-25 03:13:47

あなたにオススメの質問