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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q中国語アクセント?京都の数の数え方

中国語に詳しい方の目に触れることが多いと思い、こちらに投稿します。

京都では、1から10までの数を続けて数えるとき(子どもが風呂につかるときなど)わらべ歌のような「節」をつけます。(11から20の節もありますが煩雑なので今回は省きます)

一 いち ラソ
二 にい ミソ
三 さん ラー
四 しい ソー
五 ごお ラー
六 ろく ラソ
七 ひち ラソ
八 はち ラソ
九 くう ラー
十 じゅう ミー
 
とにかく♪ラソミソラーソーラーラソラソラソラーミー、というメロディーに乗せて歌うように数えます。

少し前の朝日新聞夕刊の記事によると、こうした数え方は京都だけでなく大阪の一部でも行なわれているということでした。

そこで思い出したのが小学生の頃に学校の先生から聞いた話です。この節は中国語の古いアクセントと関係があるらしいというようなことでした。遣唐使なのかもっと後に中国に留学した僧侶なのか、とにかく中国語を学んだ人が、アクセント(声調?)を子どもに覚えさせるために考えた歌だという話でした。

大学で中国語を選択した友人にきいても現代の標準北京語ではないらしく関係が良くわかりませんでした。

そこで質問です。

この節は本当に中国語の反映なのでしょうか?

もしそうだとすれば、いつの時代のどの地方の発音に近いのでしょうか?

よろしくおねがいします。

中国語に詳しい方の目に触れることが多いと思い、こちらに投稿します。

京都では、1から10までの数を続けて数えるとき(子どもが風呂につかるときなど)わらべ歌のような「節」をつけます。(11から20の節もありますが煩雑なので今回は省きます)

一 いち ラソ
二 にい ミソ
三 さん ラー
四 しい ソー
五 ごお ラー
六 ろく ラソ
七 ひち ラソ
八 はち ラソ
九 くう ラー
十 じゅう ミー
 
とにかく♪ラソミソラーソーラーラソラソラソラーミー、というメロディーに乗せて...続きを読む

Aベストアンサー

現代の普通話(北京語)の四声かも?と思ったのですが、違うようです。

中国では、四声といって、音の発音の違いで単語を聞き分けます。
よく「マー」という音の発音を下記にような音の違いで「マ ̄マ/マ_マ\」のように表現します。

1声  ̄ 2声 / 3声 _ 4声 \  (3声は一度沈んでまた語尾が上がる感じ)

数字の「声」を書くと

12345678910
 ̄\ ̄\_\ ̄ ̄_/

これを当てはめると

一 ラー
二 ラソ
三 ラー
四 ラソ
五 ミソ
六 ラソ
七 ラー
八 ラー
九 ミソ
十 ソラ

というわけで、全然違いました。
でも、なんらかの音を教えるため、という感じはしますよね。

昔の古い和服を着た女の子が、お手玉かなにかしながら、数えている感じもします。

たいした情報でなくてすいません。

QACCESSのFieldの追加方法

VB初心者です。ACCESSのMDBに下記の構文でFieldの追加はできたのですが
少数点以下2桁に設定する方法がわからなく困っています。
Fieldプロパティにも無く、どなたか教えて下さい。

Set field01 = tdfEmployees01.CreateField("Tanka", dbCurrency)
tdfEmployees01.Fields.Append field01

Aベストアンサー

テキストボックスなどのコントロールに対してなら、Decimalplaces = 2 のようにプロパティを設定すればよいのですが、

DA0 で、テーブルの Field オブジェクトに設定する場合には、Properties コレクションに明示的に DisplayControl プロパティを追加してやらないと、VBAから参照できません。
(Access のHELPには、Field オブジェクトのプロパティとして載っていません。)

具体的には、

Dim dbs As Database
Dim tdfEmployees01 As DAO.TableDef, field01 As DAO.Field, prp As DAO.Property

Set dbs = CurrentDb
Set tdfEmployees01 = dbs.CreateTableDef("テーブル名")
Set field01 = tdfEmployees01.CreateField("Tanka", dbCurrency)

tdfEmployees01.Fields.Append field01
dbs.TableDefs.Append tdfEmployees01

