こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Dictionaryについてその2

CreateObject("Scripting.Dictionary")でセットしたオブジェクトは関数の戻り値として取得できますか?


例)
---------------------------------------------
Dim RetObj
Dim RecValue
RetObj = CreateRec()

RecValue = RetObj.Item("1")
Response.Write(recValue)


Private Function CreateRec()
Dim RecSet

Set RecSet = CreateObject("Scripting.Dictionary")
RecSet.Add "1","山田"

CreateRec = RecSet

Exit Function

End Function
-------------------------------------------------

現在のエラー状況
●エラー タイプ
Microsoft VBScript 実行時エラー (0x800A01C2)
引数の数が一致していません。または不正なプロパティを指定しています。

(余談)セットしたオブジェクトを引数渡しは出来るのに戻り値としてとれないのは・・・知識不足ですが不思議です。。

ご教授をお願いいたします

投稿日時 - 2002-11-20 11:07:02

QNo.408964

すぐに回答ほしいです

質問者が選んだベストアンサー


RecordSetでも取れるはずですが?
ソースがそれではよく判らないので断言は出来ませんが。
ただ、なんだったかなー。
一回別のモノに落とさないと関数の中・外の出入りが
出来なかったのがあったような。。。
はっきりエラーが出たソースを書いてもらえれば判るんですが。

ちなみに、sousi-niさんが質問に書いている関数↓ですが
------------------
Private Function CreateRec()
  Dim RecSet

  Set RecSet = CreateObject("Scripting.Dictionary")
  RecSet.Add "1","山田"

  CreateRec = RecSet

  Exit Function

End Function
------------------

こう書き直せます↓。この方がシャープ。
何やってるのか判りやすいし。
------------------
Private Function CreateRec()
  Set CreateRec = CreateObject("Scripting.Dictionary")
  CreateRec.Add "1","山田"
End Function
------------------

投稿日時 - 2002-11-22 02:05:16

お礼

ご教授ありがとうございます。別投稿でもご協力していただき大変感謝しております。私自身も調べておりますので、どうかよろしくお願いいたします。

投稿日時 - 2002-11-22 13:13:38

ANo.2

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

o84

例)
---------------------------------------------
Dim RetObj
Dim RecValue
RetObj = CreateRec()

↑ここのところを

Set RetObj = CreateRec()

とすれば取れます。

投稿日時 - 2002-11-20 17:32:07

補足

ご教授ありがとうございます。
Set G_RecMap = Server.CreateObject("ADODB.Recordset")
'レコードオープン
G_RecMap.Open SQLPrm, G_Conn, 3, 3, 1

上記のようにレコードセットしたオブジェクトは返せますでしょうか?同じ要領で行うと上手く行かないのですが。。。お手数ですが、よろしくお願いします

投稿日時 - 2002-11-21 18:00:22

あなたにオススメの質問