• 締切済み

accessでSQL実行時のテーブル名にdbo?

access2007を使用しています。 テーブルをリンクで参照しているのですが、全てのテーブル名に「dbo_」と付いています。 accessにてSQLを実行する際、 「作成タブ」>「クエリデザイン」>「SQL表示」>SLQ記入>「!ボタン(実行)」 にて実行しています。 SQL記入の際にテーブル名に「dbo_」を入力しなければなりません。 これを無しで実行する方法は無いのでしょうか?

みんなの回答

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.2

> Set rs = db.Execute("select Name from MsysObjects where Name Like ""dbo_*"" and type = 6") この行でエラーにならなかったら無限ループですね。 エラーになってラッキーです。 システムオブジェクトを開いてトラブルがあると怖いものがあるので 「MsysObjects」 を参照しない方法で。 Sub Proc_LinkTable_Rename()   Dim dbs As DAO.Database   Dim tdf As DAO.TableDef   Set dbs = CurrentDb   For Each tdf In dbs.TableDefs     If tdf.Connect <> "" Then       If tdf.Name Like "dbo_*" Then         tdf.Name = Mid(tdf.Name, 5)       End If      End If    Next   dbs.Close   Set dbs = Nothing End Sub ナビゲーションウィンドウには遅れて表示されるかもしれません。

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

3つぐらい方法はあるかと思います。 (1)テーブルのリンクテーブルを一個一個、「名前の変更」で「dbo_」をはずす。 (2)以下のようなサブプロシージャーを作成して実行 Sub proc_linktable_rename() Dim db As DAO.Database Dim tdf As DAO.TableDef Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.Execute("select Name from MsysObjects where Name Like ""dbo_*"" and type = 6") Do Until rs.EOF Set tdf = db.TableDefs(rs.Fields(0)) tdf.Name = replace( rs.Fields(0), "dbo_", "") Loop Set tdf = Nothing Set db = Nothing End Sub (3)クエリデザイン画面でテーブルを右クリックして、プロパティの別名を変更。

7u7
質問者

お礼

nora1962さん、ご回答ありがとうございます。 テーブルが数百あるので1つ1つ変えるのはかなり厳しいと考え、(2)を選択しました。 モジュールを作成し実行してみた所、 Executeの所で「functionまたは変数が必要です」と表示されてしまいエラーとなってしまします。 原因を調べてみましたが分かりませんでした。 申し訳ありませんが、どのように修正すればよろしいのでしょうか?

関連するQ&A