Set prp = field01.CreateProperty("DecimalPlaces", dbByte, 2)
Call field01.Properties.Append(prp)

のようになります。
(CreateProperty は、テーブルの Append の後で実行してください。)

テキストボックスなどのコントロールに対してなら、Decimalplaces = 2 のようにプロパティを設定すればよいのですが、

DA0 で、テーブルの Field オブジェクトに設定する場合には、Properties コレクションに明示的に DisplayControl プロパティを追加してやらないと、VBAから参照できません。
(Access のHELPには、Field オブジェクトのプロパティとして載っていません。)

具体的には、

Dim dbs As Database
Dim tdfEmployees01 As DAO.TableDef, field01 As DAO.Field, prp As DAO.Propert...続きを読む

Q中国語の畜の数え方:日本語なら頭か匹ですむのに

http://72.14.235.104/search?q=cache:_SVmzSeWmDEJ:finito-web.com/myhome/kaiwa/kaiwa5.htm+%E4%B8%AD%E5%9B%BD%E8%AA%9E%E3%80%80%E9%A0%AD%E3%80%80%E5%8C%B9&hl=ja&ct=clnk&cd=1&gl=jp

<引用>
例:牛一頭。⇒一頭牛。
※日本語との違い→牛=頭tou、馬=匹pi、
ロバ=条tiao、ラクダ=峰feng、羊=只zhi<引用>

日本語では上の動物すべて「頭」でも「匹」でもいいです。
中国語の場合はどうしてこのような違いがあるのですか?ロバは「細いから」tiao を使っているの?らくだは「こぶがあるから」feng を使っているの?ほかに関しては?よろしくお願いします。

Aベストアンサー

これを一括して言えない。
例を挙げます。

只、匹、頭、条、峰.

一只狗 一只鳥 一只猴子 一只鶏 一只大象 一只羊 一只猫 一只老鼠 一只蝴蝶 一只虫 一匹馬 一頭牛 一頭羊 一頭ロバ(馬戸) 一頭ラバ(馬累) 一頭豹子 一条蛇 一条魚 一条虫 一峰駱駝

勿論例外がある
例えば、一条狗、一頭大象もいい。
羊は「只」「頭」、どっちもいい。

一般的に言えば、鳥類と家禽は全部「只」、
虫は、細いやつは「条」、他は「只」。
哺乳動物は、体が大きいのは「頭」、他は「只」、人は「個」。
例:一頭鯨、一只イルカ。
でも、多くの場合、「只」と「頭」は通用
例:獅子、虎、豚、羊
牛には「只」をあまり使わなくて、「頭」です。
馬は絶対「匹」です。

QRecordsetオブジェクトに取り込んだレコードの件数の数え方

ExcelVBAでAccessのデータベース操作を行っています。
Recordsetオブジェクトに取り込んだレコードの件数を数えたいのですが、
VBAでどのように書いたらよいのでしょうか。

フィールド数の場合は(myRecSet:Recordsetオブジェクトの変数)、
myRecSet.Fields.Count '
のように書けばことはわかるのですが。

よろしくお願いします。

Aベストアンサー

こんにちは

VBのヘルプ(MSDN)でRecordCountを調べたら

RecordCount プロパティは、前方スクロール タイプのカーソルでは -1 を返し、静的カーソルまたはキーセット カーソルでは実際の数を返し、動的カーソルではデータ ソースによって -1 または実際の数を返します。

との事です。なんか状況によっては-1になる場合があるみたいですね。

確実に件数を求めるのでしたら、事前に
"select count(*) as カウント from テーブル where 条件"
というようなSQLを静的(adOpenStatic)でオープンし
カウントを調べた方がよいかと存じます

頑張ってください

Qものの数え方(~つ)

ものを数えかたのなかに
ひとつ(1つ)
ふたつ(2つ)
・・・と数える数え方がありますが
なぜ10のときは
とお(10)
なのでしょうか?
とおつがだめな理由があるのでしょうか?
教えてください!!><

Aベストアンサー

「とおにはなぜ『つ』がつかないのか」というなぞなぞの回答ですが、

「いつつ」で「つ」を2回使っているから、と言うのがありました。

QDataGridの列の数、行の数

