evalの代用になるものはありますか?


徳永 望  2004-11-08 10:24:32  No: 117435  IP: [192.*.*.*]

環境は VB6.0 + ADO2.5 です。

Dim RSValue as New ADODB.RecordSet

(中略)

strName = "RSValue"
eval ("lngSubst = " & strName & ".Fields('ID').Value")

と同等な処理を、VB6.0で行いたく思うのですが、可能なのでしょうか?
つまり、文字列で指定されたレコードセット変数のフィールドを参照したいのですが。

代替手段についてご教授頂ければ幸いです。

編集 削除
ひろ  2004-11-08 12:17:34  No: 117436  IP: [192.*.*.*]

RSValue.Fields("COL_A").Value
で参照できませんか?

編集 削除
魔界の仮面弁士  2004-11-08 13:08:12  No: 117437  IP: [192.*.*.*]

> つまり、文字列で指定されたレコードセット変数のフィールドを参照したいのですが。
フィールド名ではなく、Recordset変数側を文字列にするのですか…。

何のためにそのような事をしたいのか、目的が見えませんが、
機能的には、MSDataShape(Microsoft DataShape Provider)の
リシェイプ機能を使う事で、そのような事ができます。

'Recordsetを表す名前を取得する。
strName = RS1.Properties("Reshape Name").Value

'取得した名前を使って、別の問い合わせを行う
Set RS2 = cnDataShape.Execute("SHAPE " & strName)

'リシェイプされた内容を確認。
Debug.Print RS2.GetString()

編集 削除
徳永 望  2004-11-08 13:55:21  No: 117438  IP: [192.*.*.*]

> 何のためにそのような事をしたいのか、目的が見えませんが、

・フォーム上の各コントロールに、レコードセットの各フィールドの値を配置したい
・しかし各コントロールのDataSourceプロパティを設定して連結モードにすると、各コントロールの値の変更時などで不都合が生じる
・なので関数で、自動的に各フィールドの値を各コントロールに代入させたい

という経緯がありました。
どのコントロールに、どのレコードセットのどのフィールドの値が入るかを連想配列としてまとめて、
それを基に自動的に代入処理を行いたかったわけです。


もう少し知識をつけてから再度質問したいと思います。失礼しました。

編集 削除
ひろ  2004-11-09 08:59:55  No: 117439  IP: [192.*.*.*]

Collectionオブジェクトを連想配列の代わりに使うという手は?

編集 削除