データベースとの連携を考える時、Excelでは条件入力をするフォームと結果を表示するシートの2パターンの表示形式がある。

通常の言語だとフォームのみであろう。あってもフォーム内のグリッドである。Accessではグリッド形式のものも表示可能だが、あれはちょっと特殊な例だろう。


横道に逸れたが、つまりはフォーム用データクラスとシート用データクラス、という、2種類のものが必要になる、と考えている。

なお、Excel2000からはモードレスフォームが使えるようにはなっている。が、VBAに於いてはモードレスフォームはデバッグしにくいうえ、コーディングに工夫が要るので、一般的に扱いやすいモーダルフォームで設計するつもりである。


しかしながら、モーダルフォームはフォームをUnloadやHideしないとモーダルフォームから抜けない、という特徴がある。よく言われるMVCに分けることに関してはフォームが自立しすぎている、つまりコントロールがフォーム主導になってしまっているという問題がある。そこをどうリカバーしていくか、というあたりがノウハウになるのだろう。


その対応策が「データクラスにデータチェック機能やデータ更新機能などを持たせる」という案である。






※書き直し /八月末削除予定 /クラスモジュールor考慮点(設計・技術)



以前にも「VBAは中途半端なオブジェクト指向」である旨を書いた。これはVB6.0までも同じことで、VB.netでも「標準モジュール」があること自体「中途半端」感は抜けないが、まあ、それはよしとしよう。


その中途半端なオブジェクト指向環境であるVBAでも、オブジェクト指向のメリットを享受できるのだから、使わない手はないだろう。そこでデータを扱うためのクラス(といっても、そのあたりはすべて開発側が勝手に作成するのであって、言語制約やルールでそういうものが存在するのではない、ということは知っておいて欲しい)について数回に渡って書き連ねていこうと思う。


数回に渡るのは分量の問題ではない。実は、先例があるのかどうか分からないけれども、とにかく考え付いたものが使えそうなので、ここに書きつつも実証実験を重ねてよしあしの評価をする、というやり方をするためである。


ExcelVBAでかなり本格的なものを作っているケースもそう無いだろうし、せっかくだからと凝ってみるという馬鹿馬鹿しいことを考える人もそう居ないだろうし、と考えると、結構少ないケースなのかもしれないので失敗に終わろうが敢えてこのような形を取ろうと思います。誰も骨は拾わないだろうけれど、何かの参考になれば・・。


★代替記事作成中

日本版SOX法だの内部統制だのが新聞雑誌の紙面を飾る機会が増えてきた。

ある大手DBベンダーの人の書いた「ID管理が重要」という記事を読んだが、ふむふむなるほど、と思った。と同時に、これはシステム部を持たない会社や中小零細企業には適用が難しいのでは?とも思った。


ID管理を全社で統合できる、というのは理想的な話だ。しかし、これは情報システム部が存在し、しっかり機能しているところでないとなかなか難しいのではないだろうか?このところ仕事で利用しているSQL ServerもWindowsのユーザー管理で制御できるようなモードがある(というよりそのモードは外せない)。Windows向けのみだからできる芸当であるが、これもユーザー管理が迅速かつ正確に行われないと難しいだろう。


さて、現在計画中のシステムであるが、利用者が限られるうえ、人事異動も多いらしい。これのユーザー管理を顧客内のシステム部に依頼しようとしたら断られたそうだ。そうなるとユーザーの中に管理者を置くことになる。しかしコンピュータに関しては素人といってよい。

本業は別のことなので仕方ない部分である。また、外部ベンダーが請けても、それこそ内部統制の根幹に関わる部分を外注するというのはどうなのだろうか、という話になりはしないだろうか。


この場合は、ユーザーの成熟度を考慮し、DBMSのIDではなく業務で使うユーザー管理マスターなどを作って管理させる方が望ましいのではないか、と考えている。つまり、DBMSのIDはユーザーから隠蔽し、共通のものを使わせるのだ。

内部統制に向けてのポリシー決めを提案しようとも考えたが、費用と期間、ステークホルダーへの根回しなどを考えると私が居なくなる3月末までに方向性が決まらないのは目に見えているので自己却下した。


ここで気になるのが、利用者のログなどである。DBMSでは監査するときの対象をDBMSのユーザーIDに対して行うのが常ではないだろうか。そうすると、同じユーザーIDの奴ばかり・・で監査証跡としての価値は低いだろう。そこで自前でユーザー管理マスターのユーザーを使ったものを準備しないといけなさそうである。とりあえずは誰がどのPCから何をしたか、その処理時間は、くらいを記録しておけばチューニングの元ネタにもなるだろう。


中小零細でのコンピュータ導入およびID管理が簡単になれば、内部統制も行いやすくなるのではないかなと思うが、セキュリティと利便性の相反するところである。いい着地点がないものかと、いろいろ知恵は絞っているがなかなかいいものが出ないでいる。



運用面のツール類にはあまり明るくないので「そんなことはない」という意見がありましたらお願いします。