環境は VB6.0 + ADO2.5 です。
Dim RSValue as New ADODB.RecordSet
(中略)
strName = "RSValue"
eval ("lngSubst = " & strName & ".Fields('ID').Value")
と同等な処理を、VB6.0で行いたく思うのですが、可能なのでしょうか?
つまり、文字列で指定されたレコードセット変数のフィールドを参照したいのですが。
代替手段についてご教授頂ければ幸いです。
RSValue.Fields("COL_A").Value
で参照できませんか?
> つまり、文字列で指定されたレコードセット変数のフィールドを参照したいのですが。
フィールド名ではなく、Recordset変数側を文字列にするのですか…。
何のためにそのような事をしたいのか、目的が見えませんが、
機能的には、MSDataShape(Microsoft DataShape Provider)の
リシェイプ機能を使う事で、そのような事ができます。
'Recordsetを表す名前を取得する。
strName = RS1.Properties("Reshape Name").Value
'取得した名前を使って、別の問い合わせを行う
Set RS2 = cnDataShape.Execute("SHAPE " & strName)
'リシェイプされた内容を確認。
Debug.Print RS2.GetString()
> 何のためにそのような事をしたいのか、目的が見えませんが、
・フォーム上の各コントロールに、レコードセットの各フィールドの値を配置したい
・しかし各コントロールのDataSourceプロパティを設定して連結モードにすると、各コントロールの値の変更時などで不都合が生じる
・なので関数で、自動的に各フィールドの値を各コントロールに代入させたい
という経緯がありました。
どのコントロールに、どのレコードセットのどのフィールドの値が入るかを連想配列としてまとめて、
それを基に自動的に代入処理を行いたかったわけです。
もう少し知識をつけてから再度質問したいと思います。失礼しました。
Collectionオブジェクトを連想配列の代わりに使うという手は?
ツイート | ![]() |