前回の書き込みから約1年、随分久しぶりの書き込みとなってしまった。

生活に追われ、ここ1年近く作業しているプロジェクトでの不条理な仕打ちに
辟易していた為、ブログを書く気力も出ないまま日々を送っていたら
ずいぶんと経過していたようで...

今回のブログは、ちょっと専門的な内容なのだが、
当方的日常という事と、忘備録という事からブログに書いておく事にした。

当方も、日本在住の大多数の方々と同じく、この不景気に苦労しながら
耐える日々を送っている。

職業柄、コンピュータに関連する相談を受ける事も多く、
また、アルバイト的に色々なソフト開発を請け負ったりもする。

先日、とある知り合いから、Ecelで行っている顧客情報管理を、
Accessに移行したいという依頼を受けて納品をしたところ
不具合があるので診て欲しいと言われた。

その殆どは、不具合というよりは、実際に使ってみての修正依頼という
内容のものだったので、その場で対応したのだが、
1点だけ宿題にしてもらったものがある。

それは、

<現象>
Access2007のデータシートビューのフィルタ機能の選択で、
(空白)だけにしている場合と、(空白)+[データA]のように、
空白を含めた複数選択にしている場合とで、抽出件数が異なる。
(対象フィールドは、テキスト型)

という内容である。

実際に現場で確認した抽出結果は、
(空白)だけ:67件
[データA]だけ:1件
(空白)+[データA]:47件 ※[データA]1件+(空白)46件
となっている。
68件抽出されなければならない筈なのに、
明らかに、(空白)21件が抽出されていない不具合だ。

で、調査を行った結果、原因が判明した。

<原因>
Access2007のフィルタ機能の選択を行うと、where条件付きでの
データ抽出を行うようなのだが、このwhere条件が、
(空白)だけの時 = Is Null Or ""
(空白)+[データA]の時 = In( "データA" ) Or Is Null
となり、後者の場合、Or "" が含まれない為、抽出結果が異なってしまう。

どうやら、選択では、 Or は1つというようにソフトが組まれているようで
この現象になっているようである。

「アプリの不具合」という事で、対応しないという手もあるが、
それでは面白くないし、それ以前に納品先が困ってしまう。

で、あれこれ思案した結果、以下の対応を取った。

<対応策>
(1)該当フィールドに対して、""→Null 置換実行するクエリを作成。
(2)画面上に1つボタンを追加し、そのイベントを(1)のクエリ実行にする。
(3)データのインポートや、該当フィールドのデータ削除を行ったら、
このボタンをクリックしてもらう。

原因の説明をしてアプリの不具合である事を理解してもらい、
ボタンクリックで対処可能になっている事で納得して頂いた。

「結論」
どんなソフトにも不具合は付き物なので、不具合が出てしまう事自体は、
ある程度は、仕方のない事だと思う。また、対処の取れる不具合なら可愛いものです。

不具合が1件だけど、その対策が取れないソフトと、
不具合が100件あるけど、全て対策可能なソフトでは、後者の方がマシだと思う。

因みに、今時の若い衆は、このような内容も「バグ」と呼ぶようだが、
当方に言わせれば、こんなものは、「バグ」にもならない。