Access VBA質問箱 IV

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

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


415 / 500 ページ ←次へ | 前へ→

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

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

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

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

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

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

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

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

いかがでしょうか。無理でしょうか。
・ツリー全体表示

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

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

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

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

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

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

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

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

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

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

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

DELETE ←禁止

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

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

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

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

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

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

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

【4887】Re:2行目からインポートしたい
質問  にしもり  - 05/4/13(水) 10:03 -

引用なし
パスワード
   > DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "愛知2課", "C:\DB\名古屋名東区.xls",True にしたらできました。

再々すみませんが、3行目からインポートする必要が出ました。
どうすればよいかわかりません。
どなたかご教示お願いします。
・ツリー全体表示

【4886】Re:ホイール操作の禁止
お礼  ゆう  - 05/4/13(水) 9:06 -

引用なし
パスワード
   ▼クロ さん:
有難うございます。ちょっとトライしてみます。
・ツリー全体表示

【4885】Re:ホイール操作の禁止
発言  クロ  - 05/4/13(水) 8:25 -

引用なし
パスワード
   横レス失礼します。
確かに1レコードの表示域が画面に収まらないとスクロールバーで
移動するしかないようですね。
ホイールを無効にするの結構大変ですが以下が参考になります。

http://www.accessclub.jp/bbs2/0027/beginter08905.html
のしゃくさんのレス(8910〜8912)

それなりに大変ですので覚悟してかかってください。
・ツリー全体表示

【4884】Re:ホイール操作の禁止
発言  ゆう  - 05/4/13(水) 4:51 -

引用なし
パスワード
   ▼木村義春 さん:
説明不足ですみません。フォームは単票形式です。
・ツリー全体表示

【4883】Re:ホイール操作の禁止
回答  木村義春  - 05/4/12(火) 19:55 -

引用なし
パスワード
   ▼ゆう さん:
>▼木村義春 さん:
>実際の使用方法としては、クエリのフォーム画面でデータを閲覧するもののため、
>あちこちにレコードが移動できなければなりません。ここで更新作業は一切
>行わず、単純に閲覧のみです。このフォームでは、データを昇順に並び替えて、
>順番に見ていくなどという見方をする人もいるため、できればフィルタによる
>単独レコードの表示はしたくありません。そのため、完全に移動できなくなる
>というのを避けたいんです。

クエリを元に作成したフォーム画面は、一覧表示ですよね?
一覧表示すれば良いだけで十分ではないでしょうか?

その画面で、何故、ホイールの操作の禁止を行いたいのか。。。
イメージがつかめない。
画面例を示した方がほかの人からの回答もつくかと思います。
・ツリー全体表示

【4882】Re:コンボボックスについて
発言  木村義春  - 05/4/12(火) 19:51 -

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

ご多忙のところ、回答頂きまして感謝致しますm(__)m

T_アドレス
ID 性 名 番号 所属 会社名 住所
1    100 A  ・・・・
2    100 A
3    200 B
4    200 B
5    300 C

↑これはあくまで仮の例(本当は他にもフィールドはたくさんある)

>T_アドレスに[社員番号]フィールドを持たせずに、

社員番号っていうか、所属番号です。(100:A所属、200:B所属・・という風に定義している)
その意味とは、T_アドレスの[番号]は削除するということでしょうか??それだと、並び替えはできなくなるのでは?

>T_アドレスに[社員番号]フィールドを持たせずに、
>T_所属から連結した値を持ってくるクエリを
>作成してみてはいかがでしょうか?

T_所属から連結した値を持ってくるクエリって、いうイメージが浮かびませんが、
作業手順はどのようにやるでしょうか?

作業手順がよく分かりませんが、
想像して、(間違いがありましたら、ご指摘をお願いします)
1) オブジェクトのクエリをクリック。
2) 新規作成
3) デザイン ビューで開く
4) SQLビューを開いて、
  SELECT T_アドレス.ID, T_アドレス.姓名, T_所属.番号, T_アドレス.所属 , T_アドレス.会社名, T_アドレス.住所
  FROM T_アドレス INNER JOIN T_所属 ON T_アドレス.所属  = T_所属.所属;
5) testという名前で保存。

と入れました。

