質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

4841閲覧

キーが配列、値がhashtableのHashtableを使いループ文を行いたいです。

xss

総合スコア36

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/11/20 05:29

編集2017/11/22 04:44

###前提・実現したいこと
こんにちは、閲覧ありがとうございます。プログラム初心者です。

キーが配列(ArrayList) 値がHashtableであるHashtableのlistStorage(変数名)があります。
listStorageのキーである配列にはDBから取得したレコードの件数(今回は3件)なので3レコード格納されていて、listStorageのValueであるHashtableのキーはDBから取得した3件分のレコードのカラム、値はキカラムごとの情報が格納されています。

このlistStorageを使い、listStorageに格納されているレコード数だけ回したいのでループ文を作成したいです。(今回はDBから3件のレコードを取得したので3回分)
For文とFor Each文どちらかレコード数分回したいのですが、うまく行きません。
どなたかご教授をよろしくお願いします。
###試したこと
listStorageのKeysを使い回そうとしましたがうまく回ってくれません。
今回はDBから3件分レコードが取れているのでクイックウォッチで見たところlistStorageのKeysとValueのCountは3と表示されています。
下記のコードだとCount=1分しか回ってくれません。

###クイックウォッチの中身

名前 listStorage 値 Count=1 種類 System.Collections.hashtable

名前[{System.Collections.ArrayList}] 値{System.Collections.ArrayList} 種類 なし

名前[Key] 値 Count=3 種類 Object{System.Collections.ArrayList}
名前Value 値 Count=3 種類 Object{System.Collections.ArrayList}

●listStorageからキーまでの指揮
(New System.Collections.Hashtable.HashtableDebugView(headDataHash).Items(0)).[Key]

###コード

'For文 For rowsCount = 0 To listStorage.Keys.Count - 1 Next 'For Each文 For Each rowsCount In listStorage.Keys Next

###補足情報(言語/FW/ツール等のバージョンなど)
開発環境 VisualStudio2017 vb.net

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

名前 listStorage 値 Count=1 種類 System.Collections.hashtable

とあるので、少なくともlistStorageには1件しか入っていないはずです。
おそらく、
listStorageの、1件目のKey = 3件登録されているArrayList
ListStorageの、1件目のValue = 3件登録されているHashTable
となっているのではないかと思います。
(試しにこちらの環境で試したところ、同じ表示がウォッチに出ました)

やりたいのは、
listStorageのKey = レコード番号か、もしくは取得した連番?
listStorageのValue = レコード番号に該当するレコードの、カラム名と値のHashTable
なのではないかと思うのですが、どうでしょうか。

もしその通りであれば、For文よりもlistStorageにKeyとValueをセットする処理を見直すべきかと思います。

投稿2017/11/20 08:58

cauliflowerjoe

総合スコア102

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

xss

2017/11/21 01:26

cauliflowerjoeさん回答ありがとうございます。やりたいことはおっしゃる通りです。 listStorageにセットする所に難があったみたいです。自分自身の知識が浅はかで良いのか悪いのかも分からない状況でしたが整理できましたlistStorageハッシュテーブルを見直して行きます。 コメントありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問