読者です 読者をやめる 読者になる 読者になる

★ The Tsuchinoko News 2 (つちのこ通信2) ★

重要な話から、どうでもいいことまで。ほとんど役に立たないことを書き連ねています。

【PC】VB6 から VB2010 へ移行(その2) DAO

DAO は古い。最後の DAO。
これからは ADO いや OLEDB いろいろと「テーゼ」は聞かされるのだが
データベースに ACCESS MDB を使う場合には、いろいろと試してみたけれども、やはり DAO がベストだ。

DAO は Data Access Object と、汎用性のあるデータベースへのアクセスコントロールのようなふりをしつつ、明らかに ACCESS MDB すなわち JET 用のもので、使いやすさも速度的なパフォーマンスも圧倒的に優位だ。

ところがMicroSoft社は、この DAO を切り捨てるという・・・
態度を繰り返していたため、なかなか .NET になってまで DAO を採用するのはどうかと悩み仕切りであった。

とくに Windows 7 の 64Bit ではどうなるのか様子を拝見していたが、結局 DAO は WOW の中でしっかり生き残り、なくなるぞなくなるぞと脅しをかけつつ ACCESS 2010 なんかも発売され まったく消えていきそうな雰囲気はない。

そこで、将来的に SQL Server や 他のデータベースに移行する予定もなく、LAN環境でも問題がないような場合。つまり ACCESS MDB で行くのだ、というものの場合は DAO を使うことにした。

f:id:tsuchinoko118:20140921054400p:plain
ワークライフバランス診断 BSC

さんざん、なくなる、消える、最後の、と言われ
最適化は JRO を使えばできる、と
DAO では CompactDataBase ができないかのようなネット上の情報が多いが、DAOに関していえば VB6 も VB2010 もなく、ほとんど変わっていないことがよくわかった。


ひょっとすると .NET 初期〜VB2005 あたりまでに DAO に何かあったのかも知れないが 筆者が使っている VB6 と VB2010 では、宣言方法や使い方に、ほんのちょっぴり違いはあるのもの、ほぼ100% DAO をしてくれている。どういうわけか処理速度も速いような??

最適化では DBEngine というものが VB6 では使われていた。
VB2010 では、これは宣言すれば使えるようになる。


Public Db_Engine As New DAO.DBEngine

これでもう DB_Engine は VB6のDBEngine だ。
(参照設定で DAO3.6 を入れておくこと)

最適化は

Db_Engine.Compactdatabase( A.MDB, B.MDB )

でそのまま動く。

DataBaseや Recordset も

Public Db_Um As DAO.Database
Public DB_TksRs As DAO.Recordset

と DAO.がついてるだけで 宣言方法は同じ。

RecordSetにいたっては、

Dt2("社員名")

というような暗黙の省略した書き方ではエラーが出てしまうが

Dt2.Fields("社員名").Value

としてしまえば、扱い方は同じ。

Edit
Update
Addnew
Delete
Movefirst
Moveprevious
Movenext
MoveLast

全部同じ。

トランザクションなども全部同じように扱える。


そこで筆者は VB6 + ACCESS MDB の資産 .NET に移行してもそのまま DAO で書いている。
次回記載予定のプロセス間通信で、フックして資産を残したまま、改造・追記を .NET で行ったりしている。