accessについての質問です テーブルに100以上のフィールドがあります 特定のフィールドについて未入力のレコードを探すのはクエリで簡単に分かりますが 一つのレコードについて(100以上のフィールドの中に)いくつ未入

accessについての質問です テーブルに100以上のフィールドがあります 特定のフィールドについて未入力のレコードを探すのはクエリで簡単に分かりますが 一つのレコードについて(100以上のフィールドの中に)いくつ未入 力のフィールドがあるか、を知りたいです。またそれをフォームの中でテキストボックスに表示させたいです どうかご教示ください よろしくお願いします

Microsoft Access27閲覧

ベストアンサー

0

単純にクエリのフィールドに -IsNull([フィールド1]-IsNull([フィールド2]・・・-IsNull([フィールドn-1]-IsNull([フィールドn] とかしてみたらいいのではないでしょうか。 ただしフィールドは1024文字までしか定義できないので、それに収まるようにする。 ↓こんな感じで小分けしてしまう方法。 集計1 : -IsNull([フィールド1]-・・・-IsNull([フィールド25] 集計2 : -IsNull([フィールド26]-・・・-IsNull([フィールド50] 集計3 : -IsNull([フィールド51]-・・・-IsNull([フィールド75] 集計x : -IsNull([フィールドa]-・・・-IsNull([フィールドz] 未入力 : 集計1 + 集計2 + ・・・ + 集計x

その他の回答(1件)

0

単票形式のフォームで表示している1レコードについての未入力フィールドの個数で良ければ、フォームの「開く時」「レコード移動時」「更新後処理」のイベントに同じように下記のコードを記述すると希望に近い表示をします。 但し、コントールがTextBoxの1種類しか見ていないので、他の種類のコントロールも配置しているなら TypeName(c)の行を変える必要があります。 また、フォーム上に未入力数が見えたとしても、どのコントロールかは探さないといけないので、使う人のことを考えると、未入力数を表示するよりも条件付き書式をすべてのコントールに設定して、未入力なら背景色を変えて、探しやすくした方が良いかもしれません。(ただし、これは1つずつ設定する必要があり非常に面倒ですが) Dim c As Control Dim n As Long n = 0 For Each c In Me.Controls If TypeName(c) = "TextBox" Then If IsNull(c) Then n = n + 1 End If End If Next Me![未入力項目数] = n

画像