• 締切済み

二次元のDictionary

ASPは全くの初心者です。 今回、二次元のDictionaryを使って値を表示させたいのですが 行き詰ってしまいました。 以下のコードをどのように変換すれば良いですか? <%@ LANGUAGE = VBSCRIPT %> <% call dictionary_create() Sub dictionary_create() Dim objParent Dim objChild dim x Set objParent = CreateObject("Scripting.Dictionary") For x=0 to 9 Set objChild = CreateObject("Scripting.Dictionary") objChild.Add "kaigi", "会議名"&i objChild.Add "Id", "0"&i objParent.Add x, objChild Set objChild = Nothing Response.Write objParent.Item("ConfName") Next end sub %>

みんなの回答

noname#158371
noname#158371
回答No.1

だいぶソースコードを間違えている?感じだったのと、 元々、どういう仕様で二次元配列にデータを格納させたいのか 言わないと質問しても正しい回答を頂けませんよ。 さて、そんな何がしたいのかわからない中、半分私の憶測でやってみました。きっとこんなことがしたいんですよね? <%@ LANGUAGE = VBSCRIPT %> <% call dictionary_create() Sub dictionary_create() Dim objParent Dim objChild Dim objCurrentParent dim x Set objParent = CreateObject("Scripting.Dictionary") For x = 0 To 9   Set objChild = CreateObject("Scripting.Dictionary")   objChild.Add "kaigi", "会議名"& x   objChild.Add "Id", "0" & x   objParent.Add x, objChild   Set objChild = Nothing ''' そうじゃない! '''Response.Write objParent.Item("ConfName")   Set objCurrentParent = objParent.Item(x)   Response.Write objCurrentParent.Item("kaigi") & "<br />"   Response.Write objCurrentParent.Item("Id") & "<br />"   Set objCurrentParent = Nothing Next end sub %> ■実行結果 会議名0 00 会議名1 01 会議名2 02 会議名3 03 会議名4 04 会議名5 05 会議名6 06 会議名7 07 会議名8 08 会議名9 09 ご参考になれば幸いです。

taku620
質問者

お礼

ご丁寧な説明ありがとうございました。 次回からはしっかり要件を伝えるよう心がけます。

