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


徳永 望  2004-11-08 19:24:32  No: 117435

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

Dim RSValue as New ADODB.RecordSet

(中略)

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

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

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


ひろ  2004-11-08 21:17:34  No: 117436

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


魔界の仮面弁士  2004-11-08 22:08:12  No: 117437

> つまり、文字列で指定されたレコードセット変数のフィールドを参照したいのですが。
フィールド名ではなく、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 22:55:21  No: 117438

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

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

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

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


ひろ  2004-11-09 17:59:55  No: 117439

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


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

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






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