こんにちわ、くもりです。
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
以上のようなコードでエラーは出ませんが、
表示ができません。
宜しくお願いします。
> 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 にしておかないと、
グリッドに表示されないと思います。
こんにちは、魔界の仮面弁士さん
ありがとうございます。
魔界の仮面弁士さんの言うとおり
adUseClientのときはadOpenStaticでないとダメでした。
過去ログから引っ張ってきて意味も分からず
そのまま使用していました。
(adUseClientとadOpenKeysetは別々の過去ログから貼り付けました。)
adOpenKeysetではエラーにはならないで、最も類似する
ものが使用されていたようですね。
>DBGrid と DataGrid は、まったく別のコントロールです。
>今回使用したいのは、どちらなのでしょうか?
DataGridのほうでした。
DataGridのClickイベントで
DataGrid1.Columns(0).Textを使って値を抽出したいのですが
クリックしたときのカレント行が1回前にクリックした行になって
しまいます。
rowプロパティも1回前のクリックした行になっています。
選択した行のColumns(0).Textを抽出するにはどうすればいいでしょうか?
一回前のクリックした行なの?
二行目選択した場合のIndexが0になっちゃうとかいうはなし?
説明下手ですいません。
DataGridを2つ使った処理をしようとしています。
まず、DataGrid1にマスタテーブルを表示しています。
そして、DataGrid1のクリックイベントで選択された行の
データをキーにして
DataGrid2に表示するという処理をしています。
実際のコードは
DataGrid1.Columns(0).Text
でカレント行の最初のフィールドのデータをキーにしています。
この処理がカレント行でなかったらすいません。
debug.print文でrowプロパティを見ると
最初に3行目をクリックするとrow=0
次に2行目をクリックするとrow=2
次に5行目をクリックするとrow=1
という風になってしまいます。
リストボックスのリストインデックスのような
プロパティとかはなかったように思います。
宜しくお願いします。
最初と現在で質問内容が違う・・・
別の内容なら別で質問したほうがいいんじゃない?
それとも、未だに「表示が出来ない」のかな?
はれさん、こんにちわ
同じDataGridの質問だったので
そのまま続けてしまいました。
DataGridへの表示は出来るようになりました。
> DataGridへの表示は出来るようになりました。
編集 削除