2011-11-16 28 views
0

データベースから値を追加するとき、リストボックスは重複する値を避ける必要があります。テーブルの例重複する値を避ける方法

のList1ボックス

Value 

100 
200' 
300 

については

私が同じ値001を追加した場合、リストボックスが値を避ける必要があります。 400を追加しようとすると、リストボックスに追加できるようにする必要があります。

+0

データを取得するときに、SQL文でDISTINCTキーワードを使用できませんか? –

+0

既にリストボックスでValueが使用可能である場合は、何をすべきか...? – Gopal

+0

「同じ値を追加する」と言ったら、意味はありましたか? "同じ値100を加えてください"?もしそうなら、あなたが追加と言うとき、あなたはそれをデータベースに追加しているのですか?それとも、VBコードでそれを追加しているということですか? – jworrin

答えて

3

リストボックスを作成するときは、辞書を使用してこれらの値をすべて保存する必要があります。値が存在する場合は

その後、次のことが確認できます。

If Not dict.Exists(key) Then 
    dict.Add key, value 
    listitem.Add key 
End If 

詳細については、このスレッドを参照してください:VB6のListBoxコントロールを決定するための方法を持っていないDoes VBA have Dictionary Structure?

+0

質問はVB6ですが、VBAは簡単に変換する必要があります。私はその質問に書き直した。 – JimmyPena

+0

ありがとうございます。 VB6でもうまくいくようです:http://stackoverflow.com/questions/2789830/iterate-through-a-vb6-dictionary – JMax

1

ご質問が分かりませんが、データベースから戻ってくるときに値を制限することをお勧めします。データベースがどのように見えるのかについては、DISTINCTを検索し、リストボックスのリストを返すクエリで使用することをお勧めします。

+0

既に値がリストボックスで利用可能である場合は、何をすべきか...? – Gopal

0

重複を追加しないようにするには、リスト内のすべてのエントリをチェックする必要があります。 これはドメイン固有の方法で回避できますが、コードが何をしているかによって異なります。

しかし... jworrinが言ったことを繰り返し述べるには、表示したいデータだけを取得するようにデータベースクエリを再構成する必要があります。

1

それはすでに与えられた含まれている場合値。 ListBoxのList()およびListCountプロパティを使用して検索を行う必要があります。 ListBoxがSorted = Trueの場合、バイナリ検索パターンを使用できます。それ以外の場合は、順次検索でなければなりません。

データバインディング(DataSource、DataFieldなど)ではなく、AddItemを使用して項目を設定していると仮定しています。データバインディングを使用している場合は、SQLを操作し、おそらくDISTINCTを使用する必要があります.jworrinが推奨しているとおりです。

関連する問題