Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1864 / 2272 ツリー ←次へ | 前へ→

【4873】テーブルの追加・変更・削除の許可/禁止について。 木村義春 05/4/11(月) 20:19 質問[未読]
【4888】Re:テーブルの追加・変更・削除の許可/禁... 小僧 05/4/13(水) 10:21 発言[未読]
【4889】Re:テーブルの追加・変更・削除の許可/禁... 木村義春 05/4/13(水) 10:50 質問[未読]
【4890】Re:テーブルの追加・変更・削除の許可/禁... 小僧 05/4/13(水) 11:19 回答[未読]
【4891】Re:テーブルの追加・変更・削除の許可/禁... 木村義春 05/4/13(水) 11:26 質問[未読]
【4892】Re:テーブルの追加・変更・削除の許可/禁... 小僧 05/4/13(水) 13:18 回答[未読]
【4893】Re:テーブルの追加・変更・削除の許可/禁... 木村義春 05/4/13(水) 21:03 回答[未読]
【4909】Re:テーブルの追加・変更・削除の許可/禁... 木村義春 05/4/15(金) 21:05 発言[未読]
【4910】Re:テーブルの追加・変更・削除の許可/禁... hatena 05/4/16(土) 1:47 回答[未読]
【4911】Re:テーブルの追加・変更・削除の許可/禁... 木村義春 05/4/16(土) 9:42 質問[未読]
【4914】Re:テーブルの追加・変更・削除の許可/禁... hatena 05/4/16(土) 21:39 回答[未読]
【4915】Re:テーブルの追加・変更・削除の許可/禁... 木村義春 05/4/16(土) 23:31 発言[未読]
【4916】Re:テーブルの追加・変更・削除の許可/禁... hatena 05/4/17(日) 0:21 回答[未読]
【4917】Re:テーブルの追加・変更・削除の許可/禁... 木村義春 05/4/17(日) 2:07 発言[未読]
【4918】Re:テーブルの追加・変更・削除の許可/禁... hatena 05/4/17(日) 10:47 回答[未読]
【4925】Re:テーブルの追加・変更・削除の許可/禁... 木村義春 05/4/19(火) 21:22 お礼[未読]

【4873】テーブルの追加・変更・削除の許可/禁止に...
質問  木村義春  - 05/4/11(月) 20:19 -

引用なし
パスワード
   たびたび、質問させて申し訳なく思います。

テーブルの追加・変更は許可。
テーブルの削除は禁止というのは
どうやって設定するでしょうか?

テーブルのレコードのどこかを右クリックしたら、
新しいレコード(W)、レコードの削除(R)って部分を
新しいレコード(W)は使える、レコードの削除(R)は使えない。

という風に設定したいんですが、どうやってやるでしょうか?
また、プログラム例も教えてください。宜しくお願いします。

【4888】Re:テーブルの追加・変更・削除の許可/禁...
発言  小僧  - 05/4/13(水) 10:21 -

引用なし
パスワード
   ▼木村義春 さん:
なかなかレスがつかないようですね…。

回答ではないのですが自分でお答えできるところまで…。

ACCESSの[ツール]→[セキュリティ]→[ユーザー/グループの権限]に
お望みのようなチェックボックスが見えますが、
MS-Accessに対してセキュリティ設定をしてしまうため、
関係のないmdbにも適用されてしまいます。

【4879】Re:コンボボックスについて
にも書きましたがフォームを作成してテーブルを操作するようにし、
フォーム側で追加・変更・削除の許可/禁止を設定するようにするのは
いかがでしょうか?

【4889】Re:テーブルの追加・変更・削除の許可/禁...
質問  木村義春  - 05/4/13(水) 10:50 -

引用なし
パスワード
   ▼小僧 さん:
>▼木村義春 さん:
>なかなかレスがつかないようですね…。
>
>回答ではないのですが自分でお答えできるところまで…。

>ACCESSの[ツール]→[セキュリティ]→[ユーザー/グループの権限]に
>お望みのようなチェックボックスが見えますが、
>MS-Accessに対してセキュリティ設定をしてしまうため、
>関係のないmdbにも適用されてしまいます。

直接テーブルを開いて設定するためには、このようにしなければならないですが、
権限別に分けて、フォームでボタンを配置する。(ある権限を持つユーザの場合はそのボタンが
配置される。他のユーザは配置されない)

>【4879】Re:コンボボックスについて
>にも書きましたがフォームを作成してテーブルを操作するようにし、
>フォーム側で追加・変更・削除の許可/禁止を設定するようにするのは
>いかがでしょうか?

