○第158回目 壁カレのデータがダブってしまった
□壁カレでなんですか?
これから入っていきましょう。
壁カレのヘルプから
壁カレ3 使用説明
このソフトウエアは壁掛けカレンダーをイメージしたフリーのカレンダースケジューラです。
最大12ヶ月のカレンダーを表示し、様々な情報を、カレンダー内に表示します。
単なるカレンダーとしても、LANで予定を参照することも出来ます。
つまり、予定、記録などを書き込めるカレンダーソフトです。
□何が問題だったのですか?
過去のデータ(6年前)を見たくなったので、現在の壁カレにデータを読み込みました。その分だけであれば問題はなかったのですが、元に戻すのがめんどくさかったので、現在のものに付加するという操作をしました。
すると、当然のことながら、ある期間のデータがダブってしまいました。
その当時の月間レポートを打ち出すと、同じ予定、記録がダブっていたということです。
(このときの目的は、6ヶ月間ほどの月間レポートをつくり、その中からある業務に関連するものだけを抜き出そうとすることでした。)
壁カレの元データから削除する必要があるので、元データを出力してそれを削除する必要が出てきました。
□どのようにして削除したのですか?
1件1件手作業で削除していったのですが、さすがにばかばかしくなってしまいました。
□これは、月間レポートを出した後のことになると思いますが、関係ない業務のものも手作業で削除したのですか?
これある程度、自動化しました。置換え機能で、完全に関係ない文字列を指定して、その文字列を含んでいる行を削除したのでした。これはワイルドカードでやれば簡単ですね。(*○○××*をヌルに置き換えるようにすれば、その行は改行のみになってしまいますね)
□本題のものはどうしたのですか?
QXマクロで専用のマクロを作りました。今までのものから使えそうなマクロをベースにして、30分ほどでできました。
処理の流れのです。
0.処理したい先頭にカーソルを置いて実行
1.1行を取得し、頭の28文字分の文字列をもとに、以下の文の中で同一文字列があるかどうかを検索する。
2.同一文字列があった行については、行そのものを削除する。文末まで繰り返す。
3.先頭に戻り、先頭の次の行から1-2を繰り返す。
4.文末まで処理を繰り返す。
□マクロ作成はスムーズに行ったのですか?
スムーズにいったのですが、当然ながらバグがありました。
途中に、カラ行に近い行(先頭に○だけがある行など)があって、そこで取得した文字列をもつ行を片っ端から削除してしまいました。(記録は、先頭に○を付して書いていくという形式になっているので、以下の記録がほとんど全部削除されてしまいました)
これの解明には、さらに20分ほどかかりました。
□どういう対応したのですか?
取得した文字列が5文字以下のものは、削除の元となる文字列の対象外としました。
昔のデータを追加した壁カレのデータは、7000行以上もあったので、途中でこんなものもあったのでしょうね。頭が働きませんでした。
□マクロの正味の行数としてはどのくらいになったのですか?
コメント行を含めて40行あたりです。
□今回のマクロのニーズ度はどうかは知りませんが、こんなに簡単にできるといいですね。
そのとおりだと思います。今回は、マクロに切り替えるまでに時間があったので、メリットとしてはどうかとは思いますが、まずマクロのほうが早いのでは、と思うことは必要ですな。

0 件のコメント:
コメントを投稿