リストボックスにレコードセットをセットするには?

解決


なかじる  2005-07-15 09:22:57  No: 90993

ADO接続にて取得したレコードセットを、今までだったら、
AddItemで最終レコードまで追加と言う形でループにて追加し、
表示させておりましたが、
そのレコードセットを一気にリストボックスに突っ込めばループがない分、
スマートに、また効率もよいのでは?と思い試行錯誤しておりました、が、
そんな事ができるのか、またどのようにしたら出来るのかが全くわかりません。
まだまだ初心者で足らない部分があるかと思いますが、どなたかご指導お願い致します。


魔界の仮面弁士  2005-07-15 10:31:17  No: 90994

ListBox では無理ですが、VB6の DataList コントロールであれば、
そのような機能が用意されています。ヘルプで確認してみてください。


なかじる  2005-07-15 14:09:49  No: 90995

さっそくのご回答ありがとうございます。
魔界の仮面弁士様が前に解説させたものも参考に読ませていただきましたが、
僕の頭ではさっぱりわかりませんでした。すみません。

下記にサンプルソースを書かせていただきましたが、
DBはAccess2000のMDBで
テーブルはTEST、
フィールドはF001〜F003までしかなく、今回レコードセットに取得したのは
F001のみです。

下記ソースで実行したらエラーはでないものの、DataListにも何も表示されませんでした。

具体的にどこが悪いかご指摘いただければとも思います。

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim strSQL As String

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;DataSource=F:Test.mdb"

rs.CursorType = adOpenStatic
rs.LockType = adLockPessimistic

strSQL = "SELECT TEST.F001 From TEST WHERE (((TEST.F003)=0))"

cn.Open

rs.Open strSQL, cn

Set Form1.DataList1.RowSource = rs
Form1.DataList1.DataMember = "F001"

rs.Close
cn.Close

Set rs = Nothing
Set cn = Nothing


魔界の仮面弁士  2005-07-15 18:32:47  No: 90996

> 魔界の仮面弁士様が前に解説させたものも参考に読ませていただきましたが、
それは、どのような内容だったのでしょうか?

> 下記にサンプルソースを書かせていただきましたが、
いやいや、DataMemberプロパティを指定しても、意味が無いですよ。
この場合は、ListFieldプロパティですね。

DataMemberは、(DataEnvironmentのように)複数のデータセットが
あった場合に指定するための物です。
(Recordsetのように)単一のデータセットを指定している場合には、
意味を持ちません。

———で。
まずは、ヘルプのチュートリアルを試し、それを理解しましょう。
# DataList, DataComboは、どちらも設定方法は同じなので、
# この際、一緒に覚えてしまうと良いかも。

[Visual Basic ドキュメント]
└[Visual Basic の使用方法]
  └[プログラミング ガイド]
    └[Visual Basic を使ってできること]
      └[Visual Basic の標準コントロールの使用]
        └[データ コンボ コントロールおよびデータ リスト コントロールの使用]
          └[データ コンボ コントロールとデータ リスト コントロールを使用した 2 つのテーブルのリンク]

> rs.Close
> cn.Close
> Set rs = Nothing
> Set cn = Nothing
これも NG。この時点で rs.Close してはいけません。
(Nothingするのは構いませんが)

閉じてしまったら、DataListがデータを参照できなくなって
しまいますので、DataListに連結している間は、Recordsetを
開き続けておき、フォーム終了時に Close するようにしましょう。


なかじる  2005-07-15 22:39:06  No: 90997

魔界の仮面弁士様、ご回答ありがとうございました。
>> 魔界の仮面弁士様が前に解説させたものも参考に読ませていただきましたが、
>それは、どのような内容だったのでしょうか?

それは「リストボックスのデータソースを設定するには」です。

DataMemberをListFieldに変更し、Closeしないようにしたら、表示できました!

ありがとうございます!

教えていただいたヘルプを呼んでさらに精進いたしますので、またご指導ください。ありがとうございました。


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

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






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