![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.6ベストアンサー
- 回答日時:
Ac2000の場合ですので97で使えるかわかりませんが、一応ご参考までに…
ということで、以下のような方法はどうでしょうか?
(ただし、新しいクエリやレポート等は一般ユーザーは勝手に
作成できなくなるかもしれません…。)
*******************************
まず、システムをデータ専用のmdbとプログラム専用のmdbに分けます。(分けないと無理かと思います。)
そして以下のようにします。
●data.mdb
・テーブルとリレーション設定のみを作成
・排他モードにてデータベースパスワードを設定
●program.mdb
・data.mdbへのリンクテーブルとフォーム、クエリ、レポート等を作成
・起動時にデータベースウィンドウを表示しない設定にする
・AllowBypassKey にて、パスワードを知らない限り
ShiftキーOPENができないようにする
・クエリやレポート、フォーム等のオープンは
オリジナルメニューなどを作って実行させる
・ツールバーの内容を変更できない設定にする
*******************************
以上のような状態にすればいいと思うんですが、このとき、
program.mdb内の既存のリンクテーブルは全て一旦消して
再度リンクテーブルを作り直す必要があります。
作り直すときは、あらかじめ先にdata.mdbにデータベース
パスワードを設定しておきます。
その後program.mdb内の既存のリンクテーブルを全て消して
再作成するのですが、そのときにパスワードを求められます。
パスワードを入力してリンクテーブルを再作成します。
以上のようにして全てのリンクテーブルを作り直すと
program.mdbにて、リンクテーブル作成やテーブルの
インポートをする時にいつもパスワードを求められます。
パスワードを入力するとはじめて、リンクテーブルの作成や
テーブルのインポートが可能となります。
パスワードを入力して作成したリンクテーブルでのみ、
data.mdb内のテーブルデータにアクセスできます。
program.mdbでは、そのリンクテーブルをもとにフォームを作成し、
起動時にデータベースウィンドウを表示しないようにすれば
目的のことが一応可能になるかと思います。
(コマンドラインを使う方法はわからないです。すみません。)
逆から言えば、data.mdbのパスワードを知らない限り、
program.mdbの中に余計なリンクテーブル作成やテーブルインポートは
一切できなくなります。
DAOなどでもパスワードを指定しない限りdata.mdb内のテーブルに
アクセスできません。
もちろん2つ目の新しいprogram.mdbやを作ってもアクセスできませんし
他の既存のmdbからもアクセスできません。
また、こちらからもDAOなどを使っても、パスワードを知らない限り
アクセスできません。
もし仮に、program.mdbのほかにprogram_second.mdbというファイルが
作ってあってそこにもdata.mdbのリンクテーブルが作ってあった場合でも、
そのリンクテーブルはパスワードなしに開けません。
(Ac2000だとこういう感じなんですが97では違うのでしょうか…?)
ただ、この方法だと、新規のクエリなどが作成できないかもしれません。
(これはprogram.mdbだけですが。あたらしいprogram.mdbや他の既存mdbでは
data.mdb以外のリンクテーブルをもとにしたクエリなら作れます。)
なお、どうしても追加のクエリ等も作成させたいなら、
(これもAc2000の場合で恐縮ですが、)ダミーのクエリやレポートを
いくつか作っておいて、それをオリジナルメニューで
表示できるようにしておき、必要な時に内容を変える…というかたちに
するとできるかもしれません。
でも、テーブルをいじられたくないのにクエリを作っても良くする
というのはまずい気もするので、一般ユーザーには勝手に
新規クエリも作らせない方がいいとは思うのですが(^^)。
Ac2000では、メニューバーに特定のフォームの起動や特定のクエリの
オープンができるようにするためには
「表示」「ツールバー」「ユーザー設定」で、コマンドタブの
「全てのフォーム」「全てのクエリ」などで、オープンさせたい
クエリ名をメニューバーにドラッグさせます。
(ヘルプメニューの横やオリジナルメニューバーなど)
階層型の新規メニューを作りたい場合は同じくコマンドタブの
「新しいメニュー」の「新しいメニュー」をドラッグします。
その中にさらに「新しいメニュー」を追加し、その中にクエリや
フォームの名前をドラッグします。
オリジナルメニューバーの作り方は以下です。
・「表示」「ツールバー」「ユーザー設定」で、ツールバータブを開く
・「新規作成」で、適当に名前を付けてメニューバーを作成
(この時点ではまだメニューバーではなくツールバーになっているようです)
・新しく作ったメニューバー名が青色反転選択された状態で
プロパティボタンを押して、「ツールバープロパティ」を開く
・「種類」をツールバーからメニューバーに変更…(A)
・「閉じる」「閉じる」
・小さなメニューバーが出来ていると思うので、既存のメニューバー
の下などにドラッグ
・そこへ必要なクエリやフォームのメニューを追加する
・このメニューバーは「起動時の設定」で起動時のオリジナルメニューとして
既存のメニューバーとともに選択可能になります。
※ただし、前述の(A)の設定をしないと、選択リストに表示されてきません。
いつもAc2000のケースで申し訳ないのですが、もしご参考になれば…。
また、もし全く流用できない場合はごめんなさい。
この回答への補足
すばらしい♪
解決しましたっ!
分割もトライしてみたのですが、データの方にだけパスワード設定できるのは盲点でした。
当然、program.mdbの方でもパスワードを聞かれてしまうと
思い込んでいました。
起動時にデータベースウィンドウを表示しないようにする
ことは既に行っております。
メニューなども表示できないようにプロテクトしています。
DBのメインメニューの中にこれらの規制を解除するボタンをプロシージャー内にパスワードを記述して設けてあります。
MDEにしておりますので、パスワードは解読できません。
ありがとうございました。
また、詳しく解説していただきありがとうございました。
本当に助かりました。
また、次回困ったときにはよろしくお願い致します。
No.4
- 回答日時:
いやそこまでご理解されているなら打つ手は殆どないですね。
ADOやDAOでデータ側のDBに接続して処理させる位なら可能でしょう。(参考URLを参照のこと)
ただワークグループでの管理の時に「管理者」が居ると思いますが、このユーザを削除ないしこのユーザに権限を与えないようにすれば、ワークグループの管理でもある程度可能と思われます。どちらにしろコマンドラインでの指定は不味いでしょうね。
googleで「Access データベース パスワード 開く」で検索すると参考になるかも知れません。
参考URL:http://homepage2.nifty.com/inform/vbdb/ado_locke …
No.3
- 回答日時:
はじめまして。
ご質問の主旨からは、外れるかもしれませんが。一案としてご検討いただければ幸いです。
Windows2000以上のOSであれば、ファイルのプロパティに「セキュリティ」があり、ユーザーの権限を制限できます。特定のユーザーのみ利用可能となります。他のユーザーからはファイルを見ることさえ出来なくすることも出来ます。
この回答への補足
残念ですが・・・
特定のユーザーは多数おります。
そのユーザーからテーブルを保護したいのです。
したがって、基本的に特定のすべてのユーザーに対して
DBに対するアクセス権限は与えておかなければいけません。
フォームからアクセスすることは全ユーザーに許可し、
直接テーブルにアクセスすることは禁止したいのです。
何か他の手はあるでしょうか?
よろしくお願いします。
No.2
- 回答日時:
ヘルプはご覧になられているようなので分かるかと思いますが、指定方法は明記されていません。
(隠しコマンドがあるかも知れませんが・・・)なぜ、データベースにパスワードを指定するのか?
また、パスワードをコマンドラインにつけてしまえば結局誰でも見れてしまうがそう言う意味で必要性が分からない。
つける理由がわかれば代替案もご提案できるかも知れません。
この回答への補足
おっしゃる通りです。
ご説明いたします。
テーブルにフォーム以外から直接アクセスできないようにしたいのです。
テーブルを直接見れると、必要以上の生データを一括して取り扱えてしまうので、セキュリティー上様々な問題が発生します。
DBはMDEにしたり、ツールメニューが使えないように
ChangeProperty "AllowBypassKey", dbBoolean, False
など様々な規制をしたりして、テーブルは一切見れないようにしてあるのですが、
他のDBからのインポートやテーブルのリンクはできてしまい、全部見れてしまいます。
そこで、他のDBからはパスワードで保護しようと考えました。
このDBを起動する時には、別のDBからコマンドラインオプションとしてパスワードを指定して起動できればいいな~と思ったわけです。
もちろん、起動をかける別のDBはMDEにしておきパスワードを見れなくしておきます。
グループファイルでユーザー管理も考えたのですが、
ユーザーが新しいグループファイルを勝手に作成して、全ての権限を与えDBを起動してしまえば一巻の終わり!???のようが気がします。
何かいい手はあるでしょうか?
よろしくお願いします。
No.1
- 回答日時:
パスワードはコマンドラインでないといけませんか?
アクセスを起動して
ツール→セキュリティ→データベースパスワードの設定
で設定出来ますが
お気に召したら幸いです
この回答への補足
う~ん・・・私の説明が不明瞭で申し訳ないです。
データベースパスワードの設定の方法ではないです。
(ちなみに、排他モードで立ち上げないとパスワードは設定できません)
設定されたデータベースパスワードをスタートアップの
コマンドラインオプションで指定して立ち上げたいのです。
これで解りましたでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQliteの日付検索について
-
Oracleのsystem表領域について
-
SQL Server 2000 テーブル未使...
-
2台のサーバー間でのテーブル...
-
他のデータベースとのテーブル結合
-
Visuaal Studio Community 2022...
-
カラムが不定なデータベースの...
-
[1000地域 × 10カテゴリー = 1...
-
【投稿情報用データベース post...
-
データベースのER図って下記の...
-
「リネーショナルデータベース...
-
PHPとMySQLを使った掲示板の作り方
-
QSL でのフォーム画面作成について
-
Notion@リレーション値の取得...
-
データベースのレコード内容が...
-
SQL Serverのテーブル作成のエラー
-
男性と2人で飲食店に行きテーブ...
-
ROWNUMでUPDATEをしたいのです...
-
SQL*LoaderでCSVから指定した列...
-
L2SWはARPテーブルを持っている?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
他のデータベースとのテーブル結合
-
SQliteの日付検索について
-
2台のサーバー間でのテーブル...
-
Microsoft Access:クエリのフ...
-
Visuaal Studio Community 2022...
-
ACCESS アクセスで他のデータ...
-
データベースを複数作ったほう...
-
Oracleのsystem表領域について
-
Accessで2種類のデータベースを...
-
構造が同じ別テーブルInsert In...
-
バッチファイルを使ったテーブ...
-
Notion@リレーション値の取得...
-
コマンドラインオプションにパ...
-
同姓同名検索
-
PHPとMySQLを使った掲示板の作り方
-
SqlServer2005 レプリケーショ...
-
テーブル単位のエクスポート、...
-
SQL Server 2000 テーブル未使...
-
カラムが不定なデータベースの...
-
ユニオンクエリについて
おすすめ情報