フォーム上では、フォームプロパティを使って設定できます。

では、テーブルを開いた場合はどうなるでしょうか。
そのボタンを押したらT_アドレスが表示されるわけですが、
レコードの削除は不可能、レコードの追加とデータの変更は許可という風にしたい。
ボタンクリックイベントでプログラムで対応したいんですが、プログラムで
どのように記述するのでしょうか。

DELETE ←禁止

追加は一番下のレコードにデータを入力すれば大丈夫だと思います。。
変更は直接、どこかのデータを変更すれば問題ないと思う。。

ただ、T_テーブルを開く前に、削除禁止と設定をプログラムで表現するとしたら、
どのようにプログラム記述すればよろしいでしょうか。

【4890】Re:テーブルの追加・変更・削除の許可/禁...
回答  小僧  - 05/4/13(水) 11:19 -

引用なし
パスワード
   ▼木村義春 さん:
こんにちは。

>では、テーブルを開いた場合はどうなるでしょうか。
>そのボタンを押したらT_アドレスが表示されるわけですが、

この部分ですよね。
ボタンを押したらT_アドレスが直接表示されるのではなく、
T_アドレスを基にした表形式のフォームを作成し、
フォーム上でデータの追加・変更を行えば
レコードの削除は行えなくなると思うのですがいかがでしょうか?

【4891】Re:テーブルの追加・変更・削除の許可/禁...
質問  木村義春  - 05/4/13(水) 11:26 -

引用なし
パスワード
   >この部分ですよね。
>ボタンを押したらT_アドレスが直接表示されるのではなく、
>T_アドレスを基にした表形式のフォームを作成し、

それは既に作成してあります。

>フォーム上でデータの追加・変更を行えば
>レコードの削除は行えなくなると思うのですがいかがでしょうか?

フォーム上だと、データの変更を行う時点でレコードロックがかかり、
レコード移動できなくなってしまい、保存ボタン(レコード保存される)を押してからでないと、
レコード移動できなくなります。

保存ボタンを押してレコード移動、編集、保存ボタンを押してレコード移動という
繰り返しがフォームでは大変です。

権限によりますが、権限_1は、その人のデータのみ表示させるようにフィルタかけているので、
問題ありませんが、権限_2は、全ユーザのデータを表示させています。

テーブルだとデータ変更しても、レコード移動できるわけなので、テーブルを開いて
編集行えるようにしたいわけです。(そこでレコード削除禁止という制限を設定したい)

いかがでしょうか。無理でしょうか。

【4892】Re:テーブルの追加・変更・削除の許可/禁...
回答  小僧  - 05/4/13(水) 13:18 -

引用なし
パスワード
   ▼木村義春 さん:
>フォーム上だと、データの変更を行う時点でレコードロックがかかり、
>レコード移動できなくなってしまい、保存ボタン(レコード保存される)を押して
>からでないと、
>レコード移動できなくなります。

当方の環境ですと、データベースウィンドウで[フォーム]を選択し、

[新規作成]→[オートフォーム:表形式]

[基になるテーブルまたはクエリの選択]のドロップダウンリスト
T_アドレスを選択

で作成されるフォームで更新・移動ともにできるのですが…。

【4893】Re:テーブルの追加・変更・削除の許可/禁...
回答  木村義春  - 05/4/13(水) 21:03 -

引用なし
パスワード
   お忙しいところ、回答頂きまして誠に有難う御座います。

フォームは単独レコード表示のみにしておりますが。。。汗

やはり、無理でしょうか?
ボタンを押した時点で同時に、テーブルのレコード削除禁止を設定する
プログラム記述はないでしょうか。やはり、無理なんですよね??

可能か、無理かを知りたいです。

【4909】Re:テーブルの追加・変更・削除の許可/禁...
発言  木村義春  - 05/4/15(金) 21:05 -

引用なし
パスワード
   誰もレスがないってことは、不可能でしょうか。。汗
不可能なら、あきらめるしかないと思います。

【4910】Re:テーブルの追加・変更・削除の許可/禁...
回答  hatena  - 05/4/16(土) 1:47 -

引用なし
パスワード
   >フォームは単独レコード表示のみにしておりますが。。。汗
>
>やはり、無理でしょうか?
>ボタンを押した時点で同時に、テーブルのレコード削除禁止を設定する
>プログラム記述はないでしょうか。やはり、無理なんですよね??
>
>可能か、無理かを知りたいです。

テーブルではプログラムによる制御は無理です。
フォームなら可能です。

