0

私は次のような構造を持っています

Private wells() As Dictionary

各辞書に存在するキー「アクティブ」が少なくとも一度はtrueに設定されているかどうかを知る必要があります。

ループせずにアーカイブする方法はありますか?何かのようなもの

dim hasActive as boolean
hasActive = wells()["active"] = true

今のところループしていますが、アプリは15年前に作成されており、それぞれにさらに多くのレコードと辞書キーが追加されているため、ループは待つのが賢明な時間よりも時間がかかり始めました。

ありがとう

4

2 に答える 2

0

直接行うことはできませんが、辞書の配列をラップし、それらの項目を操作できるようにするメソッドを提供するクラス モジュールを簡単に作成できます。含まれているクラスは、項目「アクティブ」が True である辞書の数を追跡することもできます。これらのメソッドは、「アクティブな」アイテムが True に設定されている場合はカウントを増やし、アクティブなアイテムが False に設定されている場合はカウントを減らします。次に、カウントを調べて、辞書のいずれかに現在 True に設定されている「アクティブな」項目があるかどうかを確認できます。

Class_Initialize で配列と辞書をインスタンス化し、カウントをゼロに設定します。アイテムを追加および削除するメソッドを (必要な他のメソッドと共に) 提供し、「アクティブな」アイテムが True に設定されている辞書があるかどうかを通知するプロパティを提供します。

もちろん、これは、配列や辞書に直接アクセスするのではなく、プロジェクト内のすべてのコードを変更してクラスを使用する必要があることを意味します。とはいえ、それほど難しいことではないと思います。

于 2013-01-04T21:10:47.203 に答える
0

簡単な答え: いいえ。

この時点で、別のデータ構造またはデータベースを検討する必要があるように思えます。ディクショナリのような単純な単一キー/値ペア テクノロジーには限界があります。「Arrays of Dictionary」は、最初からかなり奇妙に感じます。

組み立てられた ADO Recordset は、複数の値/列を持つことができる便利な「スーパー コレクション」オブジェクトを作成し、「最適化」動的プロパティを介してキーとして頻繁に使用する必要があるフィールドにインデックスを付けることができます。

于 2013-01-03T22:32:47.840 に答える