• ベストアンサー

Access-Runtimeについて

Access2000でデータベースパスワード付きのmdb(DB_A.mdb)を起動するためのDB(DB_B.mde)を作成しました。 DB_B.mdeからDB_A.mdbを起動させるために"CreateObject"を使っていますが、RuntimeではCreateObjectを受け付けてくれません。 CreateObject("Access.Application")に相当するものをご存知の方、ご教授いただけませんか? よろしくお願い致しますm(_ _)m

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

  • ベストアンサー
  • skikichi
  • ベストアンサー率65% (45/69)
回答No.2

ん?どういうことでしょうか? ワークグループ管理をすればan_naさんの希望が一石二鳥で実現されるように思われるのですが!? ワークグループ管理とは言ってもユーザーはダミーでひとりです。ワークグループ管理していることは誰も意識しません。しかもIDもパスワードもすべて非公開です。 DB_B.mde(Shell起動)を具体的に記述しますと・・・ ret_value = Shell("C:\Program Files\Microsoft Office\office11\msaccess.EXE " & "DB_A.mdb /user 一般ユーザー /pwd himitsu /nostartup /wrkgrp Z:\Security\system.mdw", 1) ※ご存知だと思いますが、system.mdwは社内共通のフォルダー(例・・・Z:\Security)に置いてくださいね。 したがって、DB_B.mdeを起動する人はIDやパスワードをまったく意識することなく普通にDBを起動しているように感じます。 しかしながら、DB_A.mdbに設定した「一般ユーザー」の権限は特定のフォームやテーブルを見る権限しか与えていませんので実際にDB_A.mdb上では制限された環境下での操作をさせることが可能となります。 また、他からDB_A.mdbのテーブルに対してリンクやインポートをしようと思ってもパスワードは公開されていませんので誰もできません。 もちろん、事前に「管理者」の権限はすべて剥奪しておいてください。同時にオーナー(an_naさん)用に「supervisor」というユーザーを作成しておいて全権を与えておいてください。 これでsupervisorのパスワードを知っているオーナーだけが自由にDBを操作することが可能となるのです。 一石二鳥と言ったのは、フォーム等のアクセス制限ができると同時に他からのリンクも不可能となるからです。

an_na
質問者

お礼

skikichiさん、ご回答ありがとうございました。 アドバイスどおり、ワークグループ管理・shell起動を試してみた結果、Runtimeでも正常に起動させることが出来ました。 本当に勉強になりました、ありがとうございました(^^)v

その他の回答 (1)

  • skikichi
  • ベストアンサー率65% (45/69)
回答No.1

そうですか。Runtimeでは動きませんか。 それでは、ワークグループ管理にして、DB_A.mdbの「管理者」の権限をすべて剥奪し、「superuser」に全権を与えて、DB_B.mdeからパスワード付きで起動してみるしか方法がないかも!?しれませんね。 これであれば、Shell起動が使用できますのでRuntimeでも動きそうです。

an_na
質問者

お礼

skikichiさん、アドバイスありがとうございました。 インポート禁止の件でも、大変お世話になりました。 skikichiさんの過去のワークグループ管理の回答等、参考にさせていただきましたが、DB_A.mdbを閲覧できる人が頻繁に変わるため、ワークグループ管理では管理するのに手間がかかりそうです・・・。 Access2003ではOpenDatabaseでパスワードが設定できるようですが、Access2000のRuntimeを使ってDB_A.mdbを閲覧している人にAccess2003のRuntimeを入れてもらい、Access2003でDB_C.mde(DB_A.mdb起動用)を作成すれば、CreateObjectを使わずに、DB_A.mdbを起動することは可能でしょうか??