Microsoft Access 掲示板

フォーム上でのコンボボックスによる絞り込みが出来ない

17 コメント
views
4 フォロー

先日 経理仕訳の事で投稿した者です、その節は色々とありがとうございました。現段階は試しながら構造を検討中なのですが、どうにも分からない事が出てきました。整理しますと
・仕訳処理メインテーブル:①ID ②日付 ③No.等  
・仕訳処理サブテーブル:①明細ID ②ID ③借方科目 ④借方金額 ⑤貸方科目 ⑥貸方金額  その他
メインとサブはIDでリレーションして親子フォームにしています。借方と貸方の科目は共通で科目テーブルでコンボボックスで選択
科目は結構多いので5種の仕訳グループに分けられますので仕訳グループテーブルを作成して各科目にコンボボックスで設定し分類しました。
メインフォーム上に借方グループと貸方グループ選択用の2つのコンボボックスを配置してサブフォームの科目選択をしたのですが、何故か借方科目しか機能しません。貸方科目は絞り込みができません(全項目が表示)。サブフォームにはそれぞれ科目選択用のクエリを作成しそれを値集合ソースにしています。
そのクエリでは貸方も絞り込み出来ているのにフォーム上では機能しないのです。グループのコンボボックス更新後のサブフォームの対象にはRequeryもしているのですが。
●仕訳サブフォームのレコードソースのSQLは下記です。
SELECT T仕訳処理Sub.仕訳明細ID, T仕訳処理Sub.仕訳ID, T仕訳処理Sub.借方金額, T仕訳処理Sub.借方科目, T勘定科目.科目名 AS 借方科目名, T仕訳処理Sub.適用, T仕訳処理Sub.貸方科目, T勘定科目_1.科目名 AS 貸方科目名, T仕訳処理Sub.貸方金額, T仕訳処理Sub.取引先, T仕訳処理Sub.MEMO
FROM T勘定科目 AS T勘定科目_1 INNER JOIN (T科目グループ INNER JOIN (T勘定科目 INNER JOIN T仕訳処理Sub ON T勘定科目.科目ID = T仕訳処理Sub.借方科目) ON T科目グループ.グループID = T勘定科目.科目グループID) ON T勘定科目_1.科目ID = T仕訳処理Sub.貸方科目;
●仕訳サブの借方項目選択のSQLは下記です。
SELECT T勘定科目.科目ID, T勘定科目.科目名, T勘定科目.科目グループID, T勘定科目.ふりがな
FROM T勘定科目
WHERE (((T勘定科目.科目グループID)=[Forms]![F振替入力Main]![コンボ借方の仕訳グループ選択])) OR ((([Forms]![F振替入力Main]![コンボ借方の仕訳グループ選択]) Is Null))
ORDER BY T勘定科目.ふりがな;
●仕訳サブの貸方項目選択のSQLは下記です。
SELECT T勘定科目.科目ID, T勘定科目.科目名, T勘定科目.科目グループID, T勘定科目.ふりがな
FROM T勘定科目
WHERE (((T勘定科目.科目グループID)=[Forms]![F振替入力Main]![コンボ貸方の仕訳グループ選択])) OR ((([Forms]![F振替入力Main]![コンボ貸方の仕訳グループ選択]) Is Null))
ORDER BY T勘定科目.ふりがな;

借方・貸方項目が共通の科目テーブルからの参照だからでしょうか? 同じものを借方・貸方に分ける(同じ内容のテーブルが2つ)形にした方がいいのでしょうか?

すみません、アドバイスお願いします。

ビギナー
作成: 2023/07/14 (金) 10:24:50
通報 ...
1
hiroton 2023/07/14 (金) 10:41:36 5534d@f966d

そのクエリでは貸方も絞り込み出来ているのにフォーム上では機能しないのです。グループのコンボボックス更新後のサブフォームの対象にはRequeryもしているのですが。

真っ先に疑うのはコードの記述ミスですね
どのようなコードを記述してるんですか?

ついでに、コードエディタの方で「[デバッグ]→[(データベース名)のコンパイル]」でエラーが出てたりしませんか?

2
ビギナー 2023/07/18 (火) 10:11:52 ddfe5@5dc2d

hirotonさん ご意見ありがとうございます。
コードはメインフォームに配置してます仕訳グループコンボの更新後に [F振替入力Sub].Form![貸方科目].Requery です。
サブフォームに対する借方項目はコード中央が[借方科目]としてましてそれで機能しています。
サブフォームの貸方項目コンボの値集合ソースにクエリとしており、それを実行では機能しているのに不思議なのです・・・
何がいけないのかが分からなくて。コンパイルもしてみましたが引っかかりませんでした。

3
名前なし 2023/07/18 (火) 11:23:45 da7ce@f966d

とりあえず確認手法として、コンボボックスにフォーカスを当て[F9]キーを押すと再計算されます(手動)
これを使うと絞り込みはされますか?

また、コードの方で[F振替入力Sub].Form![貸方科目].Requeryの行にブレークポイントを設定するときちんとここで止まりますか?

4
ビギナー 2023/07/18 (火) 12:41:23 ddfe5@5dc2d

ご意見ありがとうございます。
F9押すと画面は一瞬ちらつきますが絞り込み機能しません(全表示になる)。Requeryコード行にブレークポイントを設定すると更新後VBA画面が表示され停止しています。

5
hiroton 2023/07/18 (火) 13:09:02 da7ce@f966d

