AccessのテーブルにVBAでフィールドを追加する方法

このQ&Aのポイント
  • Access97を使用してクロス集計クエリを基にテーブルを新規作成し、VBAを使用してフィールドを追加する方法を教えてください。
  • テーブルは作業用で頻繁に作成し、フィールドの数が異なるため、常に同じフィールド数にしたいです。また、追加したフィールドの表題は空白で表示したいです。
  • 例えば、商品名と場所のフィールドがあり、場所の数が異なる場合、空白で表示したいフィールドを追加する方法を教えてください。
回答を見る
  • ベストアンサー

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店 わかりにくい説明ですみません(>_<) よろしくお願いします。

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

  • ベストアンサー
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.2

あるテーブルのフィールド数を数えるには、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 以上を利用して、足りない分のフィールドを作成すればよいのではないでしょうか? もし意図していることと違ったらごめんなさい。

minami373
質問者

お礼

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

その他の回答 (1)

  • gadd3
  • ベストアンサー率46% (211/451)
回答No.1

具体的なコードがわからないので申し訳ないのですが、多分、TableDefの、Fieldsコレクションなどを使ってフィールドを追加するようなかたちになるのだと思います。 「TableDef」 や 「VBA テーブル作成」というような語句でインターネットを検索すると何か出てくるかもしれません。ちなみにこんなのが出てきました。 http://www.accessclub.net/samplefile/samplefile_163.htm 市販のVBAの教則本(中級以上)などにも載っていますので、調べてみて下さい。

参考URL:
http://www.accessclub.net/samplefile/samplefile_163.htm
minami373
質問者

補足

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

関連するQ&A

  • 一つのテーブルの複数のフィールドから抜き出す方法について

    一つのテーブルの複数のフィールドから抜き出す方法について 例えば下記のようなテーブルがあったとします。       1     2     3     4 A商店  りんご   みかん   バナナ B商店  みかん   イチゴ   くり    パイナップル C商店  イチゴ   パイナップル バナナ D商店  イチゴ   バナナ   りんご のようなテーブルがありフィールド1~4いずれかにみかんを含むクエリーを作成し次のような結果をACCESSで作成したいのですが、簡単な方法はあるのでしょうか?       1     2     3     4 A商店  りんご   みかん   バナナ B商店  みかん   イチゴ   くり    パイナップル よろしくお願いいたします。 尚、使用しているデータベースはACCESS2000です。

  • テーブル同士で持っている同一フィールドの計算(条件つき)

    こんばんは。金曜日は大変お世話になりまして有難うございました!勤務中にどうしても解決しなくてはならなかったので本当に助かりました<(_ _)> そして現在ですが、新たに下記の問題に直面しております。お手すきの時で構いませんので、どうぞご教授をお願い致します。 【存在しているテーブル】 A.立替金テーブル(a/b/c/d/e)←フィールド数5 B.預り金テーブル(a/b/c/d/e)←フィールド数5 【やりたい事】 1)A.とB.のテーブルそれぞれで持っているb(商品名)とe(金額)のフィールドを比較し、両方のフィールドが一致したレコードのみ、立替金テーブルから引っ張って表示する。 2)A.とB.のテーブルそれぞれで持っているb(商品名)とe(金額)のフィールドを比較し、両方のフィールドが不一致したレコードに関しては計算が必要。 パターンは「立替金テーブルで持っているb(商品名)のe(金額)数字が、預り金のe(金額)数字とは異なる」というものです。 この場合、やりたいことは、下記の通りです。 それぞれのテーブルでb(商品名)が同じもの同士、e(金額)を加算し、立替金テーブルのeから、預り金テーブルのeをマイナスし、立替金テーブルから該当するレコードを引っ張り、最後にfフィールド(計算結果の数字を入れるフィールド)を新規に作成、付け足しをしてファイル出力したい。 SQLの記述で構いませんので、どうぞ宜しくお願い致します。 PS:ごめんなさい…。あれこれやっていて疲れてしまって説明が、更に頭の回転が鈍くて、うまく出来ていないかも…。

  • ACCESS2000を使って複数のテーブルを照合する方法について

    ACCESS2000を使用して下記のような3つのテーブルがあったとします。 1.メインテーブル   商品名   コード 1 りんご   012 2 りんご   022 3 バナナ   200 4 バナナ   201 5 イチゴ   100 2.A商店テーブル   商品名   コード 1 りんご   012 2 バナナ   200 3 バナナ   201 3.B商店テーブル 1 りんご   022 2 バナナ   201 テーブル1~3を照合して作製したいクエリ   商品名   コード  A  B 1 りんご   012  ○  × 2 りんご   022  ×  ○ 3 バナナ   200  ○  × 4 バナナ   201  ○  ○ 5 イチゴ   100  ×  × のように複数のテーブルを参照し、テーブル1のフィールドにある内容と同一のものがどのテーブルに存在するまたは、存在しないをがわかるような一覧リストを作成したいのですが、具体的にはどのようにしたら良いのでしょうか。 よろしくおねがいいたします。

  • アクセスの2つのテーブルから重複しないものを抜き出す方法について

    アクセスの2つのテーブルから重複しないものを抜き出す方法について 例えば テーブル Aには ID   価格    商品   1  200    りんご   2  150    みかん   3  180    りんご   4  230    いちご テーブル Bには   1  150    みかん   2  180    りんご とあった場合 A-B のクエリーを実行して   1  200    りんご   2  230    いちご という結果を得たいのですが、どのようにすれば出来るのでしょうか よろしくお願いします。

  • Accessで重複データを結合するには?

    こんにちわ、みなさん。 Access超初心者です。よろしくお願いします。 Accessのテーブルで下記のようなデータがあるとします。  店名  | 商品 |  A店  |リンゴ |  A店  |トマト |  A店  |ナシ  |  B店  |リンゴ |  B店  |みかん | これを下記のように店名ごとに商品名を結合したいのです。 (レポートではなく、テーブルにしたいです)  店名  | 商品        |  A店  |リンゴ;トマト;ナシ |  B店  |リンゴ;みかん    |   重複クエリーを使えばと思ったのですが、 思ったとおりにはなりませんでした。。 どうぞ、よろしくお願い致します。m(__)m ---------------------------------------- OSは、Windows 98 アプリケーションは、Access 2000 です ----------------------------------------

  • Access2010 テーブルのフィールドについて

    Access2010を使用しています。 テーブルのフィールド定義 [A][B][C][D][E][F][G] ↓ テーブルを開くと [A][B][C][E][F][G][D] と勝手に変わる (あるフィールドだけ、別の場所に移動) ↓ フィールドの並び順を [A][B][C][D][E][F][G] に戻す ↓ 保存してテーブルを閉じる ↓ 再度開くと [A][B][C][E][F][G][D] と変わってしまう。 この繰り返しです。 どなたか、お助け下さい。 よろしくお願いいたします。

  • アクセスのフィールドデータ更新について

    アクセス初心者です。 商品売上TB(レコード数10万件)に [出荷日][出荷先][商品名A][個数]の4つのフィールドがあります。 商品名TBのフィールド(レコード数500件)に [商品名B][金額A]2つのフィールドがあります。 商品名Aと商品名Bはリレーションでつながっています。 フォームで月別、商品別、出荷先別に個数、金額が見られるようにしています。 年に1度商品の単価見直しがあり、毎年10/1に行われます。 見直し前のデータも取っておきたいのですが、そのような場合 新たなテーブルを作り追加クエリで[出荷日][出荷先][商品名A][個数][金額A] を毎年追加していくのか? ファイルサイズがかなり大きくなってしまうと思います。 商品名TBに[金額B][金額C]のようにフィールドを増やしていくのか? 毎年クエリで条件式が増えるとあまりスマートでないと思います。 使い勝手も悪そうです。 通常皆さんはどのようにされているのでしょう?

  • EXCELピボットテーブルの集計項目を追加したい

    ピボットテーブルで集計した結果に集計項目を追加したいのですが、 可能でしょうか? 追加したい項目は、数量合計÷担当件数です。 <元データ> 担当 支店 種目 数量 川上 東京  りんご 50 川上 名古屋 りんご 20 川上 埼玉  みかん 10 川上 埼玉  りんご 5 鈴木 大阪  りんご 25 鈴木 神戸  みかん 10 佐藤 福岡  みかん 30 <ピボットテーブル>       みかん  みかん  りんご   りんご 担当 合計数量 件数 合計数量 件数 佐藤 30  1 川上 10 1 75    3 鈴木 10   1 25    1 計 50 3 100    4     上記このテーブルに「みかん合計数量÷みかん件数」「りんご合計数量÷りんご件数」で 計算した項目「みかん平均」「りんご平均」を追加して、以下のようにしたいと思っています。 担当 みかん みかん平均 りんご りんご平均 佐藤 30 30.0 川上 10 10.0        75 25.0       鈴木 10 10.0        25 25.0       総計 50 16.7        100 25.0       以上

  • エクセルの関数または、VBAでできますか?

    次のような表があったとします。 商品  1日目  2日目  3日目   必要部品  在庫  過不足 A     20              みかん   50 B     10   10         みかん   50 C         20    20     みかん   50   不足 A     30               もも   100 B     15   15          もも   100 C         30    30      もも   100 A     100              りんご   200 B     50   50         りんご   200 C         100   100     りんご   200   不足 ここで、みかんの在庫は50個となり、 商品Aの必要数は、20個で足りることになります。 商品Bの必要数は、20個で1日目の必要数とあわせても足ります。 商品Cになると必要数はさらに40個増え、合計80個となり、 在庫の50個では足りなくなります。 ももの場合は、すべて足りることになり、 りんごの場合は、商品Bで在庫が無くなり、商品Cの分は、足りないことになります。 この表の右端に、これらの結果を計算式で求めることはできないでしょうか? 判りにくいかもしれませんが、よろしくお願いします。

  • エクセルの関数について。

    すいませんエクセルの作業で教えてください。こちらはエクセルのデータをコピーしたものを張り付けています。 下記のように同じ商品を数社に購入した場合にそれぞれの仕入れ先で何個購入出来て 仕入れ合計と売り合計がどうなのか簡単に表示できるようにしたいです。瞬時にわかりたいです・。 売り合計と仕入れ合計がいくらになるのかこちらのエクセルの下あたりに関数で入力しようと 思っているのですがなかなかやり方がわかりません。おそらくVLOOKUP関数でやれば簡単なのではと 思っているのですがどう入力設定をすればわかりません。忙しいところ申し訳ございませんが どなたか教えて頂けないでしょうか_? よろしくお願いいたします。 みずらくて申し訳ございません 品名はがアルファベット 仕入れ先もアルファベットになっております。 よろしくお願いいたします。 商品 数量 売り単価 合計 仕入先 仕入単価 仕入合計 リンゴ 50 65 3,250 A商店 49 2,450 リンゴ 50 56 2,800 B商店 42 2,100 リンゴ 50 35 1,750 B商店 25 1,250 リンゴ 50 43 2,150 A商店 30 1,500 リンゴ 50 170 8,500 A商店 120 6,000 リンゴ 50 43 2,150 A商店 30 1,500 ミカン 50 36 1,800 A商店 18 900 ミカン 50 36 1,800 A商店 18 900 ミカン 50 37 1,850 A商店 25 1,250 ミカン 50 70 3,500 C商店 50 2,500 ミカン 50 70 3,500 D商店 50 2,500 パイナップル 50 55 2,750 D商店 40 2,000 パイナップル 50 135 6,750 D商店 100 5,000 パイナップル 50 45 2,250 C商店 30 1,500

専門家に質問してみよう