本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[ACC2]指定ユーザの作成したSQL Serverのテーブルをアタッチする方法

文書番号: 404066

最終更新日: 1997/11/01


この資料は以下の製品について記述したものです。

この記事は、以前は次の ID で公開されていました: JP404066

概要

SQL Server4.2,6.0 のテーブルの中で、任意のユーザが作成したテーブルとビューだけ をすべてアタッチするモジュールを紹介します。

現象

次のサンプルプロシージャでは、指定した任意のユーザが作成したテーブルとビューだけをすべてアタッチすることができます。ファンクション attach_tbl ( ) では、パススルークエリーを作成し、SQL Server のシステムテーブルからテーブル名を検索し、DoCmdステートメントを使って、マクロのデータベース変換アクションを実行して、アタッチを行っています。パススルークエリーを作成するときには、CreateQueryDef メソッドに直接 SQL 文を指定しないでください。QueyDef オブジェクトを作成してから、sql プロパティに SQL 文を設定するようにしてください。また、connect プロパティにはデータソースとして SQL_Server60 を設定していますが、実際のデータソース名を設定してください。なお、パススルークエリーで実行している SQL 文の詳細については、SQL Server のマニュアルを参照してください。プロシージャ内で行の右端にある_(アンダースコア) は、次の行に続くことを示します。実際にプロシージャにコードを入力する場合は、_ (アンダースコア)を消して 継続して入力してください。
  -----------------------------------------------------------------------------
  Function attach_tbl ()
      Dim db As Database
      Dim qd As QueryDef
      Dim rs As Recordset
      Dim SqlStmt As String, uname As String, passwd As String
      Set db = DBEngine(0)(0)
      Set qd = db.CreateQueryDef("")
      uname = InputBox("どのユーザの作成したテーブルをアタッチしますか?")
      passwd = InputBox("パスワードを入力してください。")
      SqlStmt = "select sysobjects.name from sysobjects, sysusers "
      SqlStmt = SqlStmt & "where sysobjects.uid = sysusers.uid and             _
                      sysusers.name = '"
      SqlStmt = SqlStmt & uname & "' and sysobjects.type = 'U' or              _
                      sysobjects.type = 'V'"
      qd.Sql = SqlStmt
      qd.Connect = "ODBC;DSN=SQL_Server60;UID=" & uname & ";PWD=" & passwd
      qd.ReturnsRecords = True
      Set rs = qd.OpenRecordset()
      Do Until rs.Eof
          DoCmd データベース変換 A_ATTACH, "<SQL データベース>", qd.Connect,   _
                      A_TABLE, rs!Name, rs!Name
          rs.MoveNext
      Loop
      rs.Close
      qd.Close
  End Function
  -----------------------------------------------------------------------------

Keywords: KBHOWTO KB404066
Technology: kbAccess200 kbAccessSearch

inserted by FC2 system