インポート禁止の方法とは?

このQ&Aのポイント
  • ACCESS2000で外部DBからのインポートを禁止する方法を教えてください。
  • フォルダへのアクセス権限を与えられた人でも、インポートすると全てのデータを閲覧できてしまう現象に困っています。
  • 良い方法をご存知の方はいらっしゃいますか?
回答を見る
  • ベストアンサー

インポート禁止にするには?

ACCESS2000で外部DBからのインポートを禁止するにはどのような設定をしたらいいでしょうか?以前、こちらのページでも同様の質問があったようで、拝見させていただきましたが、いまいちよく分かりませんでした・・・。 現在、権限を与えられた人のみが入れるフォルダの中にデータベースを作成し、そのデータベース中でもPassWord管理をして、該当データのみを閲覧することができるようにしていますが、そのフォルダに入ることができる人はインポートをすると全てのデータを閲覧することができてしまいます・・・。 どなたか良い方法をご存知の方教えていただけませんか? よろしくお願い致しますm(_ _)m

  • an_na
  • お礼率54% (6/11)

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

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

こういうことでしょうか? 1.特定の人物は、フォームを介して限られたデータを参照できる。 2.その特定の人物であっても、すべてのデータのインポートを禁止する。 1.に関しては現状通りフォームにパスワードを設定して参照制限されるのでよろしいかと思います。 (ワークグループ管理してユーザー毎にテーブル参照権限を与えてもいいでしょう) 2.そうですね。DB_B.mdeからパスワード付きのDB_A.mdbを起動するのでいいでしょう。 その具体的ソースは、an_naさんが書かれたもので間違いないです。動くはずです。 DB_B.mdeの「モジュール(初期処理)」のソース (マクロのautoexecでプロシージャ(初期処理)の実行を定義しておく) モジュール「初期処理」の中身 ============================ Dim appAcc As Access.Application Dim db As DAO.Database Set appAcc = CreateObject("Access.Application") Set db = appAcc.DBEngine.OpenDatabase("D:\DB_A.mdb", False, False, "MS Access;pwd=himitsu") appAcc.OpenCurrentDatabase "D:\DB_A.mdb" db.Close Set db = Nothing appAcc.Visible = True DoCmd.Quit acQuitSaveNone ==================================

an_na
質問者

お礼

>こういうことでしょうか? >1.特定の人物は、フォームを介して限られたデータを参照できる。 >2.その特定の人物であっても、すべてのデータのインポートを禁止する。 →そのとおりです。上手に説明できなくてごめんなさい。 再度実行してみたら正常に起動しました。 本当にお世話になりました★

その他の回答 (6)

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

