役に立ちそうもないTips移転版

俺得なTipsを書き連ねるだけのブログ。

Recordsetの隠しプロパティ

Access VBAだと、「rs![列名]」とか書けるわけだが、標準のVB(A)文法ではない(はず)。で、これがどうコンパイルされているのかというと、putの場合
「rs.Collect("列名")」
と読み替えているそうだ。一方getだと
「rs.Fields("列名").Value
と読み替えているらしき。
(ネタ元はMOUGの過去ログなのだが、ぐぐるさんのキャッシュにしか残ってなかったのでリンクは張りません)
で、(特にgetの場合は)明にCollectプロパティ使ったほうが効率いいよー、という話が
http://www.microsoft.com/japan/msdn/data/techmat/mdac/ImpPerf.aspx
にある。……でもCollectプロパティってばりばりに隠しプロパティなんですが(TT) (オブジェクトブラウザでも「非表示のメンバを表示」にしないと出てこないし当然ヘルプにも一言も書いてない)
ちなみにCollectプロパティが効率がいいのはFieldsとかFieldの参照をすっ飛ばして値そのものに直接アクセスできるからだそうな。
もっとも、「じゃFieldって要らない子? 」ということはなくて、Recordsetをフェッチループで回すような場合はFieldをループ前に変数にSetして「キャッシュ」しとくとCollectよりいい、らしい。
# てかFieldへの参照ってカーソルが動いたら切れると思ってたorz

2007/07/20 MSのページのURLが変わってたので追随。