「ODBC経由しないで」とありますが、ODBCを利用するが「ODBC接続定義を
作成しないで接続出来る」のであれば良いですか?
フォームのレコードソースにしたいとかクエリーで使用したい等、
リンクテーブルの形式で使用したいのでしたら、ちょっと手間ですが
下記の方法を試してみて下さい。
まず、最初に一度ODBC接続定義を利用してSQL Serverへのリンクテーブルを
作成して下さい(多分、現状でこの接続になっているかと思います)。
どれかリンクテーブルを[デザイン]で開き、[表示]-[プロパティ]-[説明]が、
ODBC;DSN=〜
の形式になっているかと思います(確認のみ)。
フォームを作成し、コマンドボタン等のイベントに、下記の様なコードを記述
して下さい。
※VBAの編集画面で、[ツール]-[参照設定]を開き、
[Microsoft DAO 3.x Object Library] をチェックしておいて下さい。
Private Sub コマンド0_Click()
Dim DB As DAO.Database
Dim TD As DAO.TableDef
Set DB = CurrentDb()
Set TD = DB.TableDefs("[テーブル名]")
TD.Connect = "ODBC;Driver={SQL Server};SERVER=[サーバ名];DATABASE=[データベース名];Network=dbmssocn;Trusted_Connection=No;UID=SASA;PWD=pass"
TD.Attributes = DAO.TableDefAttributeEnum.dbAttachSavePWD
TD.RefreshLink
End Sub
[テーブル名]は、変換したいAccessのリンクテーブル名
[サーバ名]は、SQL Serverのコンピュータ名(もしくはIPアドレス)
[データベース名] は、SQL Serverのデータベース名
に置き換えて下さい。
概略ですが、
Network=dbmssocn : TCP/IP接続を利用する
Trusted_Connection=No : Windows認証接続にしない(ID/PW接続にする)
dbAttachSavePWD : パスワードを保存する
の意味です(詳しくは、検索してみて下さい)。
フォームを保存し、コマンドボタンをクリックして上記VBAを実行します。
リンクテーブルを[デザイン]で開き、[表示]-[プロパティ]-[説明]が、
ODBC;Driver={SQL Server};〜
の形式に変わっているか確認してみて下さい。
これで、ODBC接続定義は削除してもSQL Serverへの接続は出来るかと思います。
ちなみに最初に、ODBC接続定義を利用してリンクテーブルを作成しない方法も
ありますが、VBAのコードがややこしくなるので省きます。
(興味があるなら、TableDefs.Append で検索してみて下さい)
@@A2008048100@@
も参考になるかと
回答3 (この回答は回答2に対する回答です)
- 投稿ID:A2008053242
- 投稿日時:2008/09/17 18:23