- ベストアンサー
アクセスにオラクルのテーブルをリンク
アクセスでオラクルのテーブルを ODBCでリンクしたいのですが そのとき オラクルのユーザー名を 例えば USERNAME で リンクしたいテーブルを TABLE1 として、 リンクすると アクセス 上では USERNAME_TABLE1 と言う様に ユーザ名 + テーブル名 になってしまいます。 使用したいのは テーブル名だけなので できれば ユーザ名がつかないでリンクしたいのですが、そう言う事はできないのでしょうか? テーブルの量がたくさんあるので あとから名前を変更するのが大変なんです・・・
- みんなの回答 (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
その他の回答 (1)
> アクセスでオラクルのテーブルを ODBCでリンクしたいのですが > > そのとき オラクルのユーザー名を 例えば USERNAME で リンクしたい > テーブルを TABLE1 として、 リンクすると アクセス 上では > > USERNAME_TABLE1 > > と言う様に ユーザ名 + テーブル名 になってしまいます。 > 使用したいのは テーブル名だけなので できれば ユーザ名がつかないで > リンクしたいのですが、そう言う事はできないのでしょうか? 試してませんが、DoCmd.TransferDatabase メソッドでできませんか? > テーブルの量がたくさんあるので あとから名前を変更するのが大変なんです・・・ スクリプト一発で簡単にできるのでは?
お礼
さっそくの回答ありがとうございます。 じつは、アクセスのVBAとかあまり詳しくないので ファイル->外部データの取りこみ->テーブルのリンク で ODBCでテーブルを指定してリンクしているのです。 >スクリプト一発で簡単にできるのでは? とは アクセスのマクロのことなのですか?
お礼
うわー わざわざ本当にありがとうございます。 さっそく試してみます。 その結果はまた報告させていただきます。