フォームの単独レコード表示はどのようにしているのですか。
レコード移動したいのなら、単独レコード表示をやめればいいだけでは。

【4911】Re:テーブルの追加・変更・削除の許可/禁...
質問  木村義春  - 05/4/16(土) 9:42 -

引用なし
パスワード
   ▼hatena さん:

hatenaさん、ありがとうございます。

>>フォームは単独レコード表示のみにしておりますが。。。汗

>テーブルではプログラムによる制御は無理です。
>フォームなら可能です。
>
>フォームの単独レコード表示はどのようにしているのですか。
>レコード移動したいのなら、単独レコード表示をやめればいいだけでは。

一般的なユーザは、個人の情報のみ編集となっているので、
フィルタをかけて、単独レコード表示しているんです。

>テーブルではプログラムによる制御は無理です。

こういう意見を聞いて良かったです。晴れてすっきりしました。
念のため、プログラムの制御でなくても、他の方法ってあるでしょうか?
プログラムではなく、Accessの機能で制御できる方法があるので
ありましたら、教えて頂けると幸いです。

もし、あったらその機能をプログラムで表現する設定することも可能でしょうか?
例)起動時の設定をプログラムで表現することも可能とか。

【4914】Re:テーブルの追加・変更・削除の許可/禁...
回答  hatena  - 05/4/16(土) 21:39 -

引用なし
パスワード
   >一般的なユーザは、個人の情報のみ編集となっているので、
>フィルタをかけて、単独レコード表示しているんです。

そのフォームとは別に、
フィルタをかけないフォームを作成して、
データシートビュー表示にすれば、見た目はテーブルと
同じになります。そのフォームをテーブル代わりに使えば
いいのではないですか。フォームならプロパティで
「削除の許可」を「いいえ」にするだけです。

>念のため、プログラムの制御でなくても、他の方法ってあるでしょうか?
>プログラムではなく、Accessの機能で制御できる方法があるので
>ありましたら、教えて頂けると幸いです。

すでに出てますが「セキュリティ」で設定するぐらいしかないと思います。
そもそもテーブル本体を直接ユーザーにさわらせるという事自体
危険なことです。

>もし、あったらその機能をプログラムで表現する設定することも可能でしょうか?

Group オブジェクト,Userオブジェクト,Documentオブジェクト,
Permissions プロパティ当たりをヘルプで調べてみて下さい。
私自身はこのへんは使ったことがないのでこれ以上のアドバイスは
できません。


【4915】Re:テーブルの追加・変更・削除の許可/禁...
発言  木村義春  - 05/4/16(土) 23:31 -

引用なし
パスワード
   ▼hatena さん:

hatena様、ありがとうございます。

>そのフォームとは別に、
>フィルタをかけないフォームを作成して、
>データシートビュー表示にすれば、見た目はテーブルと
>同じになります。そのフォームをテーブル代わりに使えば
>いいのではないですか。フォームならプロパティで
>「削除の許可」を「いいえ」にするだけです。

そーですね。

>すでに出てますが「セキュリティ」で設定するぐらいしかないと思います。
>そもそもテーブル本体を直接ユーザーにさわらせるという事自体
>危険なことです。

テーブル本体を権限によって使い分けておりまして、
ある権限を持つユーザがテーブルを開いてデータの管理を行う場合が
あります。

オートフォームを使って、テーブルをすべて表示する方法もあって、
それで削除をいいえに設定すればいいという方法も考えられますが、
フォームをこれ以上増やすとサイズが余計に増えてしまう、フィールド数の
多さの問題でフォームの幅に入りきれない問題も出てきます。
何か、Accessって制限があって、何か寂しいです(;、;)

【4916】Re:テーブルの追加・変更・削除の許可/禁...
回答  hatena  - 05/4/17(日) 0:21 -

引用なし
パスワード
   >テーブル本体を権限によって使い分けておりまして、
>ある権限を持つユーザがテーブルを開いてデータの管理を行う場合が
>あります。

テーブルはデータを格納する機能
クエリはデータの表示法を定義したり加工したりする機能
フォームはユーザーインターフェイスの機能
というように機能分化されています。
テーブルは本来は、設計者以外さわれないようにするというのが
安全な設計法だと思います。

>オートフォームを使って、テーブルをすべて表示する方法もあって、
>それで削除をいいえに設定すればいいという方法も考えられますが、
>フォームをこれ以上増やすとサイズが余計に増えてしまう、フィールド数の
>多さの問題でフォームの幅に入りきれない問題も出てきます。
>何か、Accessって制限があって、何か寂しいです(;、;)