しかしながら、これってT_アドレスからフィールドを選択しているだけですよね?
試しに、test(クエリ名)の、あるレコードの[所属]部分をA→Bに変更しましたが、番号は変わりません。
所属が変わったら、番号もT_所属で定義された番号に変わるっていう仕組みにしたいんですが、
作業手順はどうすればよろしいでしょうか?

具体的に作業手順を、画面例とか、テーブル例を示して頂けるとありがたいです。宜しくお願いします。

T_アドレス
ID 所属番号 所属 会社名 住所 ・・・25くらいある。
1 100   A  ・・・・
2 100   A
3 200   B
4 200   B
5 300   C

所属番:数値型、所属:テキスト型

T_所属
  所属番号 所属
1 100   A
2 200   B
3 300   C
4 400   D
5 500   E


約10個くらい

クエリ作成した方がよいとのことでしたら、どういう構造でしょうか?
・ツリー全体表示

【4881】Re:ホイール操作の禁止
発言  ゆう  - 05/4/12(火) 18:48 -

引用なし
パスワード
   ▼木村義春 さん:
実際の使用方法としては、クエリのフォーム画面でデータを閲覧するもののため、
あちこちにレコードが移動できなければなりません。ここで更新作業は一切
行わず、単純に閲覧のみです。このフォームでは、データを昇順に並び替えて、
順番に見ていくなどという見方をする人もいるため、できればフィルタによる
単独レコードの表示はしたくありません。そのため、完全に移動できなくなる
というのを避けたいんです。
・ツリー全体表示

【4880】Re:トップ画面がずれてくる
お礼  ドイツ人  - 05/4/12(火) 11:33 -

引用なし
パスワード
   ▼クロ さん:
それでも、相変わらず下がってきます。
もう気にしないことにいたしました。
遅くなりましたが有難うございます。
・ツリー全体表示

【4879】Re:コンボボックスについて
発言  小僧  - 05/4/12(火) 10:45 -

引用なし
パスワード
   ▼木村義春 さん:
T_アドレスに[社員番号]フィールドを持たせずに、
T_所属から連結した値を持ってくるクエリを
作成してみてはいかがでしょうか?

SELECT T_アドレス.ID, T_アドレス.姓名, T_所属.番号, T_アドレス.所属 , T_アドレス.会社名, T_アドレス.住所
FROM T_アドレス INNER JOIN T_所属 ON T_アドレス.所属  = T_所属.所属;

こんな感じのSQLをクエリのSQLビューに貼り付けて見てください。

…あくまで自分の考えですが、テーブルへのデータの追加、更新等は
直接テーブルをビューで開いて行なうのを避けたほうが良いかなと
思います。
・ツリー全体表示

【4878】Re:2行目からインポートしたい
お礼  にしもり  - 05/4/12(火) 9:11 -

引用なし
パスワード
   ▼かろちん さん:
>2行目からインポートすると言うより1行目をフィールド名として扱えば
>良いんですよ。

ヘルプ等を参考にしつつ、やってみました。
 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "愛知2課", "C:\DB\名古屋名東区.xls",True にしたらできました。
どうもありがとうございました。
・ツリー全体表示

【4877】Re:ホイール操作の禁止
回答  木村義春  - 05/4/12(火) 7:39 -

引用なし
パスワード
   ▼ゆう さん:
>やはり、そうするしかないのでしょうか?
>完全に移動できなくなってしまうのは、できれば避けたいのですが・・・

何故、完全に移動できなくなってしまうのは避けたいのか、
具体的な画面例を示した方が回答がつきやすいと思います。

レコード移動しないように、ホイール操作の禁止を実施したいわけですので、
フィルタをかければ良いと案を出したんですが。。

例)
  Dim Var抽出対象 As Variant
    Var抽出対象 = "[ユーザID]=" & "'" & Forms![addressForm]![txt_ユーザID] & "'"
    MsgBox "住所録画面が表示されます", , "通知"
    DoCmd.OpenForm "住所録画面", acNormal, , Var抽出対象, , acNormal,

例えば、メンバの登録を行う時、ユーザID(txt_ユーザID)を入力して、
ボタンクリックイベント時に上記のように書けば、
その人のレコードしか表示されませんし、ホイール操作しても移動できなく
なります。
・ツリー全体表示