うまくいってよかったです(^^ もちろん、起動のためのDB_B.mdbは実行形式のmdeにしてソースコードを見れないようにしておいてくださいね。 それから、DB_Bの起動時の設定で表示オプションを全部はずしておくと起動された瞬間に余計なものが見えなくて綺麗ですよ。 ワークグループ管理で権限をはずしてShell起動する方法もありますが、またの機会ということで。 それでは。

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

まず、#4で質問した内容に回答していただかないと答えが出ません。 >skikichiさんの教えてくださったインポート禁止の方法で進めていきます★ と言われても#4で質問したように疑問点があるのでそれを具体的に実現する方法が変わってきます。 DB_BからDB_Aを起動しなくてもよいのではないでしょうか?

an_na
質問者

補足

>1.ユーザー管理(ワークグループ管理)はしていますか? →いいえ >system.mdw とか WRKGADM.EXEを使用されていますか? →いいえ >2.最初の質問にあった「・・・、そのデータベース中でもPassWord管理をして、該当データのみを閲覧することができるようにしていますが・・・」 >この意味は? →DB_A.mdbの初期フォームでこのDBにアクセスできる人(※1)に独自でパスワードを発行し、そのパスワードを入力してもらい、特定データを検索するようにしています。 >DB自体にパスワードはかけられているのですか? →質問時点ではパスワードはかけていませんでした。 >それともワークグループ管理されているのですか? →いいえ >3.「→DB_A.mdbのパスワードを知っていればインポート可」 >ということは、単純にDB_A.mdbにDB自体のパスワードをかければOKではないのでしょうか? >パスワードを知らない人はインポート不可になりますよ。 →(※1)の人はインポート禁止にしたい やはりDB_A.mdb自体ににパスワードを設定して、DB_B.mdbからパスワード付きのDB_A.mdbを起動させたいと思います。

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

ちょっと言葉の定義と言いますか、概念に相違があるように感じますので、再度確認します。 1.ユーザー管理(ワークグループ管理)はしていますか? system.mdw とか WRKGADM.EXEを使用されていますか? 2.最初の質問にあった「・・・、そのデータベース中でもPassWord管理をして、該当データのみを閲覧することができるようにしていますが・・・」 この意味は? DB自体にパスワードはかけられているのですか? それともワークグループ管理されているのですか? 3.「→DB_A.mdbのパスワードを知っていればインポート可」 ということは、単純にDB_A.mdbにDB自体のパスワードをかければOKではないのでしょうか? パスワードを知らない人はインポート不可になりますよ。 どうも補足していただいている内容にいくつか矛盾点があるような気がするのですが!? 言っていることが分りますでしょうか?

an_na
質問者

お礼

skikichiさん、お世話になっています。 すみません、根本的に私の考え方が間違っていました。 skikichiさんの教えてくださったインポート禁止の方法で進めていきます★ こんなおバカな私に丁寧に説明してくださってありがとうございました。 あと一点、DB_B.mdbからDB_A.mdbを呼び出す方法を色々試してみましたが、上手くいきません。 Dim appAcc As Access.Application Dim db As DAO.Database Set appAcc = CreateObject("Access.Application") Set db = appAcc.DBEngine.OpenDatabase("C:\External.mdb" _ , False, False, "MS Access;pwd=password") appAcc.OpenCurrentDatabase "C:\External.mdb" db.Close: Set db = Nothing appAcc.Visible = True ' 表示させたい場合 上記を参考に動かしてみましたが、”DBEngineメソッドは失敗しました。_Applicationオブジェクト”というエラーメッセージが表示されてしまいます。 DB_B.mdbからDB_A.mdbを起動させるにはどのようにしたら良いでのしょうか?

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

まず、DB_A.mdbとDB_B.mdeは全く別のDBです。 今までの機能はすべてDB_A.mdbに存在します。 DB_B.mdeはDB_A.mdbを起動するためだけに存在するDBです。 当然、DB_B.mdeにはテーブルは存在しません。 したがって、外部からテーブルを参照しようとする人はDB_A.mdbへアクセスしなければなりません。 しかし、今回の場合DB_A.mdbにはパスワードがかかっていますので、それを知り得る人だけしか参照もインポートもできないわけです。 確認事項: 1.ユーザー毎に参照できるテーブルを制限していますか?   (ユーザー名毎にテーブルの参照権限を付与している) 2.ユーザー毎の制限を保持しつつ、誰からもインポート禁止にしたいですか? 3.ユーザー毎ではなく、DB自体のパスワードを知っている全ての人はフォームを介してすべてのデータを閲覧できてもよいですか? (もちろん、DB自体のパスワードを知っていてもインポートできないようにできます)

an_na
質問者

補足

skikichiさん、お世話になります。 理解力不足でしたが、ようやく把握できました。 >確認事項: >1.ユーザー毎に参照できるテーブルを制限していますか? >  (ユーザー名毎にテーブルの参照権限を付与している) →いいえ >2.ユーザー毎の制限を保持しつつ、誰からもインポート禁止にしたいですか? →はい >3.ユーザー毎ではなく、DB自体のパスワードを知っている全ての人はフォームを介してすべてのデータを閲覧できてもよいですか? >(もちろん、DB自体のパスワードを知っていてもインポートできないようにできます) →DB_A.mdbのパスワードを知っていればインポート可 ちなみにパスワードつきの外部DBを開くにはどのようにしたら良いのでしょうか? 本当に度々すみませんがお教えください。

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

データベースウィンドウを非表示にしたり、メニューバーを非表示にしたり、ファンクションキーを無効にしたりなどなど、テーブルを閲覧する方法は多数ありますので、それらをすべてプロテクトすることが可能です。 う~ん・・・ どういうことを言っているのでしょうか? DB_B.mdeのパスワードを知っている人でもDB_A.mdbのパスワードは知らないのですから、テーブルを直接見れる人はいないはずですが。 DB_B.mdeのソースは誰も見れませんので、DB_A.mdbのパスワードはあなたしか知り得ませんよ。

an_na
質問者

補足

skikichiさん 度々すみません。 先ほど教えていただいた通り、 >1.DB(DB_A.mdb)にパスワードをかけてください。 >2.DB_A.mdbを起動するDB(db_B.mde)を作成してください。 >3.DB_B.mdeにパスワードをかけて・・・ 上記処理を実行してみました。 そこで検証のため外部DBからdb_B.mdeのテーブルのインポートを試みたところ、db_B.mdeのパスワードを入力すると、DB_A.mdbのテーブルがインポートされてしまいました・・・。 ちなみに、db_B.mdeはDB_A.mdbからmdeファイルの作成で作成し、DB_A.mdbテーブルにリンクさせました。 う~ん、どうしてダメなのでしょう?? 本当に初心者なもので色々と質問してしまってすみません。

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

「DBのパスワード管理」とは何をされているのでしょうか? ユーザー毎に権限を与えているのですか? それとも、DB自体にパスワードをかけているのですか? 完全にインポート禁止にするには・・・ 1.DB(DB_A.mdb)にパスワードをかけてください。 2.DB_A.mdbを起動するDB(db_B.mde)を作成してください。(mdeの実行形式にしてください。また、起動画面を非表示にし、起動終了後速やかにmdeを終了するようにプログラムしておくのがスマートですね) これで、DB_A.mdbからインポートできる人はあなただけです。 (今まで通り特定の人だけが起動できるようにしたいのであれば、DB_B.mdeにパスワードをかけて特定の人に公開してください) ユーザー管理で権限を与えパスワードを付与する形でも同様の手法が取れます。 DB_A.mdbを起動できる人は、テーブルを直接見ることができてしまいますが、これを完全にプロテクトする方法もあります。 ご希望できたら、それは別途ご説明します。

an_na
質問者

補足

skikichiさん、早速のご回答ありがとうございました。 >「DBのパスワード管理」とは何をされているのでしょうか? >ユーザー毎に権限を与えているのですか? >それとも、DB自体にパスワードをかけているのですか? 現在、DB自体にはパスワードはかけておらず、ログインしてきたユーザーによって表示データを選択し、表示しています。 >DB_A.mdbを起動できる人は、テーブルを直接見ることができてしまいますが、これを完全にプロテクトする方法もあります。 データベースウィンドウを非表示にする設定のことですか?こちらは苦労しながら何とか設定しました。 >(今まで通り特定の人だけが起動できるようにしたいのであれば、DB_B.mdeにパスワードをかけて特定の人に公開してください) DB_B.mdeにパスワードをかけると、そのDBに入ることができる人は結局全てのデータの閲覧権限を持ってしまうんですよねぇ・・・。 どうにかDB_B.mdeにログインしたときに閲覧できるデータ以外は公開しないという良いアイデアはありませんか? よろしくお願い致します。

関連するQ&A

  • インポート禁止にしたい

    Access97です。 データベースにパスワードをかけずに、他のDBからテーブルをインポートできないようにしたい。 何か方法はないでしょうか?

  • インポートできない

    エクセルで作成したデータを、アクセスにインポートしたいのですが反応がありません 手順はこうです。 ・データベース画面のテーブル表示 ・何もない所で右クリック→インポート ・ファイルの種類で「xls」を選択し、インポート 普通ならここでインポートウィザードの画面になるのですが、出てきません ファイル→外部データの取込→インポートの手順でも同じです どうすればインポートできるのでしょうか

  • アクセスにインポートできません。

    Access97を使っています。 エクセルもcsvもインポートできません。 「外部データの取りこみ」→「インポート」で進み、 「ファイルの種類」を選択しようとしたところ、 一覧にエクセルもcsvも出てきません。 「Microsoft Access」と「ODBCデータベース」 のみです。 エクセルもcsvも検索はできますが、 インポートしようとすると 「データベース形式○○○を認識できません。」 というエラーメッセージが表示されます。 どうすれば解決できるでしょうか? よろしくお願いします。

  • Access 外部データ インポートエラー?

    Access2010で外部データ(Excel2010)インポートで以下のエラーメッセージが出ます。 このプロパティは外部データソースまたは 前のバージョンのJetデータベースエンジンで作成されたデータベースではサポートされていません。 Excelのデータは特殊なものはありません。日付は空欄と日付以外は入っていません。 他のデータは問題なくインポートされています。 宜しくお願いします。

  • Subversionのインポート操作を禁止する方法

    Subversionのインポート操作を管理側で禁止する方法がありましたら、教えて下さい。 プログラマではない人も、Subversionを使ってもらって、ソースコードを管理しています。 しかし、「Checkout」と「Import」の意味を間違えて、ソースコードを大量にコミットしてしまうケースがしばしばあります。 何らか禁止する手段はありますでしょうか?

  • 【Excel2000】Access2000からのデータインポートについて

    Access2000のデータをExcel2000にインポートしたいのですが、 条件を付けてインポートする方法についてお教えください。 (Access2000のクエリデータ) 依頼No(順不同):内容 3:aaaaa 5:bbbbb 1:ccccc (Excel2000のデータ) 依頼No:内容(空白) 1: 2: 3: 4:  5: ※スペースが使用できませんので区切りは:とさせて頂いております。 ExcelデータとAccessデータをマッチングさせ Excelデータの依頼Noに対応するAccessデータの内容を Accessデータから取ってくるというようなイメージです。 外部データの取り込み-新しいデータベースクエリから行おうとしましたが どのように条件を指定して良いのかわかりません。 VBAでないとできないのでしょうか。 お分かりになられる方、ぜひお教えくださいませ。 よろしくお願い致します。

  • Access2007へCSVデータなどをインポートしたい

    Access2007において顧客データベースを運用しています。 定期的に他のデータベースから書き出したCSVファイルを この顧客データベースの中にインポートしたいのですが可能ですか? CSVのデータををテーブルとしてインポートすることはできるのですが、 データベースの中身(データ)のみを項目ごとに割り振って流し込みたいのです。 よろしくお願いいたします。

  • heroDBに外部CSVをインポートしたいのですが

    heroDBというデータベースを利用しており、外部のCSVをインポートさせたいのですがどのようにすればいいのでしょうか? 現在heroDBというフリーのデータベースを利用し、別なサイトの会員データCSVをインポートしてデータベース更新などができればと考えています。 コンマ区切りのCSVなのですが、heroDBを利用してインポートは可能なのでしょうか? その際はどのようにすればインポートできますでしょうか? 初心者なので右も左もわからず・・・

  • アクセス2010のインポートについて

    調べてみてもわからなかったので教えてください。アクセス初心者です。 アクセスでデータベースを作成しようと試みています。 あるエクセルデータをアクセスでテーブルとして使用したく、インポートしました。 なにやら、思惑とは違い、一部のデータが、エクセルの所定の列とはフィールドがずれていて、 エクセルデータを確認したところ、一つのセルの中に、半角カンマが入っていました。 どうやらこのことが原因みたいなのですが、最初は半角カンマを他の文字に変えようかとも検討したのですが、半角カンマが入った状態でインポートした方がいいという結論に達しました。 どうしたら上記のデータを半角カンマをとらずにフィールドがずれることなくアクセスへインポートできるでしょうか

  • MYSQL テーブルデータエクスポート→インポート

    mysqlのテーブル単位でのバックアップ/インポートの方法を 教えてください。 mysqlのデータベース  abc テーブル名 dfg 試しに下記内容をやってみたいですが、コマンドラインからの 方法を詳しい方ご教授頂けませんでしょうか? abc データベース中のdfgのテーブルのデータを abcのコピーDBのabc2というデータベース中のdfgへインポート更新 させたいのですが、DB単位でのバックアップはわかるのですが、 テーブル単位でのコマンドラインがわかりません。 どなたかわかられる方ご教授頂けませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • MySQL