いつもお世話になっております
VB6.0でDataGridをつかって
Accessのようにデータを表示しているのですが
表示しているデータの最大列数と最大行数を
求めたいのですが、やり方がわかりません
どうしたら最大列数と最大行数を求められるか
教えて下さい!お願いします

Aベストアンサー

こんばんは
最大列数は、DataGrid.Columns.Countで
最大行数は、表示してるレコードセットのRecordCountプロパティから得る。

でいかがでしょうか?

Q中国語

中国語を勉強しています。
今のやりかたは、中国語文章の単語を
中国語から日本語  日本語から中国語に書けるようにする。
文章を中国語から日本語  日本語から中国語に書けるようにする。
読めるようにする。という感じです。
問題はピンインなのですが、中国人の方もしくは
中国語を話せる人は漢字を見てピンインを書くことができるのでしょうか。
ピンインを覚えて書けるようにならないといけないのでしょうか。

Aベストアンサー

中国人は、地域により教育に少し違いがある?らしく、中国人でも
ピンインを書けない人は、時々います。彼らは、耳から覚えているので
書けなくても良いようです。しかし、高等教育を受けている人は
ほとんど書けます。しかし、中国人にとって中国語は、"普通
話(プートンファ)"と言い、日本人のいう中国語を使う地域(北京)の
人以外、ほとんどの人にとって、自分たちの言葉ではありません。
3時間も電車に乗れば言葉が変わる位方言が多いのです。
普通は小学校から普通話を習っているようです。小学生のノート
などでは、漢字を書き、その上にピンインを書いて覚えています。
中国人で方言を話す人も、普通話(中国語)を話せるようになります。
日本人にとって、中国語の発音は、習得が難しいので、正確な発音が
出来るようになるためには、絶対ピンインの習得は不可欠です。
日本人には、"し"、"えん"でも、中国人から見れば、xiとshi,enとeng
を区別して話しています。中国に行っても自然に中国語を覚えるのは
時間がかかります。まずは、ピンインからです。

QDataGridでの列固定について

いつもお世話になっております。

VB.NET2003で開発を行っております。
画面にDataGirdを配置して一覧表示しているのですが、エクセルのように1~5列を固定にして6列目からを横スクロールするようには出来ないのでしょうか?

どなたかご存知でしたらお教え願います。
宜しくお願い致します。

Aベストアンサー

参考URLあたりで、どうでしょうか?
なにげに、むずかしそうですが。

参考URL:http://dobon.net/vb/bbs/log3-22/13531.html

Q中国語を独学で身につけたいんです・・・

中国語を独学で身につけたいんです・・・
私は中国語に関しては現時点ではまったく知識ゼロです。
23才女子、社会人です。

ただ、中国や中国語にすごく将来性を感じて、中国語を習得したいと思うようになりました。
できれば、半年以内になんとかカタコトでもいいので身につけられたら、と思っています。

じゃあ中国語教室に通えば・・・、と言われそうですが、できれば中国語教室のようにお金も時間もかかる方法ではなく、独学で習得したい、と思っています。
その場合、中国語は発音が難しいので、発音や中国語会話ができるようになるかが不安です。

また、私の性格的にあまりコツコツ続くほうではなく、どちらかというと飽きやすい性格です。

そこで、もし独学で中国語を身につけた方がいらっしゃれば、勉強方法やおすすめの中国語教材、中国語講座などがありましたら教えていただけると嬉しいです。

できましたら、一般的な意見ではなく、実体験のようなものを教えていただければ嬉しいです。
よろしくお願いいたします。

Aベストアンサー

まず最初にですが、
どのような学習をされるとしましても、
中国語・日本語の辞書、中日辞典が必須になります。

どの中国語辞書が一番良いかどうかは、好みや学習段階によって
異なってきますが、私の個人的な体験からですが、中国語の学習を
始めたばかり・これから始める、ということであれば、
小学館の「プログレッシブ中国語辞典」がおすすめです。

中日辞書はピンインのアルファベット順配列なので、
原則として単語のピンインがわからないと引くことができません。
ピンインとは、中国語の発音を表した発音記号のことです。

つまり、最初に中国語の漢字を見たとしても、ピンインがわかる
くらいまで中国語の学習をしていなければ辞書も引けない、という
ことになります。