大量のデータを扱うのが前提のデータベースで、フォームのサイズなど
微々たる物です。上記の機能分化の観点から言って、テーブルよりフォームの
数が多いというのは珍しくもないと思います。
フィールド数が多いというのはテーブル設計の問題かもしれませんし、
多くてもタブコントロールを使うとか工夫すればどうにでもなります。
べつに制限だと思うようなことでもないと思います。

【4917】Re:テーブルの追加・変更・削除の許可/禁...
発言  木村義春  - 05/4/17(日) 2:07 -

引用なし
パスワード
   ▼hatena さん:

hatena様、夜遅くまで回答を頂きましてお礼申し上げます。

>テーブルはデータを格納する機能
>クエリはデータの表示法を定義したり加工したりする機能
>フォームはユーザーインターフェイスの機能
>というように機能分化されています。
>テーブルは本来は、設計者以外さわれないようにするというのが
>安全な設計法だと思います。

ご指摘いただきましてありがとうございます。
なるほど。。。
そこまで考えていませんでした。
オートフォームにして表示したほうがベターということですね。
フォームを増やすことでサイズばかり気にしすぎちゃいました。

>大量のデータを扱うのが前提のデータベースで、フォームのサイズなど
>微々たる物です。上記の機能分化の観点から言って、テーブルよりフォームの
>数が多いというのは珍しくもないと思います。
>フィールド数が多いというのはテーブル設計の問題かもしれませんし、
>多くてもタブコントロールを使うとか工夫すればどうにでもなります。
>べつに制限だと思うようなことでもないと思います。

必要な入力フィールド数が全部で30くらいあるので、オートフォームで
表示してみると、テキストボックスの範囲が狭くなったり、広くなったりと
ばらばらになってしまい、きれいにそろえようとしても、フォームの幅の制限で
そろえることが難しいという状況であります。

そこまでこだわるなら、テキストボックスの高さを高くすればといわれそう
なんですが、逆に見づらくなってしまいます。

普通は、「あいうえお」

しかし、フォームの幅の制限で、テキストの幅をせまくし、高さを高くしたと
しても、例えば、下のようになっちゃいますよね。

あいう ←みづらい
えお

もう少し工夫してみます。

【4918】Re:テーブルの追加・変更・削除の許可/禁...
回答  hatena  - 05/4/17(日) 10:47 -

引用なし
パスワード
   >必要な入力フィールド数が全部で30くらいあるので、オートフォームで
>表示してみると、テキストボックスの範囲が狭くなったり、広くなったりと
>ばらばらになってしまい、きれいにそろえようとしても、フォームの幅の制限で
>そろえることが難しいという状況であります。

データシートビューにすればテーブルを開いたときと全く同じ表示に
なります。
このようなレイアウトの問題でテーブル表示にしていたのなら、
フォームでデータシートビューにすればいいですね。

フィールド数が多ければ、データシートビューでもスクロールするしないと、
全部を見ることはできませんよね。
多くのフィールドを1行で表示させることがそもそも見やすいのかどうか
という問題もあります。

フォームなら、データシートビュー以外に、
リストボックスでメイン情報を一覧表示さらに詳しい詳細情報をサブフォームで一覧表示とか、
タブコントロールで情報をグループ分けして配置してページ切り替えして表示させるとか、
などなど、状況に応じていろいろな表示方法が工夫できます。

Accessに付属のノースウィンドサンプルデータベースとか、ネットなどで
いろいろなサンプルをみて、いろいろな表現方法が有りますので、
参考にされてみてはどうでしょうか。

【4925】Re:テーブルの追加・変更・削除の許可/禁...
お礼  木村義春  - 05/4/19(火) 21:22 -

引用なし
パスワード
   ▼hatena さん:

ありがとうございます。

>データシートビューにすればテーブルを開いたときと全く同じ表示に
>なります。

やってみたところ、確かに同じ表示になっていましたw

>このようなレイアウトの問題でテーブル表示にしていたのなら、
>フォームでデータシートビューにすればいいですね。

>フィールド数が多ければ、データシートビューでもスクロールするしないと、
>全部を見ることはできませんよね。
>多くのフィールドを1行で表示させることがそもそも見やすいのかどうか
>という問題もあります。

>Accessに付属のノースウィンドサンプルデータベースとか、ネットなどで
>いろいろなサンプルをみて、いろいろな表現方法が有りますので、
>参考にされてみてはどうでしょうか。

ご返信が遅くなって申し訳ないですが、参考にがんばります。

1864 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078230
(SS)C-BOARD v3.8 is Free