Accessでマスタのテーブル1があります。
その中には
ID 名前 グループ
1 Aさん 555
2 Bさん 555
3 Cさん 666
4 Dさん 666
IDはオートナンバーで主キーにしています。
ただ単純に上記のテーブル1に下記のようにチェックボックスを追加したいと思っています。
ID 名前 グループ チェック
1 Aさん 555 □
2 Bさん 555 □
3 Cさん 666 □
4 Dさん 666 □
チェックはYES/NO型
仕様としてテーブル1がマスタなので変更できない事が条件。
本題ですが、上記の状態でグループCさんにチェックを入れ、コンボボックスでグループが666 and チェックが付いているデータのみ表示するように出来ないでしょうか?
クエリで簡単に出来ると思ったのですが、チェックを追加するところでつまづいています・・・。
クエリの抽出条件でグループを666にし、グループの絞込みは出来ると思うのですが・・・。
わかりにくいかと思いますが、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
まず、ご質問文中の
> 仕様としてテーブル1がマスタなので変更できない事が条件。
についての確認になりますが、『変更できない』というのは
1)「フィールドの追加」が不可
2)「ID/名前/グループ」は編集不可で、チェックボックスのみ
編集可能にしたい(フィールドの追加は可)
3)改めて考えてみたら両方必要かも
のどれになるか、で、対処法も変わります。
一応、上記の想定で、それぞれを説明してみます。
【フィールドの追加が不可の場合】
それぞれのレコードに対してチェックのオン/オフを個別に指定する
ためには「フィールド」は必須となりますので、チェックボックス用の
テーブルを新規作成して対応することになります。
このとき、それぞれのチェックがどのレコードに対しての指定なのか
を判別できるようにするために、主キーの「ID」も追加します。
<新規テーブル「テーブル2」の構成>
フィールド: ID(長整数型・主キー)、チェック(Yes/No型)
※IDは「テーブル1」のIDに合わせて任意の値を記録する必要
があるため、オートナンバーにはしません。
あとは、
a)テーブル1に既存の全IDを、テーブル2に登録するための
「追加クエリ」
b)テーブル1とテーブル2を元に「ID/名前/グループ/チェック」を
表示する「選択クエリ」
を作成してやれば、ご希望の動作をさせることができます。
(「a」の追加クエリを実行後、「b」の選択クエリ(またはそれを
元にしたフォーム)を開き、チェックを更新&検索を実行、と)
※選択クエリ/追加クエリの作成方法はご存知と推測して省略
しましたが、必要であれば補足します。
【ID/名前/グループ/チェックのうちチェックのみ更新可にする場合】
テーブル1に「チェック」の追加がOkなら、まずはそれを追加します。
NGの場合は、上記のようにして新規のテーブルとクエリを作成します。
<更新や検索をフォーム上のみで行う場合>
上記のテーブル/クエリを元にしてフォームを作成したら、そのデザイン
ビューで、「ID/名前/グループ」の各データを表示するコントロールの
『編集ロック』プロパティを「はい」に設定してやればOkです。
(『編集ロック』プロパティは、各コントロールのプロパティシートの
『データ』タブにあります)
※「チェック」の『編集ロック』は既定の「いいえ」のままです。
なお、『使用可能』プロパティは、すべて既定の「はい」にします。
<テーブル/クエリ上でも更新や検索を行う場合>
テーブルについては、残念ながら編集を制限する方法はありません(汗)
ただ、クエリを使えば制限は可能なので、「テーブルは直接開かない」
という運用ルールを設定した上で、「テーブル上のすべてのレコードを
表示するクエリ」を作成し、そちらで編集を行う形にすれば、対処は
可能になります。
編集を制限するためには、通常、クエリのデザインビューで行っている
フィールドの指定方法を、変更してやります。
[通常の指定方法]
<クエリのデザインビュー>
フィールド: ID
テーブル: テーブル1
並べ替え:
表示: □
[編集を制限したい場合の指定方法]
<クエリのデザインビュー>
フィールド: =[テーブル1].[ID]
テーブル:
並べ替え:
表示: □
上側のように、フィールド自体を直接指定するのではなく、
下側のように、先頭に「=」をつけた「式」として指定してやると、
編集を制限できます。
(関数の演算結果は手入力では編集できないため)
ですので、編集を制限したい「ID/名前/グループ」には「=」を
つけて、編集を許可したい「チェック」については通常通りで、
それぞれクエリのフィールドとして追加してやれば、ご希望の
動作になるかと思います。
(「=」をつけたフィールドに対しても、通常と同様に抽出条件は
指定できます)
・・・長くなりましたが、以上です。
お礼が大変遅くなってしまい申し訳ありません。
連絡が失念してしまいました。
上記方法で何とか解決できる事が出来ました。
細かく教えていただいたお掛けです。
システムもかなり複雑で苦労しましたが解決でき、
感謝しています。ありがとうございました。
No.5
- 回答日時:
クエリの段階でチェックの内容を保持したいとなると、
テーブルが必要になると思います。
テーブル2 として、「ID」「チェック」を作ります。
「ID」は、数値型(長整数)主キー
「チェック」は、Yes/No型
チェックを入れる/外す段階では、一覧表示が必要と思うので、
クエリを作成します(SQLビュー表示にて)
SELECT T1.ID, T1.名前, T1.グループ, T2.チェック
FROM テーブル1 AS T1 LEFT JOIN テーブル2 AS T2 ON T1.ID=T2.ID;
これで一覧が表示されます。
新しくチェックを入れると、その部分だけがテーブル2 に追加されていきます。
追加された後、チェックを外してもそのレコードは残ります。
これらを元に、コンボボックスに以下を設定します。
SELECT ID, 名前, グループ
FROM テーブル1
WHERE (ID In (SELECT ID FROM テーブル2 WHERE チェック = True)) AND (グループ=666);
※ グループが数値型だった場合の例(グループが 666 でチェックがあるもの)
クエリの段階ではなく、フォーム上で良ければ、
テーブルの追加が不要な実現方法もあると思います。
また、各フィールドの編集可/不可等簡単に設定できると思います。
No.4
- 回答日時:
No1とNo3です。
No1の
テーブル1-1
は、
>テーブル1を別名で作成するか、あるいはテーブル1のIDを持つ
>テーブルを作成するかして、
のテーブル名です。少し説明が抜けていました。
No.3
- 回答日時:
No1です。
>(フィールドそのものを追加することができない)。
について説明を加えておきます。
たとえば、テーブルの既存のフィールドから得られる
データを基にした新しいフィールドの追加は可能です。
たとえば、フィールドに「単価」、「数量」とあれば、
クエリのフィールドに、
合計:単価*数量
とすれば合計のフィールドを表示することができます。
しかしながら、クエリはテーブルのデータを表示
する機能しかないので新たなデータを保持する
機能はないのです。これが、No1の
>(フィールドそのものを追加することができない)。
の意味です。
No.1
- 回答日時:
クエリにYes/No型のフィールドを追加することは
できません。(フィールドそのものを追加することができない)。
もし、質問全体のことをしようと思えば、テーブル1
を別名で作成するか、あるいはテーブル1のIDを持つ
テーブルを作成するかして、そのフィールドにYes/No型の
フィールドを追加して、
SELECT [テーブル1-1].ID, テーブル1.名前, テーブル1.グループ, [テーブル1-1].チェック
FROM テーブル1 INNER JOIN [テーブル1-1] ON テーブル1.ID = [テーブル1-1].ID
WHERE ((([テーブル1-1].チェック)=True));
のようなクエリを作成し、操作はテーブル1-1を操作し、
その結果を上記のクエリで表示する、という方法に
なります。
システム全体がわからないのでこのようなところですが、
システムによってはテーブルの作成や表示方法に
工夫ができるところがあるかもしれません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テーブルに主キーを作らないデ...
-
アクセスにエクセルのデータを...
-
accessで、「集計のオプション...
-
accessのレポートであとから他...
-
Access リレーションシップ ...
-
Accessで
-
Accessを使って日付を比較したい
-
アクセスを使用するのがいいの...
-
ファイル間で双方向のデータの...
-
アクセスのフォームに簡単入力...
-
Accessインポートについて
-
Access97のフォーム(リストボッ...
-
Access 2010 土日祝日を除いて...
-
Access 複数フィールドの一致
-
アクセス クエリー・フォーム...
-
ACCESSでクエリを作成したら「...
-
ACCESSのフォームからデータの...
-
ACCESS クエリで重複データを最...
-
「メソッドまたはデータメンバ...
-
access・カウント結果がゼロで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルに主キーを作らないデ...
-
アクセスにエクセルのデータを...
-
Accessを使って日付を比較したい
-
accessのレポートであとから他...
-
accessで、「集計のオプション...
-
Access 複数フィールドの一致
-
Accessの入力フォームから、テ...
-
Access2010 携帯番号にハイホン...
-
Accessフォームでデータ入力で...
-
Accessで検索を高速化
-
Access 2010 土日祝日を除いて...
-
アクセスの重複クエリ
-
Accessクエリのデータ表示件数...
-
Accessのクエリによる集計が出...
-
ACCESS Yes/No型の集計
-
MS-Accessのレコード内のフィー...
-
オートナンバー型を1から始める...
-
ACCESSのクエリの値を変換する...
-
アクセスのフォームを開くとき...
-
Access クエリの更新結果をテ...
おすすめ情報