非連結チェックボックスで二つのフィールドを一致したものだけチェックすることはできるのでしょうか?
会社の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型を加えたらいいのでしょうが、他部署が作っておりテーブル設計に変更を加えることができず、です。
何かいい方法ご存じでしたらご教示いただけると助かります。
コメントありがとうございます。そうです。
”レコードを複数選択し、該当フィールドをまとめて更新したい”です。
1レコードずつ更新する仕組みで作られているのですが、利用者からめんどくさいからまとめて更新ができないかという相談があって改修しているのですが、1レコードずつ更新する仕組みも残したまままとめて更新できるように
別に非連結チェックボックスで選択して更新できるような仕組みを作っていたんです。
チェックする仕組みは参考URLで、できたのですが、データ初期IDが同じものだと一緒にチェックされてしまうのをなんとかすれば他はうまくいきそうなんです。
単独主キーですがこんなのもあるみたいですよ。複合主キーに応用する事ができれば。
複数選択リストボックスで選択したレコードの印刷 - hatena chips
ちなみに、これはどうですか?
コマンドボタン『ほにゃらら』を押すと、区分が未定のときは検査完、検査完のときは未定になるように。
アドバイスありがとうございます
今回、搬入完と検査完の二つを例にしてあげましたが、他にももっとあります。一部搬入完や一部検査完、不適合など全部で6つぐらいあります。それでも同じようにできますか?
進捗報告みたいなプラットフォームなので複雑なんでしょうか。
ところで、これはお遊びですが
テーブル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の組み合わせが同じものに限る。
すみません。この方法は私には難しそうです....。
最悪Excelのデータをリンクテーブルで読み込んでいるとかだと主キーがないこともあるんですかね
レコードソースをクエリにして
主キーのようなもの: [初期ID] & "_" & [データKEY]
フィールドを作って単一のフィールドでチェックできるようにしたらどうでしょうアドバイスありがとうございます。
試してみます。
クエリに式を作る方法で一つのレコードだけにチェックすることができました。
その発想はなかったのでありがとうございました。
>> 6
出来たとしてもごちゃごちゃなりそうなのでイマイチですね。
アドバイスありがとうございます。
解決、おめでとうございます。
>> 7
リストボックスは、難しいけれど、便利なので、練習しておくといいですよ。
連結列、コントロールソースの有無、列数、列幅、コード。
抽出条件やコードやキークリック時イベントは、初めてのときは、難しいかもしれません。
[Forms]![フォームの名前]![テキストボックスの名前]
Me.リストボックス1.Column(1)
DoCmd.OpenQueryからのMe.リストボックス1.Requery
Msgbox KeyCodeからのKeyCode 32(スペースキー)
知ってるよ、と問題なければ、やってることは、基本作業の積み上げです。
元のテーブルを作ったら何も考えずにクエリ化、リストボックスに表示。
絞り込めたら便利なので、テキストボックスを置いて🔑抽出条件
選択クエリを作って絞り込み追加クエリに変更、仮テーブルに追加して別のリストボックスに表示。
選択クエリを作って元テーブルと仮テーブルに線を引いて、更新クエリに変更、更新値に従って更新
最後に、単独主キーや複合主キーの設定は抜けていないと確認とれましたか?単独主キー、複合主キーがなければ、破綻しているので全部水の泡です。
お返事が遅くなってすみません。
ありがとうございます。
使えそうな時があったらぜひチャレンジしてみたいと思います。