DOBON.NET DOBON.NETプログラミング掲示板過去ログ

マスタの更新が反映されない

環境/言語:[Vista VB.NET]
分類:[.NET]

いつもお世話になっております。
いつも教えていただいてばかりで大変恐縮です。

今回も教えていただきたいことがあります。
よろしくお願いいたします。


顧客マスタに顧客を登録し、その際顧客CDを取得するプログラムを作りました。
その顧客DCをほかのテーブルでDBにつないだコンボボックスに表示させようと思うのですが、
顧客マスタに登録した内容は一度終了し、再起動しないと登録した内容がコンボボックスに反映されません。

どうすれば登録された顧客CDを再起動せずに反映させることができますか?
その際、どんなプログラムを書けばよいか教えてください。

OS:Vista
言語:VB2008
接続方法に関する情報や、実際のコードを記載して頂けると答えやすくなると思いますよ。

> その顧客DCをほかのテーブルでDBにつないだコンボボックスに表示させようと思うのですが、

ちょっとこの部分が分かりにくかったのですが、データベースの更新後にバインドの更新は行っていますか?
お早いお返事ありがとうございます。


> 接続方法に関する情報や、実際のコードを記載して頂けると答えやすくなると思いますよ。
申し訳ありません。気がつかなくて・・・。
開発環境がVB2008エクスプレスエディションなのですが、
ComboBoxのプロパティでデータソースに顧客CDをバインディングし、
ディスプレイメンバに顧客CDを選択しています。
このディスプレイメンバが更新されるとよいのですが・・。


> データベースの更新後にバインドの更新は行っていますか?
バインドの更新とはいったいどういうものなのでしょうか?
なにぶん初心者なのでわからないことだらけで・・・・
>どんなプログラムを書けばよいか教えてください。

大和さんが記述されているコードがどのようなものか分からない以上書けません。
接続方法というのは、ADOでSQLServerに接続しているのか、DAOでODBCに接続しているのか、
ADOでAccessに接続しているのか…そういうことを確認したかったんです。
この情報によってコードの書き方はまちまちなんです。

>バインドの更新とはいったいどういうものなのでしょうか?

1.新規で作成したFormにComboBox1、Button1、DataSet1、DataTable1BindingSourceを用意。
2.DataSet1.xsdを作成してDataTable1を用意し、Column1〜Column3を追加。

''' <summary>
''' コンボボックスのバインドの設定を行う
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'*******************************************
'変数・定数の宣言
'*******************************************
Dim Table As DataTable = Me.DataSet1.DataTable1
Dim Row As DataRow
Dim bs As BindingSource

'*******************************************
'処理開始
'*******************************************
'DataTable1のDataRowと同じ構造を持つDataRowを新規作成
Row = Table.NewRow

'新規作成したDataRowに値を設定
Row("Column1") = "ゆうて"
Row("Column2") = "いみや"
Row("Column3") = "おうきむ"

'新規作成したDataRowをDataTable1に追加する
Table.Rows.Add(Row)

'バインドの設定
bs = New BindingSource
bs.DataSource = Table.Rows(0).ItemArray
Me.ComboBox1.DataSource = bs

End Sub

''' <summary>
''' コンボボックスのバインドの更新を行う
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'*******************************************
'変数・定数の宣言
'*******************************************
Dim Table As DataTable = Me.DataSet1.DataTable1
Dim Row As DataRow
Dim bs As BindingSource

'*******************************************
'処理開始
'*******************************************
'DataTable1のDataRowと同じ構造を持つDataRowを新規作成
Row = Table.NewRow

'DataTable1の行コレクションを初期化
Table.Rows.Clear()

'新規作成したDataRowに値を設定
Row("Column1") = "こうほ"
Row("Column2") = "りいゆ"
Row("Column3") = "うじとり"

'新規作成したDataRowをDataTable1に追加する
Table.Rows.Add(Row)

'バインドの更新
bs = New BindingSource
bs.DataSource = Table.Rows(0).ItemArray
Me.ComboBox1.DataSource = bs
End Sub

あまり良い例ではありませんが、上記を実行してみて下さい。Button1の押下イベントでコンボボックスの中身が更新されます。
ちなみに「'バインドの更新」以下をコメントアウトすると、
DataTable1の値は更新されているのにComboBox1の値は更新されていない状態になります。
ありがとうございました!

上記のコードを参考にさせていただき、無事できました!


お世話になりました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板