• ベストアンサー

アクセスにオラクルのテーブルをリンク

アクセスでオラクルのテーブルを ODBCでリンクしたいのですが そのとき オラクルのユーザー名を 例えば USERNAME で リンクしたいテーブルを TABLE1 として、 リンクすると アクセス 上では  USERNAME_TABLE1 と言う様に ユーザ名 + テーブル名 になってしまいます。 使用したいのは テーブル名だけなので できれば ユーザ名がつかないでリンクしたいのですが、そう言う事はできないのでしょうか?  テーブルの量がたくさんあるので あとから名前を変更するのが大変なんです・・・  

質問者が選んだベストアンサー

  • ベストアンサー
noname#4564
noname#4564
回答No.2

  >>スクリプト一発で簡単にできるのでは? >  とは アクセスのマクロのことなのですか? VBAです。(マクロではさすがに無理だと思います) 一例ですが、↓こんな感じ。 Option Compare Database Option Explicit Public Const pCstLngFrm As Long = &HFFFF8000 'フォーム Public Const pCstLngMcr As Long = &HFFFF8002 'マクロ Public Const pCstLngRpt As Long = &HFFFF8004 'レポート Public Const pCstLngMdl As Long = &HFFFF8007 'モジュール Public Const pCstLngQry As Long = &H5& 'クエリー Public Const pCstLngTbl As Long = &H1& 'テーブル Public Const pCstLngOdbcTbl As Long = &H4& 'リンクテーブル(ODBCデータソース) Public Const pCstLngLnkTbl As Long = &H6& 'リンクテーブル(*.MDB) Public Sub ReplaceTableName(ByRef strFind As String, ByRef strReplace As String) Dim db As DAO.Database Dim rs As DAO.Recordset Dim strSql As String Dim strTmp As String strSql = "SELECT" strSql = strSql & " Name" strSql = strSql & " FROM" strSql = strSql & " MSysObjects" strSql = strSql & " WHERE" strSql = strSql & " Type = " & CStr(pCstLngOdbcTbl) strSql = strSql & " AND" strSql = strSql & " Name Like '" & strFind & "*'" strSql = strSql & " ORDER BY" strSql = strSql & " Name" Set db = CurrentDb() Set rs = db.OpenRecordset(strSql, dbOpenSnapshot) With rs Do Until .EOF strTmp = .Fields("Name").Value db.TableDefs(strTmp).Name = Replace(strTmp, strFind, strReplace, , , vbTextCompare) .MoveNext Loop .Close End With Set rs = Nothing db.Close Set db = Nothing End Sub

NARA-OOSAKA
質問者

お礼

うわー   わざわざ本当にありがとうございます。  さっそく試してみます。  その結果はまた報告させていただきます。

その他の回答 (1)

noname#4564
noname#4564
回答No.1

  > アクセスでオラクルのテーブルを ODBCでリンクしたいのですが > > そのとき オラクルのユーザー名を 例えば USERNAME で リンクしたい > テーブルを TABLE1 として、 リンクすると アクセス 上では > >  USERNAME_TABLE1 > > と言う様に ユーザ名 + テーブル名 になってしまいます。 > 使用したいのは テーブル名だけなので できれば ユーザ名がつかないで > リンクしたいのですが、そう言う事はできないのでしょうか? 試してませんが、DoCmd.TransferDatabase メソッドでできませんか? > テーブルの量がたくさんあるので あとから名前を変更するのが大変なんです・・・ スクリプト一発で簡単にできるのでは?  

NARA-OOSAKA
質問者

お礼

さっそくの回答ありがとうございます。 じつは、アクセスのVBAとかあまり詳しくないので ファイル->外部データの取りこみ->テーブルのリンク で ODBCでテーブルを指定してリンクしているのです。 >スクリプト一発で簡単にできるのでは?  とは アクセスのマクロのことなのですか?