関連するQ&A

  • 2次元のdictionary

    こんにちは。 recordsetの結果をDictionaryにいれたいと思っています。 環境はWindows Vista、vbScriptで書いています。 set dc = createobject("scripting.dictionary") Set rs = Server.CreateObject("ADODB.Recordset") rs.open (sql文), con  for i = 0 to rs.recordcount -1 for j = 0 to rs.fields.count - 1 dc.add rs.fields(j).name, rs.fields(j).value next next ちょっとイメージっぽく書きましたが(このままではエラーでます)、要は複数のフィールドを持つ複数のレコードを入れられないかということです。 色々調べたりしてみたのですがわかりません。 できないのかな?と思いました。 もしできるなら書き方をご教授頂けたらと思います。 よろしくお願いします。

  • 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) 引数の数が一致していません。または不正なプロパティを指定しています。 (余談)セットしたオブジェクトを引数渡しは出来るのに戻り値としてとれないのは・・・知識不足ですが不思議です。。 ご教授をお願いいたします

  • Dictionaryについて3

    簡単に作ったソースなのですが、 以下の構文でエラーが発生します。 Dictionaryで作成したオブジェクトの束を配列として 格納させ、更にその配列を復帰値として取得し、メインルーチンにて展開させようと思っています。 以下のソースで考えられることございますか? 色々調べているのですが、述べ2日ハマっています。 ---------------------------------------------- Dim AAA,BBB(),CCC Set CCC=TEST 'CCCオブジェクトを展開し、値を画面に表示させる ’(未着手) private function TEST() Set AAA = CreateObject("Scripting.Dictionary") AAA.Add "1","111" ReDim Preserve BBB(0) Set BBB(0) = AAA Set TEST=BBB ←エラー個所 Exit Function End Function --------------------------------------------- エラー タイプ Microsoft VBScript 実行時エラー (0x800A01A8) オブジェクトがありません。

  • VBAのdictionaryでAddの使い方

    VBAでつぎのコードを実行すると、a,A1.1の後、a,A2.2と表示します。 dicには、a,A2.2の設定をしていないのになぜこうなるのでしょうか? どなたか教えてください。 Sub sample() Dim dic As Object Dim subDic As Object Set dic = CreateObject("Scripting.Dictionary") Set subDic = CreateObject("Scripting.Dictionary") subDic.Add "A1", 1 dic.Add "a", subDic subDic.Add "A2", 2 '結果表示 Dim key1 As Variant Dim key2 As Variant For Each key1 In dic.keys For Each key2 In dic(key1).keys MsgBox key1 & "," & key2 & ". " & dic(key1)(key2) Next Next End Sub

  • EXCEL「Dictionaryオブジェクト」宣言

    EXCEL VBAにて Dictionaryオブジェクトを利用しようと思い ネット検索して調べていると・・・ 1)Dim MyDic As Object Set MyDic=CreateObject("Scripting.Dictionary") 2) Dim MyDic As Scripting.Dictionary Set MyDic = New Scripting.Dictionary 3) Dim MyDic Set MyDic=CreateObject("Scripting.Dictionary") 4) Dim myDic As New Scripting.Dictionary 上記の4パターンが出てきました。 いずれも「連想配列」を使うものなのですが、 オブジェクト型、バリアント型、Newキーワードで宣言・・・ 4つの違いがイマイチ理解できません。 違いを教えてください。

  • VBAにて Dictionaryを使いまわしたい

    Dictionaryオブジェクトをデータベースとして、 色々なマクロから使うことは出来るのでしょうか? 以下のようなイメージですが、もちろん、これは動きません。 Sub データ()を関数にすると、その都度、辞書に登録という作業が生じるため、損をした気になるので質問しました。 Sub データ() 省略 Set myDic = CreateObject("Scripting.Dictionary") 省略 myDic.Add "菊", "50円" myDic.Add "バラ", "100円" myDic.Add "ひまわり", "100円" 省略 End Sub Sub Aさんの買い物合計() 合計=myDic.Item("菊")+myDic.Item("ひまわり") End Sub Sub Bさんの買い物合計() 合計=myDic.Item("バラ")+myDic.Item("ひまわり") End Sub

  • Dictionaryの使用に先立って・・・

    いつもお世話になっています。 CreateObject("Scripting.Dictionary")を使用して、 DBから取得したレコードを格納したいのですが、VBのようにコレクションのプロパティを使用することは出来ないのでしょうか? ------------------------------------------------- 例) レコード取得一覧: Filds("ID"),Filds("NAME") 処理を行いたい構想: Dim AAA 'コレクション Dim gRst 'レコードセットオブジェクト Set AAA = CreateObject("Scripting.Dictionary") Do Until gRst.EOF   AAA.ID = gRst.Filds("ID")   AAA.NAME = gRst.Filds("NAME")   '次のレコード  gRst.MoveNext Loop ------------------------------------------------ 大変お手数ですが、ご教授をお願いいたします。

  • 【VB6.0】DictionaryのAddが遅い

    VB6.0で次のようなコーディングをしています。 Dim FNmDic As Variant Dim HelpFile As File Set FNmDic = CreateObject("Scripting.Dictionary") FNmDic.Add Left(HelpFile.Name, 3), HelpFile.Path このFNmDic.Addに2秒もかかってしまいます。 HelpFileは、先頭3文字が数字のファイルを指しており、キーの役目をしています。 HelpFileがローカルにあるファイルをさしている場合は、遅くないのですが、 ほかの端末の共有フォルダにあるファイルを指すとAddが遅いです。 また、この現象はエンドユーザの環境で発生し、私の開発環境では発生していません。 Addを1秒以下にしたいのですが、何か解決の糸口はあるでしょうか?

  • Excelマクロ

    お世話になります。 Excelマクロについて、ざっくりとした質問なのですが、 以下のマクロを実行した時に、オブジェクトXXXには、 どのようなものを格納できるのでしょうか。 Dim XXX As Object Set XXX = CreateObject("Scripting.Dictionary") 「CreateObject」と「Scripting.Dictionary」の使い方を調べてはみたのですが、 それぞれの使い方が今ひとつ分かりません。 お力添えいただきたいと思います。 よろしくお願いいたします。 以上

  • DictionaryとRedim

    Windows XP & Visual studio2005を使用しています。 以下のようなコードを書きました。 Sub Main() Dim dic1 As New Dictionary(Of Integer, Integer()) Dim dic2 As New Dictionary(Of Integer, Integer()) Dim arr1(3) As Integer Dim arr2(3) As Integer arr1(0) = 0 arr1(1) = 1 arr1(2) = 2 arr1(3) = 3 dic1.Add(0, arr1) arr1(0) = 100 arr1(1) = 101 arr1(2) = 102 arr1(3) = 103 dic1.Add(100, arr1) arr2(0) = 0 arr2(1) = 1 arr2(2) = 2 arr2(3) = 3 dic2.Add(0, arr2) ReDim arr2(3) arr2(0) = 100 arr2(1) = 101 arr2(2) = 102 arr2(3) = 103 dic2.Add(100, arr2) '*ここで止めてdic1とdic2の内容をみる dic1 = Nothing dic2 = Nothing End Sub コメントの位置で止めて、dic1とdic2の内容を見ると dic1の方は、keyの値にかかわらず、100~103が入っていますが dic2の方は、それぞれ0~3と100~103が入っています。 どうしてこのような違いが出てくるのでしょうか?

専門家に質問してみよう