手動でやってダメならVBA(コード)は関係ないですね
直接クエリを開いた場合は絞り込みされているということであれば、あとはもう「ACCESS謎のバグ」ですかね

・[データベースツール]→[データベースの最適化/修復]を試す
・新規にデータベースを作成し、[外部データ]→[ACCESSデータベースのインポート]から既存ファイルのオブジェクトを全てインポートする
・新規に0から作り直す

10
hiroton 2023/07/18 (火) 16:01:31 da7ce@f966d >> 5

一応補足しておくと、hirotonがここでいう「謎のバグ」とはいわゆる「mdbが壊れちゃった」状態のことです
無理な制御を試してエラーで強制停止したとか、強制終了でACCESSを終了させたとか、内部的に不整合が起きているであろう状態で保存されてしまうと訳の分からない動作をする(してほしい動作が行われない)ということが起こる場合があります。いつ不整合が起きたのかもわからなければ、いつ、どこで不具合が発生するかもわかりません

「新規でデータベースを作成して、全く同じフォーム(モジュール)を作成したら問題なく動いた」という、完全に原因不明の不具合となります

6
ビギナー 2023/07/18 (火) 14:13:17 ddfe5@5dc2d

hirotonさん ありがとうございます。
データベースの最適化/修復では変化ありせんでした。その他の方法はこれから試して様子見たいと思ってます。
サブフォームだけ開いてみると[F振替入力Sub].Form!の借方科目、貸方科目のパラメータクエリの形になりグループ項目を入力すると絞り込みは出来てました(最初に要求される借方グループをNullで貸方グループだけ入力しても)。メインフォームで開くときだけ機能しない様です。
これはやはり謎のバグなのでしょうか?

7
りんご 2023/07/18 (火) 14:42:38 935bc@0e907

 まず、次の情報が確認できるスクショを提示して下さい。『メインフォームのコンボボックスのプロパティシートのその他タブの名前: コンボ貸方の仕訳グループ選択』。
 次に、仕訳サブの貸方項目選択のSQLが全文確認出来るスクショを提示して下さい。難しければ、サブフォームだけ開いた時に、貸方科目のパワメータークエリが要求されているダイアログボックスが確認出来るスクショを提示して下さい。
 必要な情報が提示されずに、何度も確認したけど問題ありませんと繰り返していても意味がありません。

8
ビギナー 2023/07/18 (火) 15:52:32 ddfe5@5dc2d

色々情報不足ですみません。メイン/サブフォームとサブフォーム開いた状態の画面コピー添付します。
サブフォームの方はパラメータを入れると表示されます。画像1

9
りんご 2023/07/18 (火) 16:00:55 935bc@0e907 >> 8

 パラメータの入力ダイアログボックスは、借方じゃなくてもう1つの貸方のほう。
 そして、メイン/サブフォームとサブフォーム開いた状態の画面コピーではなくて、ちゃんとプロパティシート『名前: コンボ貸方の仕訳グループ選択』が確認できる画面コピーでない限り、全く無意味です。

11
ビギナー 2023/07/18 (火) 16:37:05 ddfe5@5dc2d

再度添付します。画像1
貸方パラメータの方はスクショしても何故かこれしかコピー出来ませんでした。各SQLは一番最初に記述した通りです。

12
りんご 2023/07/18 (火) 17:15:02 935bc@0e907 >> 11

どちらかに統一すると、何か変わりますか?
コンボ貸方の科目グループ選択
コンボ貸方の仕訳グループ選択

13
ビギナー 2023/07/19 (水) 12:48:17 ddfe5@5dc2d

りんごさん その後試した事はサブファームでのコンボ借方の値集合ソースからメインフォームでの条件を削除してみて(貸方の絞り込みだけに設定)確認したのですが、やはり貸方のグループ絞り込みは出来ませんでした。それで科目グループを借方用と貸方用を用意して各科目に借方グループ、貸方グループ2段階でしてみましたがこれも駄目でした。最後に科目テーブルを丸々コピーし借方用、貸方用に分けて試すとグループによる絞り込みは上手くいきました。理由は分からないのですが1つのレコードに同じ項目からの参照は駄目みたいです。科目テーブルを同じ内容で2つ作成するしかなさそうです。

14
りんご 2023/07/19 (水) 13:24:32 935bc@0e907 >> 13

もう一度聞きますが、『科目』コンボボックスを作って、(違う名称の)『仕訳』コンボボックスをSQLで参照しているのであれば、『仕訳』コンボボックスに名称変更して、『仕訳』コンボボックスをSQL参照するのは、どうですか?

15
ビギナー 2023/07/19 (水) 13:55:36 ddfe5@5dc2d

りんごさん 上手くいきました! ありがとうございます。 科目テーブルを基に名前変えてクエリにしました。そしてそのクエリを基に貸方項目コンボ用のクエリの値集合ソースとすると機能しました。自分では理解できないのですが何がいけなかったのでしょうか?

16
りんご 2023/07/19 (水) 15:30:44 935bc@0e907 >> 15

 あれこれ作業しているうちに、設定値が変わってしまった可能性があるのかしら。ちょっと、よくわからないです。
 それはさておき、途中でテーブルが増えたりアレンジしたりするようになったら、大概駄目になるので注意が必要です。
 

17
ビギナー 2023/07/19 (水) 16:14:58 ddfe5@5dc2d

りんごさん ありがとうございます。データの基が同じ名前のものを参照では上手くいかない事があるかもしれませんね。
最後の”名称変更して”のアドバイスで上手くいきました。感謝です!