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

うまくいかないのですが、もともとムリなことをやろうとしているのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

>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

この回答への補足

早速ありがとうございます!

まさに教えていただいた通りのことを考えているのですが、
テーブル名は実は、システム年月と部署名を連結させたバリアント型の変数を
渡そうとしています。
例えば2002年1月の営業部だったら「T_0201営業」みたいなテーブル名称です。

単純に書き方が悪いんでしょうかね・・。

補足日時:2002/01/15 19:32
    • good
    • 0

目的は、書き出すテーブル名を記述できれば良いことなので、以下の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句等を入れてください。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング