Microsoft Access 掲示板

非連結チェックボックスで複数フィールドが一致すればチェックしたい

13 コメント
views
4 フォロー

非連結チェックボックスで二つのフィールドを一致したものだけチェックすることはできるのでしょうか?
会社のAccessでテーブルにYesNo型のチェックボックスを加えることができず、非連結チェックボックスで選択しよう
としています。
非連結チェックボックスでやる目的はある製品が搬入されたら搬入完 検査が終われば検査完というものをするために
現在は一つずつ進捗があるたびに変更していたのですが複数製品をまとめて変更したいというものです。

参考にしたURLでは主キーとなるものを検索し、あればチェックするものでしたが私の会社では主キーという設定がなく、
データ初期IDとデータKEYの二つを組み合わせたものが主キーのような働きになっています。

データ
初期ID  データKEY
1      1
1      2
2      1
2      2
3      1
3      2

上記のような設定になっており、チェックボックスのコントロールで
=InStr([txtChkList] & ",","," & [データ初期ID] & ",") AND InStr([txtChkList] & ",","," & [データKEY] & ",")
とやってみましたが、
データ初期IDが 2 データKEYが 2をチェックしてみたら 2-1と2-3も一緒にチェックされてしまいました。
でも、毎回されるのではなくされないときもあり、ばらつきがあるようです。

テーブルにYesNo型を加えたらいいのでしょうが、他部署が作っておりテーブル設計に変更を加えることができず、です。
何かいい方法ご存じでしたらご教示いただけると助かります。

参考URL↓
https://hatenachips.blog.fc2.com/blog-entry-28.html

チョコラブ
作成: 2021/09/05 (日) 16:18:50
通報 ...
1
りんご 2021/09/05 (日) 18:43:38 c564b@0e907

一つずつ変更していたが、まとめて変更したいというものです。
 要変更レコードを複数絞り込み、該当フィールドを更新したいという事はないでしょうか?
主キーという設定がなく、主キーのような働きになっています。
 担当部署に直ちに確認しましょう。
 主キーや複合主キーは設定しない、それっぽいものが代わり・・・いやいや、、、まじですか?
他部署が作っておりテーブル設計に変更を加えることができず
 相談しましょう。業務ルールで1つずつ変更になっているなら、業務ルール変更の相談が先では?

2
チョコラブ 2021/09/05 (日) 19:32:21 a1f3a@735b7 >> 1

コメントありがとうございます。そうです。
”レコードを複数選択し、該当フィールドをまとめて更新したい”です。
1レコードずつ更新する仕組みで作られているのですが、利用者からめんどくさいからまとめて更新ができないかという相談があって改修しているのですが、1レコードずつ更新する仕組みも残したまままとめて更新できるように
別に非連結チェックボックスで選択して更新できるような仕組みを作っていたんです。

チェックする仕組みは参考URLで、できたのですが、データ初期IDが同じものだと一緒にチェックされてしまうのをなんとかすれば他はうまくいきそうなんです。

3
りんご 2021/09/06 (月) 05:13:13 c564b@0e907

 単独主キーですがこんなのもあるみたいですよ。複合主キーに応用する事ができれば。
複数選択リストボックスで選択したレコードの印刷 - hatena chips
画像

 ちなみに、これはどうですか?
 コマンドボタン『ほにゃらら』を押すと、区分が未定のときは検査完、検査完のときは未定になるように。

初期IDデータKEY属性区分
11あああ未定 コマンドボタン『ほにゃらら』
12いいい検査完コマンドボタン『ほにゃらら』
21ううう未定コマンドボタン『ほにゃらら』
22えええ検査完コマンドボタン『ほにゃらら』
31おおお未定コマンドボタン『ほにゃらら』
32かかか検査完コマンドボタン『ほにゃらら』
 オプショングループ『未定🔲検査完』(『🔲未定検査完』)の場合、クエリの中に演算フィールド『ほにゃらら』(区分が未定のときは1、検査完のときは2)を追加。オプショングループのコントロールソースに演算フィールド『ほにゃらら』を設定。オプションボタン『未定』をフォーカスしたら、区分が未定、『検査完』をフォーカスしたら、区分が検査完となるようにVBA。
※レコード編集中のときは、忘れずに確定させる。
6
チョコラブ 2021/09/06 (月) 12:35:40 f1313@ec441 >> 3

アドバイスありがとうございます
今回、搬入完と検査完の二つを例にしてあげましたが、他にももっとあります。一部搬入完や一部検査完、不適合など全部で6つぐらいあります。それでも同じようにできますか?

進捗報告みたいなプラットフォームなので複雑なんでしょうか。

4
りんご 2021/09/06 (月) 05:27:23 c564b@0e907