「プログレッシブ中国語辞典」では、最初のほうに部首別・音訓索引が
ついていて、見やすく工夫されているため、日本語読みあるいは部首・画数が
わかれば引くことができます。

その他、使用頻度の高い語彙は太字で記載されていることや語法の
説明など初心者向けの配慮が多くあります。

まず最初に文法や単語のインプット中心に勉強するとしますと、
このプログレッシブ中国語辞典がおすすめです。

ただ、辞書だけではもちろん中国語を発音や会話、文法などを身につける
ことができませんので、なんらかの基本となるテキストや参考書が
必要になります。

その中でおすすめとしましては、NHKのラジオの「まいにち中国語」という
シリーズです。
もし聞き逃しても書店等でバックナンバーが販売されているようですので、
もしよろしければ探してみてください。
私個人的にはよいと思うのですが、ちょっと硬い雰囲気があるので
好みであると嬉しいのですが。

ほかに市販されている中国語教材で私が実際に購入して、良かったと思うの
は少ないのですが、あえて挙げるとすれば、

網野式動詞フォーカス中国語入門

http://chinese-amino.com

こちらですかね。
著者が20ヶ国語を習得された翻訳者ということで、中国語だけにとらわれず
動詞を中心に中国語を学ぶという独自の視点で構成されているので、
今まで気になっていた部分で解消された点がいくつかありました。
難点は、お値段が少々するということです。個人的におすすめなのですが。

いずれも個人的体験ばかりですので人によって意見が分かれるかもしれません
が、少しでもご参考になりましたら幸いです。

参考URL:http://chinese-amino.com

まず最初にですが、
どのような学習をされるとしましても、
中国語・日本語の辞書、中日辞典が必須になります。

どの中国語辞書が一番良いかどうかは、好みや学習段階によって
異なってきますが、私の個人的な体験からですが、中国語の学習を
始めたばかり・これから始める、ということであれば、
小学館の「プログレッシブ中国語辞典」がおすすめです。

中日辞書はピンインのアルファベット順配列なので、
原則として単語のピンインがわからないと引くことができません。
ピンインとは、中国語の発...続きを読む

QACCESSテーブルを RecordSet以外で1レコードづつ読む方法

Set inrec3 = CurrentDb.OpenRecordset("テーブル名")
でオープンして1レコードづつ読みたいのですが
上記の方法では、データが多いため(2万件ちょっと)
フリーズしてしまいます
そこでもっと単純にOpenする方法はないでしょうか
テキストファイルのオープンだと
今度は、フィールドの取り出しがやっかいかな
と思うのですが
よろしくおねがいします

Aベストアンサー

久しぶりにDAOを使ってみたので外しているかもしれませんが

Sub aaa()

Dim db As Database
Dim inrec3 As DAO.Recordset
Dim i As Long

Set db = CurrentDb
Set inrec3 = db.OpenRecordset("TEST")

Do Until inrec3.EOF

i = i + 1
If i Mod 100 = 0 Then
Debug.Print i, inrec3!XXX
DoEvents
If i = 30000 Then Exit Sub
End If

inrec3.MoveNext

Loop

inrec3.Close
Set inrec3 = Nothing

Set db = Nothing

End Sub

試しにやってみました。
200万件のレコードで30,000回ループ
何も問題ありませんでした。

気になったことですが、
(1)Set inrec3 = CurrentDb.OpenRecordset("テーブル名")
とせずに、"Select * From テーブル名 Where Field1 > 1000 " 見たいに
SQL文でくくれないでしょうか。
全レコードを読まなければならないのならば別ですが
(2)DoEventsを入れて見たらどうでしょうか。

久しぶりにDAOを使ってみたので外しているかもしれませんが

Sub aaa()

Dim db As Database
Dim inrec3 As DAO.Recordset
Dim i As Long

Set db = CurrentDb
Set inrec3 = db.OpenRecordset("TEST")

Do Until inrec3.EOF

i = i + 1
If i Mod 100 = 0 Then
Debug.Print i, inrec3!XXX
DoEvents
If i = 30000 Then Exit Sub
End If

inrec3.MoveNext

...続きを読む


人気Q&Aランキング

おすすめ情報