はじめまして、超初心者ですので、質問文も間違っているかもしれないですが
よろしくお願いします。
プログラムは以下の通りです。(一部省略してます)
Public Sub CategoryB_Get(CategoryA_Text As String)
Dim ID_Num As Integer
Dim rs_text As String
Dim AccessApp As Object 'Access.Application
Set cn = New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=C:\_MyWork\DataBase\" & "WindowInt.mdb"
cn.Open
Set rs = New ADODB.Recordset
rs.Open "CategoryB", cn, adOpenStatic '"CategoryB"はテーブル名
ID_Num = 1
Do While ID_Num <= 10
criteria = "ID = '" & ID_Num & "'" '"ID"はフィールド名
rs.MoveFirst
rs.Find criteria, , adSearchForward
If rs.EOF = True Then
Beep
MsgBox ("該当するレコードはありません")
End If
'該当するレコードが見つかったとき(テスト)
If rs.EOF = False Then
Category_List(2, ID_Num) =rs!旅行 '←"旅行"というフィールド名の情報を所得しているのだが
'この”旅行”という記述を変数に変更したい!
End If
ID_Num = ID_Num + 1
Loop
rs.Close
cn.Close
End Sub
上記の"旅行"という部分を変数(Koumoku As String)にして、データの所得をしたいのですが
Category_List(2, ID_Num) ="rs!" & Koumoku などといった記述にしてもエラーが出てしまいます。
この部分の記述を変数化することは可能なのでしょうか?
もし、可能なら、どのような記述が適切なのでしょうか?
ぜひ、力を貸してください。よろしくお願いします。
> Category_List(2, ID_Num) =rs!旅行 '←"旅行"というフィールド名の情報を所得しているのだが
『rs!旅行.Value』のように、Valueプロパティを明示した方が良いですよ。
で、変数を使ってアクセスする場合は、『Rs.Collect(strFieldName)』などとすればOKです。
他にも、列の値を読み書きする方法は、幾つかの書き方があります。
'序数(列番号)で指定
Debug.Print Rs.Collect(0) 'Collectプロパティによる操作
Debug.Print Rs.Fields.Item(0).Value 'Fieldオブジェクトを指定
Debug.Print Rs.Fields(0).Value '.ItemはFieldsオブジェクトの規定のプロパティなので、省略可能
Debug.Print Rs(0).Value '.Fieldsは、Recordsetオブジェクトの規定のプロパティなので、省略可能
'列名で指定
Debug.Print Rs.Collect("列名")
Debug.Print Rs.Fields.Item("列名").Value
Debug.Print Rs.Fields("列名").Value
Debug.Print Rs("列名").Value
'コレクションのメンバとして指定
Debug.Print Rs.Fields![列名].Value
Debug.Print Rs![列名].Value '.Fieldsは、Recordsetオブジェクトの規定のプロパティなので、省略可能
ちなみに上記において、『!』による操作は、もっとも低速となります。
(.Fieldsや.Valueといった「規定のプロパティ」を省略した場合は、さらに低速になります)
ありがとうございました。
結構悩んでいたのですが、本当に助かりました。
ほかの書込みもとても参考になる物がおおいので、
いろいろ勉強させてもらいます
ツイート | ![]() |