お世話になります。
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
VB2008とSQLSERVER2005で5件と0件でやってみましたが、そのような現象は出ませんでした。ソースも同じでやってみました。他の条件がからんでいませんか?
編集 削除すいません説明不足で、OSはVISAT BUSINESS SP1です
別のVISATのパソコンで確認しましたが同じ現象がでました
XP PROFESSIONAL SP2で確認したところ現象が起きません、
正常に動作しました。
VISTAでのVB2008のバグなのでしょうか?
だとしたら、コードを調整してにげる解決策はないのでしょうか?
すいませんVISTA環境がありませんのでお答できません。
他の方、お願い致します。
たつさん本当にありがとうございました。
その後、別な方法で解決できないかいろいろ調べました、
ボタン2を押した際にComboBox1.Items.Clear()やComboBox1.Clear()
を入れ初期化できないかとか、結果はエラーになります。
今まで開発したソフト全てに、コンボボックスに表示する際はdataDataSourceを使って行っております、なんとか現在のソースに
手をくわえ改善することができないでしょうか。