• ベストアンサー

ACCESS97:VBAでテーブル作成したい

Access97を利用しています。 VBAでテーブル作成クエリーを、SQL文で直接記述しています。 書き方としては、SELECT 列名 INTO テーブル名 IN DBのパス でいいと思うのですが、例えば会社の部門コードでループさせて、 部門の名前のついたテーブルを作成しようと思います。 さて、テーブル名やDBのパスをパラメータで渡すことは可能なのでしょうか? うまくいかないのですが、もともとムリなことをやろうとしているのでしょうか?

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

  • ベストアンサー
  • sgh
  • ベストアンサー率61% (75/121)
回答No.1

>VBAでテーブル作成クエリーを、SQL文で直接記述しています。 であれば、SQL文を動的に変化させることで対応可能なのではないでしょうか。 例えばこんな感じ Sub TEST1() Dim DB As DAO.Database Dim RS As DAO.Recordset Dim StSQL1 As String, StSQL2 As String Set DB = CurrentDb StSQL1 = "select 部門コード,部門名 from 部門マスタ" Set RS = DB.OpenRecordset(StSQL1) Do Until RS.EOF   StSQL2 = "SELECT フィールド1, フィールド2 INTO " & RS!部門名 & " FROM テーブル名"   DB.Execute StSQL2   RS.MoveNext Loop End Sub

maho0515
質問者

補足

早速ありがとうございます! まさに教えていただいた通りのことを考えているのですが、 テーブル名は実は、システム年月と部署名を連結させたバリアント型の変数を 渡そうとしています。 例えば2002年1月の営業部だったら「T_0201営業」みたいなテーブル名称です。 単純に書き方が悪いんでしょうかね・・。

その他の回答 (1)

  • sgh
  • ベストアンサー率61% (75/121)
回答No.2

目的は、書き出すテーブル名を記述できれば良いことなので、以下のSQL文の "RS!部門名"と書かれているところを変化させてあげればいいことになります。 StSQL2 = "SELECT フィールド1, フィールド2 INTO " & RS!部門名 & " FROM テーブル名" >2002年1月の営業部だったら「T_0201営業」みたいなテーブル名称です。 日付型のデータがあるという仮定でまず"0201"を取り出すには Format(日付データ,"yymm") で取得できます。 ですから作成するSQL文は、文字列型変数"StTABLE_NAME"を宣言して StTABLE_NAME = "T_ " & Format(日付データ,"yymm") & RS!部門名 StSQL2 = "SELECT フィールド1, フィールド2 INTO " & StTABLE_NAME & " FROM テーブル名" となります。 尚、必要に応じて、Where句等を入れてください。

関連するQ&A