- - PR -
ここへ記述するのは不適切な気がするのですが。。。レコードセットについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-06-18 18:40
私は、2000年から就職しプログラマー(主にVB)をやってきており
詳しくわからない事があります。 あるDBからレコードセットのインスタンス化を行い あるフィールドを取得する場合の指定が debug.print rs("AAA") という記述と debug.print rs!AAA という記述方法があると思います。 「!」を使用するのは旧 ("")の書き方が新とという認識をしているのですが、 理由。。。説明が出来ない事で困っております。 オブジェクト指向という考えが広まり 記述の仕方が変わったと、以前聞いた事があるようなないような。。。 説明などしているHPなどがあれば教えていただけませんか? 今、色々なキーワードなどで検索はしてはみたのですが、 妥当なHPに到達もできそうになく、Microsoftでも少し 情報の氾濫とでもいいますか。。。絞込みしきれずに 少し挫折気味です。。。 [ メッセージ編集済み 編集者: kshr 編集日時 2004-06-18 18:41 ] | ||||
|
投稿日時: 2004-06-19 15:22
参考に成るかどうかは判りませんが フィールドにアクセスする手段(表記法)としてVBでは、 @x = rs.Fields("part").Value 又は、 Ax = rs!part.Value の何れをもサポートしています。 この!マーク表記は、多分Accessを踏襲した為に残ったものと考えられます。 但し、Aの表現(一見簡略表記)は、 実際には、Fieldsコレクションが取得され、そこからpartをキーとして Fieldオブジェクトが取得されValueプロパティにアクセスされます。 @のFieldsコレクション内の"part"FieldのValueプロパティにアクセスするのとでは、 大量データ処理の際にかなり処理時間にリスクを負います。 パフォーマンスチューニングでは、必ず問題になります。 直接オブジェクト指向とは、関係ないと思います。 尚、上記内容は、ADO関連書籍には掲載されていると思います。 | ||||
|
投稿日時: 2004-06-19 21:27
Visual Basic 言語の仕様を見ると、rs("AAA") と rs!AAA 同じはずです。
それどころかレコードセット以外でもデフォルトメンバのインデックスに使用可能です。 <ヘルプ抜粋> 9.4.1 ディクショナリ メンバ アクセス "ディクショナリ メンバ アクセス式" は、コレクションのメンバを検索するときに使用します。ディクショナリ メンバ アクセスは、E!I の形式で指定します。E には、値と見なされる式を指定し、I には識別子を指定します。この式には、1 つの文字列型パラメータでインデックス付けされた既定プロパティが含まれている必要があります。ディクショナリ メンバ アクセス式 E!I は、式 E.D("I") に変換されます。 | ||||
|
投稿日時: 2004-06-19 21:38
Visual Basicのヘルプの調査は基本ですので、言語の仕様は見られていると思いますが、 旧仕様どころか進化している気がするのですが。 | ||||
|
投稿日時: 2004-06-20 12:25
そりゃ普通に探しても見つからないですよ。10年以上前の話ですもの。 VisualBasic2.0の頃のリファレンスマニュアルを見ると、フォーム上のコントロールにアクセスする時にも"!"を使うと言う記述があったはずです。もちろん当時"."も使えたけどね。メンバアクセス演算子でとして"!"を使うのは、初期のVisualBasicからの名残です。Microsoftは上位互換性の維持に、多くの情熱を傾ける会社です(私見)。互換性維持の為に今も残してあるだけではないでしょうか?今もVisual Basic 6.0でフォーム上に貼り付けたコントロールにアクセスするためにも"!"を使えますよ。 Me!Text1.Caption = "Hello" こんな感じで |
1