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と関連する良く見られている質問

Qアクセス フィールド名変更と別テーブル作成 access2010です。 既存テーブル名:AAA 既存

アクセス フィールド名変更と別テーブル作成



access2010です。

既存テーブル名:AAA
既存フィールド名:あああ

これをレコード内容、型式を変えずに別の新テーブルに新フィールド名で作りたいです。

新テーブル名:BBB
新フィールド名:かかか

よろしくお願いします。

Aベストアンサー

テーブルを構造とデータを含めてコピーして、フィールド名を変えればよいのでは?

QACCESS クエリー後のデータをテーブルにしたいのですが

クエリー実行後の結果をテーブルに追加したいのですがどうすれば良いのでしょうか、ご教授お願いします。

Aベストアンサー

単純に、クエリ結果をテーブルにしたいのであればINTOを使えば簡単にできます。

SELECT * INTO 作成するテーブル名
FROM 出力元のテーブル名

これでSELECT結果が作成するテーブル名でテーブルが作れます。
既存のテーブルに結果データを追加するのであれば追加クエリ使えばよいでしょう。

QAccessのテーブルを外部データでとりこんだ後テーブル名を変えたら

いつもお世話になっております。

エクセルの参照のためのワークシートに、Accessのテーブルを外部データとして取り込んでいます。

今まではデータの更新をすればAccessのデータの最新のものに更新できていたのですが、テーブルの名前を変えたら、更新ができなくなりました。

この場合、もう一度最初から設定し直すしか方法はないでしょうか。
よろしくお願いいたします。

Aベストアンサー

エクセルで取り込むVBAのところで、テーブル名を変更すれば問題ないと思いますが。

Q別々の性質のもつテーブルのクエリーとレポートについて

ACCESS2000において
テーブルA
 ID
 氏名
 口座
 
テーブルB
 ID
 振込み月
 金額A

テーブルC
 ID
 振込み月
 開発費

テーブルD
 ID
 振込み月
 金額B

上記のようなテーブルが存在するときに、
リンクまたはクエリーでそれぞれのテーブルの
内容をまとめて、レポートを出力させます。
このとき、それぞれのテーブルでの振込み月は
必ず毎月存在するとは限らないので、存在しない
月はデータがありません。
それぞれのテーブルのデータを集計し、各IDにおける
その月の振込み月の金額の合計を算出します。
レポートにおいては、振込み月とそれぞれの金額と
金額の合計をレポート印刷します。
そのままのクエリーを考えると、それぞれのテーブルの
データをもつIDのみ、クエリーのデータとなってしまう
ので、その月のデータがない場合でも金額¥0として
クエリーとしたいですが、どのようにすればいいでしょうか?よろしくお願いします。

Aベストアンサー

こんにちわ

再度、回答します

いろいろ方法はあると思うので
質問者殿で自由に試行してみると
いい結果がでるとは思いますが
いくつか、思いつく方法を書きます

*******************************
案-1
a-b a-c a-d でそれぞれ
クエリ-を発生させて
その3つのクエリ-をユニオンクエリ-で
1つのクエリ-にする
そして次にクエリ-の集計行機能で
id+月 で集約クエリ-にする

案-2
あらかじめテ-ブルを作成しておき
(項目を定義できますから)
そのテ-ブルを0件に削除してから(削除クエリ-)
そこのテ-ブルへそれぞれの値を項目へ
追加書きこみする



宜しくお願い致します

Qアクセスのクエリーテーブルタブの表示の仕方を変換したいんですが

マイクロソフトアクセス2007を使っています。
テーブルに名前フィールドとタスクフィールドを置きました。
名前 タスク
A   M
A   N
B   M
C   O
A   M
のようなデータが入っています。
そこでクエリーのテーブルタブを使ってタスクの回数を表示させると
名前  M   N   O
A   2   1 
B   1 
C          1
の様になります。
しかし、仕事上回数は必要なく各タスクをこなしたかどうかが欲しくて
名前  M    N    O
A   Done  Done  YET 
B   Done  YET   YET
C   YET   YET  Done
と表示させたいのです。
IIF([タスク]>=1,"Done","YET")をどこかに使えばいいのかと思い、色々試してみましたが、うまくいきません。どうしたらこのような表示が出来るか教えてください。

Aベストアンサー

名前  M   N   O
A   2   1 
B   1 
C          1

上記を表示した時のクエリのSQLビューは以下のようになっていると思います。
(違ってたらごめんなさい)

TRANSFORM Count(*) AS 式1
SELECT テーブル名.名前
FROM テーブル名
GROUP BY テーブル名.名前
PIVOT テーブル名.タスク;

1行目
TRANSFORM Count(*) AS 式1

TRANSFORM IIF(Count(*)>=1,"Done","YET") AS 式1
に変更します。

※ AS 式1 は、AS XXXX になっているかもしれません。
※ Count(*) は、Count(テーブル名.名前)やCount(テーブル名.タスク)になっているかもしれませんが、その内容でIIF判別すればよいと思います。


人気Q&Aランキング

おすすめ情報