- ベストアンサー
Accessの初歩的な質問です
こんにちわ。 最近AccessVBAについて勉強しているのですが、 RS.FieldsとMeについての使い方がよくわかっていま せん。使用例としては、 Me("txtSuryo" & j) = RS.Fields("数量" & j) と使っているのですが、参考にさせてもらったサイト にはなんの説明もなかったので困っています。 レコードの数量の内容をtxtsuryoへ入れているだけ なのですが、わざわざRS.FieldsやMeを使用してい るのが分かりません。 ちなみに、RSはレコードセット変数で、jについては 気にしないでください。 とにかく、RS.FieldsとMeを使用するとどのようにな るか具体的に知りたいです。 少し説明不測かもしれませんがよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>jについては気にしないでください。 ここがポイントなので、気にしなければいけないのですが・・・(^^; この場合、例えばj=1,2...なら txtSuryo1 = Rs.Fields("数量1") txtSuryo2 = Rs.Fields("数量2") … となります。 数が少なければこう書いてもいいんですが 多い場合はForでまわしたほうがいいですよね。 Meは自分自身、つまりForm自身を指します。 (ですので、フォームモジュール内でしか使えません) また、 Me(コントロール名) は Me.コントロール名 と同じです。 Me("txtSuryo" & j) と書くのは、 「コントロール名がjによって変わるから」です。 RS.Fields("数量" & j)も全く同じ理屈です。 ちなみにMe()はMe.Controls()と同意で Controls()は、(そのForm上にある)コントロールの集合(Collectionオブジェクト)です。 Fields()もCollectionオブジェクトで、(そのレコードセットの)Fieldオブジェクトの集合です。 Accessにはコントロール配列が無いので、コントロール配列のように振舞わせるにはこの方法を良く使います。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
Objectと言うのを聞いたことがあると思います。 メモリの各部分の先頭番地を指す名前と我流解釈しています。 オブジェクト指向のプログラムは階層構造になっていて プログラム(メソッド)とデータ(変数)が一緒にまとめて(クラスなど)考えられています。 (1)その階層構造をピリオドを使って左から、上部名から書き連ねます(基本)。例 日本国.東京都.江東区. 一般の住所はスペースが「.」の役をしている。 「.」は「何々の中の」と読みかえると良く判る。 (2)中間の階層までを勝手な名前で付けることが出来るようにしていることが多い。例 江東、我が区 (3)ただ自分のいる上部範囲はシステムに判るので、表記を省略しても良いようになっている場合が殆どです。例 県広報紙で当県 (4)またその上部範囲を特別の短い語句で指し示す途を設けているばあいがあります。例 地元(例がまずいかも) (4)が「Me」です。 「Rs」は(2)に当たると思います。メモリの中ではプログラムとデータしかないのですが、プログラムは、沢山有るメモリ上のプログラムやデータのあり場所をどうシステムに説明記述するかの問題なのです。(メモリ上で存在する(インスタンス)前に、設計図的な段階での名前の問題やクラスなどのことも出てきますが考えないことにします。) 日本に府中市が2、3箇所あるとすると、名前を変える(和泉府中)のも手ですが、東京都.府中市、広島県.府中市と上部の記述を強制し、明確にする仕組みもあり得るわけです。地名などダブリ検証可能なもので無い場合、プログラムを書く人が指し示す・つける名前を全体として同一物が無いようにする技術として、最上部から含めて考える仕組みにすれば、自分の範囲でダブらないようにすれば、全体としてはユニーク(ダブらない)になります。 何かムードのようなものが伝われば幸いです。今後のご勉強で、補強や訂正をしてください。
お礼
お返事ありがとうございます!! 大体のことは理解できました。 忙しいため、お礼が短くなりすいませんです。
勉強のためにお聞きになってると思いますのですぐには教えないほうがいいかな? ってことで補足要求。 > わざわざRS.FieldsやMeを使用しているのが分かりません。 わざわざやるには理由があります。mttk1238さんが「わざわざ」と思う理由はなんでしょうか?
お礼
お返事ありがとうございます!! 大体のことは理解できました。 忙しいため、お礼が短くなりすいませんです。
お礼
お返事ありがとうございます!! 大体のことは理解できました。 忙しいため、お礼が短くなりすいませんです。