Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Access 2007)
AccessからSQL Server のストアドプロシジャーの認識
投稿日時: 17/04/29 15:42:17
投稿者: Yuki
メールを送信

こんにちは
 
ACCESS VER 2007
SQL SERVER 2000
ACCESS 2003 で作成した adp を
accdb に変換しようとしています。
SQL SERVER の インポート リンクテーブルマネージャーで
テーブル、ビュー、レポートでストアドを使用していないフォーム等は
動きます。
ところがストアドの記述ある行はストアド名の定義がありませんとなり
ます。
adp ではクエリにストアドのオブジェクトが入っていますが
accdb では表示することができないです。
accdb でのストアドの認識が出来ていないのが原因と思われます。
どのようにしたらよいでしょうか?
ご指導願います。

回答
投稿日時: 17/05/01 11:32:58
投稿者: sk

引用:
ACCESS 2003 で作成した adp を
accdb に変換しようとしています。
SQL SERVER の インポート リンクテーブルマネージャーで
テーブル、ビュー、レポートでストアドを使用していないフォーム等は
動きます。

・adp ファイルにおけるテーブル/ビュー/ストアドプロシージャ/ストアドファンクション
 自体は、接続先である SQL Server データベース上に存在する。
 ( adp ファイルからそれらのオブジェクトを参照しているに過ぎない)
 
・adp ファイルにおけるフォーム/レポート/マクロ/モジュールは
 adp ファイル自体に格納されている。
 
・SQL Server データベース上のテーブルとビューについては、
 Access データベース( mdb / accdb ファイル)上の
 リンクテーブル(オブジェクト)として参照することが可能である。
 
引用:
ところがストアドの記述ある行はストアド名の定義がありませんとなり
ます。
adp ではクエリにストアドのオブジェクトが入っていますが
accdb では表示することができないです。
accdb でのストアドの認識が出来ていないのが原因と思われます。

・SQL Server データベース上のストアドプロシージャ及び
 ストアドファンクションについては、Access データベース上の
 オブジェクトとして参照することが出来ない。
 ( mdb / accdb ファイルにおいて使用されるオブジェクトの種類に、
  これらは含まれない)
 
・したがって、adp ファイル上において
 「ストアドプロシージャをレコードソースとする連結フォーム」
 だったフォームは、accdb ファイル上では機能しない。
 
・また、[ストアドプロシージャを開く]アクション(マクロ)及び
 DoCmd オブジェクトの OpenStoredProcedure メソッド( VBA )は
 あくまで adp ファイル限定の機能であり、
 mdb / accdb ファイルでは使用することが出来ない。
 
引用:
どのようにしたらよいでしょうか?

それぞれのストアドプロシージャにおいて実行されている
処理の内容次第ではないかと。
 
・ADO を使用する。
 
・パススルークエリを使用する。
 
・(ローカルテーブルとリンクテーブルとの間で
 データのやりとりを行なう場合等は)
 ストアドプロシージャの機能を代替するクエリを
 accdb ファイル上に新規作成する。
 
概ね以上の 3 通りの方法を採ることになるとは思いますが。

投稿日時: 17/05/01 16:45:49
投稿者: Yuki
メールを送信

こんにちは。
 
skさん ありがとうございます。
 
最初から出来ない方向で考えればショックが少なくて済んだでしょうに。
気落ちしています
ストアドの部分は ADOに組み替える方向で進めます。
 
だけど MSも無駄な手間をかけさすなぁ
Accessで チョッとしたアプリを開発したのですが 
64Bitで動くように」してくれと変更依頼がきています。
これからも増えそう
 
skさn ありがとうございました。
 
 
 
 
 

投稿日時: 17/05/09 00:02:19
投稿者: Yuki
メールを送信

閉じるのを忘れていました。
 
ありがとう御座いました