DBGridへの表示について

解決


くもり  2009-08-14 11:41:48  No: 142395  IP: 192.*.*.*

こんにちわ、くもりです。

VB6.0でAccessのデータをDBGridに表示したいと思っています。

    Dim rec As ADODB.Recordset      'レコードセット

    Set rec = New ADODB.Recordset

    strSQL = "select * from テーブル1 order by コード;"

    rec.CursorLocation = adUseClient

    rec.Open strSQL, ADOCon, adOpenKeyset, adLockOptimistic

    Set DataGrid1.DataSource = rec

以上のようなコードでエラーは出ませんが、
表示ができません。

宜しくお願いします。

編集 削除
魔界の仮面弁士  2009-08-14 14:34:27  No: 142396  IP: 192.*.*.*

> VB6.0でAccessのデータをDBGridに表示したいと思っています。
> Set DataGrid1.DataSource = rec

DBGrid と DataGrid は、まったく別のコントロールです。
今回使用したいのは、どちらなのでしょうか?


> rec.CursorLocation = adUseClient
> rec.Open strSQL, ADOCon, adOpenKeyset, adLockOptimistic
何故 adUseClient と adOpenKeyset という組み合わせにしているのでしょうか?
ヘルプにも書かれていますが、その組み合わせは使えないはずです。

adOpenKeyset を使いたいのであれば、adUseServer にすべきですし、
adUseClient を使いたいのであれば、adOpenStatic にすべきかと思いますよ。
(CursorLocation/CursorType/LockType の値それぞれの意味を調べておきましょう)


なお、adUseServer/adOpenKeyset の組み合わせを使うのであれば、
rec.Properties("IRowsetIdentity").Value = True にしておかないと、
グリッドに表示されないと思います。

編集 削除
くもり  2009-08-18 11:16:49  No: 142397  IP: 192.*.*.*

こんにちは、魔界の仮面弁士さん
ありがとうございます。

魔界の仮面弁士さんの言うとおり
adUseClientのときはadOpenStaticでないとダメでした。
過去ログから引っ張ってきて意味も分からず
そのまま使用していました。
(adUseClientとadOpenKeysetは別々の過去ログから貼り付けました。)

adOpenKeysetではエラーにはならないで、最も類似する
ものが使用されていたようですね。


>DBGrid と DataGrid は、まったく別のコントロールです。
>今回使用したいのは、どちらなのでしょうか?

DataGridのほうでした。

DataGridのClickイベントで
DataGrid1.Columns(0).Textを使って値を抽出したいのですが
クリックしたときのカレント行が1回前にクリックした行になって
しまいます。
rowプロパティも1回前のクリックした行になっています。
選択した行のColumns(0).Textを抽出するにはどうすればいいでしょうか?

編集 削除
ha?  2009-08-19 15:47:25  No: 142398  IP: 192.*.*.*

一回前のクリックした行なの?
二行目選択した場合のIndexが0になっちゃうとかいうはなし?

編集 削除
くもり  2009-08-19 18:11:21  No: 142399  IP: 192.*.*.*

説明下手ですいません。

DataGridを2つ使った処理をしようとしています。
まず、DataGrid1にマスタテーブルを表示しています。
そして、DataGrid1のクリックイベントで選択された行の
データをキーにして
DataGrid2に表示するという処理をしています。

実際のコードは
DataGrid1.Columns(0).Text
でカレント行の最初のフィールドのデータをキーにしています。
この処理がカレント行でなかったらすいません。

debug.print文でrowプロパティを見ると
最初に3行目をクリックするとrow=0
次に2行目をクリックするとrow=2
次に5行目をクリックするとrow=1
という風になってしまいます。

リストボックスのリストインデックスのような
プロパティとかはなかったように思います。

宜しくお願いします。

編集 削除
はれ  2009-08-20 09:39:37  No: 142400  IP: 192.*.*.*

最初と現在で質問内容が違う・・・
別の内容なら別で質問したほうがいいんじゃない?
それとも、未だに「表示が出来ない」のかな?

編集 削除
くもり  2009-08-20 10:55:27  No: 142401  IP: 192.*.*.*

はれさん、こんにちわ

同じDataGridの質問だったので
そのまま続けてしまいました。

DataGridへの表示は出来るようになりました。

編集 削除
^-^  2009-08-20 11:58:22  No: 142402  IP: 192.*.*.*

> DataGridへの表示は出来るようになりました。

編集 削除