コンボボックスのドロップダウンリストに前回設定が残ってしまう


ターチ  2009-02-09 03:24:19  No: 145746

お世話になります。
VB2008とSQLSERVER2005でプログラムを開発しています、
戸惑ってしまい教えて頂きたく投稿しました。

フォームにコンボボックス1つとコマンドボタン2つを貼り付け
ボタンをクリックすることにより、コンボボックスの内容を
読みかえるプログラムを作っています。

メーカーテーブル(レコード件数5件)データ有り  ボタン1で読込
担当者テーブル(レコード件数0件)データ無し    ボタン2で読込

現象①
ボタン1ボタン2の順で選択した後ドロップダウンリスト
を見るとデータは表示されないのに、5件分の空白でリスト
が表示されます。

現象②
ちなみにフォーム表示後、ボタン2を選択しドロップダウン
リストを見ると1件分の空白でリストが表示されます。

コンボボックスの設定を初期化することは難しいのでしょうか?
ComboBox1.MaxDropDownItemsでの設定は無視されるのでしょうか?

①での現象を②に改善したいのです、気づいた事があればなんでも
良いのでご教授下さい、よろしくお願いします。

Imports System.Data.SqlClient

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
    End Sub

    Private Sub Maker()
        Using cn As New SqlConnection(My.Settings.SqlConnect)
            cn.Open()
            Dim sql As String
            Dim table As New DataTable

            sql = "SELECT * FROM メーカー"
            Dim Adapter As New SqlDataAdapter(sql, cn)
            Adapter.Fill(table)

            ComboBox1.DataSource = table
            ComboBox1.DropDownWidth = 100
            ComboBox1.DisplayMember = "メーカー名"
            ComboBox1.SelectedIndex = -1
        End Using
    End Sub

    Private Sub Charge()
        Using cn As New SqlConnection(My.Settings.SqlConnect)
            cn.Open()
            Dim sql As String
            Dim table As New DataTable

            sql = "SELECT * FROM 担当者"
            Dim Adapter As New SqlDataAdapter(sql, cn)
            Adapter.Fill(table)

            ComboBox1.DataSource = table
            ComboBox1.DropDownWidth = 100
            ComboBox1.DisplayMember = "担当者名"
            ComboBox1.SelectedIndex = -1
            ComboBox1.MaxDropDownItems = 1
        End Using
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Call Maker()
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Call Charge()
    End Sub
End Class


たつ  2009-02-09 08:11:29  No: 145747

VB2008とSQLSERVER2005で5件と0件でやってみましたが、そのような現象は出ませんでした。ソースも同じでやってみました。他の条件がからんでいませんか?


ターチ  2009-02-09 17:46:59  No: 145748

すいません説明不足で、OSはVISAT BUSINESS SP1です
別のVISATのパソコンで確認しましたが同じ現象がでました
XP PROFESSIONAL SP2で確認したところ現象が起きません、
正常に動作しました。

VISTAでのVB2008のバグなのでしょうか?
だとしたら、コードを調整してにげる解決策はないのでしょうか?


たつ  2009-02-10 06:49:43  No: 145749

すいませんVISTA環境がありませんのでお答できません。
他の方、お願い致します。


ターチ  2009-02-11 02:02:56  No: 145750

たつさん本当にありがとうございました。

その後、別な方法で解決できないかいろいろ調べました、
ボタン2を押した際にComboBox1.Items.Clear()やComboBox1.Clear()
を入れ初期化できないかとか、結果はエラーになります。

今まで開発したソフト全てに、コンボボックスに表示する際はdataDataSourceを使って行っております、なんとか現在のソースに
手をくわえ改善することができないでしょうか。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加