- 締切済み
複数テーブルから必要とするテーブルを捜す
質問します。 月ごとに同じ構成のテーブルが複数あります。(テーブル名はテーブル1-1、テーブル1-2など・・・10以上)この中から該当する月のテーブルを探し出し、ヒットしたテーブルを元にクエリを実行したいのです。クエリはテーブルの数だけ作成しましたが、すべてのクエリを実行したのでは時間が掛かりすぎます。テーブルの1レコード目だけ読んで該当テーブルを捜す方法ってないでしょうか?該当月はフォームよりユーザに入力させる形式を取りたいと考えています。アクセスVBAでお願いします。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- bin-chan
- ベストアンサー率33% (1403/4213)
DAOを使用するので[ツール]-[参照設定]でDAOへのチェックが必要です。 対象テーブルはtbl対象月01,tbl対象月02・・・とします ユーザによる対象月指定は01,02・・・とします。 対象をtbl対象月mmではなく、qry対象月として変更しておくこと。 テストできてないので適宜調整を行なってください。 コマンドボタンに以下のコードを追加してください。 Dim qryQuery As QueryDef Dim strQuery As String 'エラーを回避するために設定 On Error Resume Next '対象月を削除する DoCmd.DeleteObject acQuery, "qry対象月" On Error Resume Next '対象月テーブルを指定する strQuery = "select * from tbl対象月" & フォームよりユーザに入力させた該当月オブジェクト '対象月を定義する Set qryQuery = CurrentDb.CreateQueryDef("qry対象月", strQuery) ' '以下に目的のコードを記述
- bin-chan
- ベストアンサー率33% (1403/4213)
月別のテーブルを対象にクエリを作成していたら 数多く作成しないといけない、を回避する方法を。 クエリでテーブルを直接参照するのではなく、 「テーブル参照するクエリ」をクエリが参照するようにして、 その「テーブル参照するクエリ」をユーザが指定する月で 作成し直す、ではどうでしょう? (シノニムの考え方なんですが) 現)テーブル<--->目的のクエリ 新)テーブル<--->参照のクエリ<--->目的のクエリ 参照のクエリのみ月指定の都度、QueryDefで作り直す。
- ymmasayan
- ベストアンサー率30% (2593/8599)
回答では有りませんが。 これだと月が増えていくと大変ですね。 表の1行目で判定すると言うことはデータに月が入っているということでしょうね。 それなら全部の表を一つにまとめてしまえば難しいことを考えなくても 検索できると思うのですが。
補足
補足します。 レコード内には年月が明記されています。 しかし、1つのテーブルが大きいのですべてのテーブルを結合してしまうと結局、処理速度が落ちてしまいます。 良い方法があれば、ご指導願います。 よろしくお願いします。
補足
ご指導、ありがとうございます。具体的にどのようにすればいいのでしょうか?考え方は理解できたのですが・・・。 ど素人でもうしわけありません。