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

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)
引数の数が一致していません。または不正なプロパティを指定しています。

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

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

A 回答 (2件)


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
------------------
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/11/22 13:13

例)


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

↑ここのところを

Set RetObj = CreateRec()

とすれば取れます。

この回答への補足

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

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

補足日時:2002/11/21 18:00
    • good
    • 1

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