ところで、これはお遊びですが
テーブル1『実テーブル』(実データ)🔑初期ID,🔑データKEY,属性,区分
テーブル2『仮テーブル』(基本空っぽ)🔑初期ID,🔑データKEY,属性,区分
 クエリ1『実クエリ』(テーブル1の選択クエリ)
 クエリ2『仮クエリ』(テーブル2の選択クエリ)
追加クエリ『実リストから仮テーブルへ』(テーブル1の追加クエリ)※実リストはそのまま。
 抽出条件:テキストボックス1、テキストボックス2
削除クエリ『仮リストから削除』(テーブル2の削除クエリ)※実リストはそのまま。
 抽出条件:テキストボックス3、テキストボックス4
更新クエリ『実テーブルと仮テーブルを内部結合』(テーブル1の更新クエリ)
 抽出条件:なし,レコードの更新:テキストボックス5

テキストボックス1『初期ID、実リストから追加クエリへ』  (非連結):
テキストボックス2『データKEY、実リストから追加クエリへ』(非連結):
テキストボックス3『初期ID、仮リストから削除クエリへ』  (非連結):
テキストボックス4『データKEY、仮リストから削除クエリへ』(非連結):

コマンドボタン1『更新ボタン』テキストボックス5『新しい更新値』(非連結):
リストボックス1『実リスト』(非連結)     リストボックス2『仮リスト』(非連結)
値集合ソース:クエリ1                                 値集合ソース:クエリ2

初期IDデータKEY属性区分初期IDデータKEY属性 区分
11あああ未定 
12いいい未定
21ううう未定
22えええ未定
31おおお未定
32かかか未定

 例えば、行を選んで半角スペースキーを押すと、選択行の初期IDとデータKEYがテキストボックスに代入、追加クエリが実行されるように。実データが絞り込まれて、仮テーブルに追加されるので、仮リストの再クエリ。

初期IDデータKEY属性区分初期IDデータKEY属性 区分
11あああ未定11あああ未定
12いいい未定21ううう 未定
21ううう未定31おおお 未定
22えええ未定
31おおお未定
32かかか未定

 更新クエリを実行すると、新しい区分値に更新。但し初期IDとデータKEYの組み合わせが同じものに限る。

7
チョコラブ 2021/09/06 (月) 12:36:51 f1313@ec441 >> 4

すみません。この方法は私には難しそうです....。

5
hiroton 2021/09/06 (月) 09:25:14 6f66f@f966d

最悪Excelのデータをリンクテーブルで読み込んでいるとかだと主キーがないこともあるんですかね


レコードソースをクエリにして主キーのようなもの: [初期ID] & "_" & [データKEY]フィールドを作って単一のフィールドでチェックできるようにしたらどうでしょう

8
チョコラブ 2021/09/06 (月) 12:37:50 f1313@ec441 >> 5

アドバイスありがとうございます。
試してみます。

11
チョコラブ 2021/09/06 (月) 14:27:30 1b30c@93fe9 >> 5

クエリに式を作る方法で一つのレコードだけにチェックすることができました。
その発想はなかったのでありがとうございました。

9
りんご 2021/09/06 (月) 13:12:59 c564b@0e907

>> 6

同じようにできますか?

出来たとしてもごちゃごちゃなりそうなのでイマイチですね。

10
チョコラブ 2021/09/06 (月) 14:26:00 1b30c@93fe9 >> 9

アドバイスありがとうございます。

12
りんご 2021/09/06 (月) 14:54:12 c564b@0e907

解決、おめでとうございます。
>> 7

難しそうです。

 リストボックスは、難しいけれど、便利なので、練習しておくといいですよ。
 連結列、コントロールソースの有無、列数、列幅、コード。
 抽出条件やコードやキークリック時イベントは、初めてのときは、難しいかもしれません。
[Forms]![フォームの名前]![テキストボックスの名前]
Me.リストボックス1.Column(1)
DoCmd.OpenQueryからのMe.リストボックス1.Requery
Msgbox KeyCodeからのKeyCode 32(スペースキー)
 知ってるよ、と問題なければ、やってることは、基本作業の積み上げです。
 元のテーブルを作ったら何も考えずにクエリ化、リストボックスに表示。
 絞り込めたら便利なので、テキストボックスを置いて🔑抽出条件
 選択クエリを作って絞り込み追加クエリに変更、仮テーブルに追加して別のリストボックスに表示。
 選択クエリを作って元テーブルと仮テーブルに線を引いて、更新クエリに変更、更新値に従って更新

最後に、単独主キーや複合主キーの設定は抜けていないと確認とれましたか?単独主キー、複合主キーがなければ、破綻しているので全部水の泡です。

13
チョコラブ 2021/09/07 (火) 15:24:33 f1313@cd996 >> 12

お返事が遅くなってすみません。
ありがとうございます。

使えそうな時があったらぜひチャレンジしてみたいと思います。