【4876】Re:コンボボックスについて
発言  木村義春  - 05/4/12(火) 5:37 -

引用なし
パスワード
   ▼クマゴロー さん:
早速の回答を頂きまして感謝しております。

これも小僧さんと同じく、フォーム上からの実現です。
テーブル上でコンボボックスで選択した時の番号の自動入力の件を
解決したら、フォーム上でも確かめようと思っていました。

フォーム上で実施する場合は、小僧さん、クマゴローさんのやり方を
確かめたいと思います。

>所属コンボ
>  コントロールソース:所属
>  値集合ソース   :SELECT T_所属.所属 FROM T_所属;
>  連結列      ;2
> 
>Private Sub 所属コンボ_AfterUpdate()
>  番号テキスト.Value = 所属コンボ.colum(0).value
>End Sub
>
>
>これでどうですかね?

私が今、やりたいのは、テーブルです。
【4872】コンボボックスについて を参照ください。
・ツリー全体表示

【4875】Re:2行目からインポートしたい
回答  かろちん  - 05/4/12(火) 1:31 -

引用なし
パスワード
   >どうすれば2行目からインポートできますか?

HELPをよく読んでみましょう。
2行目からインポートすると言うより1行目をフィールド名として扱えば
良いんですよ。
・ツリー全体表示

【4874】Re:コンボボックスについて
回答  クマゴロー  - 05/4/11(月) 23:01 -

引用なし
パスワード
   所属コンボ
  コントロールソース:所属
  値集合ソース   :SELECT T_所属.所属 FROM T_所属;
  連結列      ;2
 
Private Sub 所属コンボ_AfterUpdate()
  番号テキスト.Value = 所属コンボ.colum(0).value
End Sub


これでどうですかね?
・ツリー全体表示

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

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

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

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

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

【4872】Re:コンボボックスについて
質問  木村義春  - 05/4/11(月) 20:05 -

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

ご返信頂きまして、感謝しております!
お忙しいところ、本当に申し訳なく思っております。
フォーム上でもやりたいと思ったんで助かりました。

下記のやり方は、フォーム上でコンボボックスとテキストボックスが
存在して、コンボボックスをT_所属の[所属]を元に選択したら、自動的に
番号が入力される考えですよね。

>フォームのコントロールソースが「T_アドレス」で
>
>コンボボックス  「所属コンボ」 
>テキストボックス 「番号テキスト」
>が存在すると仮定します。
>
>所属コンボ:
>コントロールソース:所属
>値集合ソース   :SELECT T_所属.所属 FROM T_所属;
>
>番号テキスト:
>コントロールソース:番号
>
>として、
>
>Private Sub 所属コンボ_AfterUpdate()
>  Me.番号テキスト.Value = DLookup("番号", "T_所属", _
>              "[所属] = '" & 所属コンボ.Value & "'")
>End Sub

私がやりたいのはその逆でテーブルです。
つまり、小僧さんがフォーム上で実施した場合のやり方と同じですが、
T_アドレスの[所属]をコンボボックスで選択する。
テーブルをデザインビューで開いて、ルックアップのところに
表示コントロールがあるので、それをテキストからコンボに変更したんです。

そのコンボボックスは、T_所属の[所属]から選択するものとして、
選択したら、選択した内容にあわせて、番号を自動入力したいのです。

T_アドレス
ID 性 名 番号 所属 会社名 住所
1    100 A  ・・・・
2    100 A
3    200 B
4    200 B
5    300 C
       ↑コンボボックスで選択(T_所属の[所属]から)
     ↑T_所属で定義された番号が自動入力

並び替えの時に役立つんで。

T_所属

番号 所属
100 A
200 B
300 C
400 D
500 E

テーブルのルックアップに
値集合タイプ:テーブル/クエリ
値集合ソース:SELECT [T_所属].[所属] FROM T_所属;
としたんですが、単純に所属だけ表示され、選択するだけになります。
番号は自動入力されません。それを実現したいのです。

小僧さんが記述して頂いたプログラムを、
SQL文で表現するとどのように記述するんでしょうか?

教えてください。宜しくおねがいしますー。
・ツリー全体表示

415 / 500 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
1084741
(SS)C-BOARD v3.8 is Free