|
かるびのさん、出来ました!!
ありがとうございました!!
> まず、Q_地域のSQL文を取得します。
> DAOのQueryDefオブジェクトのSQLプロパティを使います。
↑ これを教えて頂いたおかげで、解決できました。
感謝、感謝です。
クエリの参照テーブルを示すお手軽な関数なり、プロパティがあるはず、
と思い込み、ずっと探していましたが、
やっぱりSQL文を直接調べるしかないのですね。
>使われたテーブル名がメッセージボックスに表示されるようにする
このご教示もたいへん、助かりました。
> テーブル名を切り出すに際しては、InStr関数とMid関数を使います。
これ、トライしてみましたが、途中でギブアップ。
結局、地域のテーブル名は決まっているので、
SQL文の中にその地域名があるかどうかを検索する方法にしました。
SQL文の中の地域名を特定し、
それをフォームから指定した地域名で置換するところまでやってます。
おかげさまで、以下が、快調に回っています。
ありがとうございました。
後から誰か見るかもしれないので、以下、貼っておきます。
シロート作ですが…。
Sub 対象地域を切替()
'クエリ内の参照テーブルを変更します
Dim Dbs As DAO.Database
Dim Qdf As DAO.QueryDef
Dim stSQL As String
Dim FIND As String
Dim REP As String
Set Dbs = CurrentDb
Set Qdf = Dbs.QueryDefs("Q_地域")
'Q_地域クエリのSQL文を取得
stSQL = Qdf.SQL
'SQL分の中にどの地域があるかをチェックし、
'地域テーブルが見つかれば、置換の対象にセットする
'最終的には全都道府県分をチェック
If InStr(stSQL, "T_青森") <> 0 Then
REP = "T_青森"
ElseIf InStr(stSQL, "T_秋田") <> 0 Then
REP = "T_秋田"
ElseIf InStr(stSQL, "T_岩手") <> 0 Then
REP = "T_岩手"
ElseIf InStr(stSQL, "T_宮城") <> 0 Then
REP = "T_宮城"
ElseIf InStr(stSQL, "T_福島") <> 0 Then
REP = "T_福島"
Else
REP = "T_山形"
End If
'フォーム「F_対象地域を切替」から切替え先地域を指定
If Forms![F_対象地域を切替]![地域指定] = "青森" Then
FIND = "T_青森"
ElseIf Forms![F_対象地域を切替]![地域指定] = "岩手" Then
FIND = "T_岩手"
ElseIf Forms![F_対象地域を切替]![地域指定] = "秋田" Then
FIND = "T_秋田"
ElseIf Forms![F_対象地域を切替]![地域指定] = "宮城" Then
FIND = "T_宮城"
ElseIf Forms![F_対象地域を切替]![地域指定] = "福島" Then
FIND = "T_福島"
Else
FIND = "T_山形"
End If
'地域切替えの地域テーブル名を表示
MsgBox REP & "⇒切替えます⇒" & FIND
'SQL分の中の地域テーブル名を、使いたい地域テーブル名で書き換える。
Qdf.SQL = Replace(Expression:=Qdf.SQL _
, FIND:=REP _
, Replace:=FIND _
, Compare:=vbTextCompare)
Set Qdf = Nothing
Set Dbs = Nothing
End Sub
|
|