CSVデータ検索CGI(CGI KON)~Webブラウザで参照専用に重宝するCGIをカスタマイズして活用する

プログラミング PC
プログラミング

商品JANコードの管理

JANレコードの整理をして管理をしていますが、最初はExcel、次にAccessへと移行せざるを得ませんでした。レコード数が膨大になってきて、Excelでは取り扱えなくなった為です。(Excel 2003)

Accessはレコード数が増えてもきちんと動作するので便利なのですが、マスターデータを他のスタッフに直接編集されると怖いので、参照専用で何か良い方法は無いものかな?と考えてみました。

CSVデータ参照専用のCGIを使わせて貰う

CSVデータとしてエクスポートして、それをWebアプリ(CGI)で検索出来ればいいんじゃないか?と考えた次第です。

【フリー】ファイル簡易検索(CSV用)

これがバッチリでした。Perl版を使わせて貰うことにしたのですが、PHP版もあるので自分の得意な言語版を使うと便利ですね。私は別にPerlが得意という訳ではなく、苦手なのでPerlでもPHPでも違いが無いので一般的なPerl版にした次第です(苦笑

設置は非常に簡単で、データCSVファイル、CGIプログラムと、Perlライブラリをサーバーにアップロードしてパーミッションを適切に設定するだけです。簡単に文字列検索出来ます。andで区切ると複数検索も出来ます。

ちょっと不便に出くわしたのでカスタマイズ

ところが一つ不便なことに遭遇しました。

使ってみるとアルファベットの大文字と小文字を別物として扱う仕様だったのですね。商品の品番を検索することが多いから大文字でも小文字でもどっちもマッチさせて欲しいんです。いちいちSHIFTキーを押すのが面倒というのもあります。

Perlスクリプト(CGI)というところで、おそらく正規表現で処理していると判断しました。ハッキリ言って私はPerl分かりません。でも正規表現の場所くらいは見分けられます。少し調べてみるとそれらしいところが見つかりました。

sub Search_Pattern
{
my($record,@pattern) = @_;
foreach (@pattern) {
return 0 if($record !~ /$_/);
}
return 1;
}Code language: PHP (php)

おそらくここだと目星を付けました。ハッキリいって正確な構文として意味は理解していませんが、

($record !~ /$_/)Code language: PHP (php)

という部分が正規表現のパターンマッチで比較しているっぽいです。

sub Search_Pattern
{
my($record,@pattern) = @_;
foreach (@pattern) {
return 0 if($record !~ /(?i)$_/);
}
return 1;
}Code language: PHP (php)

ハッキリ言ってコレで良いのか不明ですが、(?i)を付けて大文字小文字の区別をしなくしてみました。

結果オーライ!

アルファベットの小文字でも大文字でも検索出来るようになりました。これで商品コードを入力する際にいちいちSHIFTキーを押さなくてもマッチしてくれる様になって快適です。

Accessで管理しているJANコードで管理された商品データを、何万レコードでもCSVに吐き出してやれば簡単にWebブラウザで検索できます。ちなみにCSVファイルは文字コードEUCにしなくてはならないみたいですので、そこだけは取り扱い時の注意点になります。こんな便利なCGIを公開して下さってありがとうございます。

コメント

タイトルとURLをコピーしました