DBGridへの表示について

解決


くもり  2009-08-14 20:41:48  No: 142395

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

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 23:34:27  No: 142396

> 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 20:16:49  No: 142397

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

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

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

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

DataGridのほうでした。

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


ha?  2009-08-20 00:47:25  No: 142398

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


くもり  2009-08-20 03:11:21  No: 142399

説明下手ですいません。

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

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

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

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

宜しくお願いします。


はれ  2009-08-20 18:39:37  No: 142400

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


くもり  2009-08-20 19:55:27  No: 142401

はれさん、こんにちわ

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

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


^-^  2009-08-20 20:58:22  No: 142402

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加