プロが教える店舗&オフィスのセキュリティ対策術

下のような構造体があり、その値をレコードセットに代入したいと思います。
構造体内の変数名とレコードセットのフィールド名が同じなので名前を
利用して簡潔に書けないかと思うのですが、これは可能でしょうか?

'構造体
Type Product
 Price As Long
 NameAs String
 SizeAs Single
End Type


'変数の宣言
Dim Car As Product


'レコードセットへの代入
With Product
 RS("Price").Value = .Price
 RS("Name").Value = .Name
 RS("Size").Value = .Size
End With

A 回答 (2件)

参考にならないと思いますが、構造体でなくクラスを使うと、当方覚えたばかりのCallByNameで、For Eachのループで代入できました。

(当方VBAですが)。クラスの内容はpropertyだけなので割愛します。
Sub test()
Dim car As productClass
Dim field As Object
Dim rs As Object

Const adBSTR As Long = 8
Const adInteger As Long = 3
Const adSingle As Long = 4
Const adOpenStatic As Long = 3
Const adLockOptimistic As Long = 3

Set car = New productClass
With car
.Price = 50000
.Name = "onboro"
.Size = 2000.5
End With
Set rs = CreateObject("ADODB.Recordset")
With rs
.fields.Append "Price", adInteger
.fields.Append "Name", adBSTR, 50
.fields.Append "Size", adSingle
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open
End With
With rs
.addnew
For Each field In rs.fields
.fields(field.Name).Value = CallByName(car, field.Name, VbGet)
Next field
End With
With rs
For Each field In rs.fields
Debug.Print .fields(field.Name).Value
Next field
End With
Set rs = Nothing
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。

今ちょっと、時間がないので後でじっくり読ませていただきます。
わからないところとかあったら、また、よろしくお願いいたします。

お礼日時:2009/11/08 22:31

>With Product


With Car ですね

いろいろ考えてみたのですができないと思います。

この回答への補足

ありがとうございます。

無理のようですか。。。

手作業で書きます。

補足日時:2009/11/07 00:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています