プロが教えるわが家の防犯対策術!

 こんにちは。いつもお世話になっています。今、VBを勉強中なのですが、Datagridを使ったAccessの使い方について質問があります。DatagridをつかってAccessを表示したとき、横(column)の列の数え方としては、
'Adodc1.Recordset.fields.item(index)' になりますよね?しかし、縦(Raw)の列の数え方がどうしても知ることができません。誰か、知っている人がいましたら、教えてください。お願いします。

A 回答 (2件)

このような解釈でよろしいでしょうか?


「データ内の横の座標は項目名(FieldName)で指定することができるが、
データの縦の座標はどのように指定したらよいか?」

違っていたら以下の文は読み飛ばしてください・・・^^;

取得したデータは2次元ですから、横の座標だけでは当然、個々のデータを指定できません。
エクセルのシートが一番わかりやすいと思いますが、エクセルも”A1”とか”R1C1”と言う形で、縦横の座標でセルが特定されますよね。
それで、ご質問の件ですが、横の座標の指定はOKですね。
(FieldNameを指定する事)
では、縦の座標はどうすればよいのか?
残念ながら、エクセルのシートのように4行目とかいった指定はできません。
じゃあどうするかと言うと、
RecordSetにある「Move」系のメソッドを使用します。
MoveFirst・MoveLast・MoveNext・MovePrevious・Move nn
とあります。詳しい使用法はヘルプを見てください。
また、現在縦の座標の焦点がある行をカレントレコードと言います。

注意が必要なのは、このMove系のメソッドはカレントレコードからの移動になると言うことです。
例えば、最初は、カレントレコードは1行目にあるのですが、
そこで、MoveNextすると移動後のカレントレコードは2行目に移ります。
その次に、Move 10 とやると、移動前のカレントレコードから10行進んだ行になりますので、移動後のカレントレコードは11行目になります。

このような形で、横の座標は項目名で設定し、縦の座標はカレントレコードの位置を目的の行に合わせることで設定し、目的のデータセルを特定します。

こんなかんじで、縦の設定はカレントレコードからの相対位置になるので、なれないと頭こんがらがってしまいますが・・・^^;
まあ、頭やわらかくしてやりましょう。

ちなみに私が仕事でやるときは、DataGridとかDataコントロールは使いません。
だって、頭こんがらがるから・・・(-△-;)
    • good
    • 0
この回答へのお礼

なるほど。これは、わかりやすい。今の時点での私の疑問は、まったく取れました。ありがとうございます。しかし、余談になりますが、VBは面白い反面難しいときはほんと難しいですね。ま、おそらくプログラムすべてに言えることでしょうけど。とにかく、ほんとにありがとうございました。

お礼日時:2001/10/04 16:21

Adodc1.Recordset にどのようなレコードセットをセットしているのでしょうか?


できれば、プログラムを抜粋して聞いたほうがいいと思います。

あと、「数え方」というのは、ある値を参照する方法を知りたいのでしょうか?レコード数を知りたいということでしょうか?
>'Adodc1.Recordset.fields.item(index)' になりますよね?
う~ん、これが「columnの数え方」なのですか?

データベースのレコード(やフィールド)のアクセス方法は、わかっているのでしょうか?VB(Access)での方法だけがわからないのでしょうか?

VBに付属しているサンプルを見てもわからないということでしょうか?

この回答への補足

返事ありがとうございます。確かにこれだけじゃわからないかもしれません。最初は、すべてのコード記入しようとしたんですが、なにしろ800字制限なので、できるだけ小さくしようとしてあれだけになってしまいました。ところで、数え方というより示し方かもしれませんが、とにかく、adoc1.recordset.fields.item(index)もしくは、adoc1.recordset.fields(fieldname)をすることによって、横のフィールドの名前を指定してコードを書くことができるのは確かだとおもうのですが(例えば、Nameというフィールドに何かを記入したいときadoc1.recordset.Addnew のあとにadoc1.recordset.fields(Name) = txtName などとすると、txtName の中の文字がNameというフィールドに記入される。)はたして、ひとつのセルを対象にそういった記入とか削除とかできるのかという疑問です。ひとつのセルを対象にするには、field名だけでなく縦を示す名前が必要だとおもうのです。

補足日時:2001/10/01 15:49
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!