- - PR -
VB2005での単票形式DB修正画面
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-30 23:51
初めて投稿しますので、よろしくお願いします。
VB2005で、単票形式のDB修正画面を作ろうとしています。 実際に作ろうとしているものとは異なりますが、ID・氏名と都道府県が記録されている住所録を例にして質問します。 Form1でコンボボックスを用いて修正対象を選択し、Form1の「修正」をクリックするとForm2が開くので修正し、Form2の「修正」をクリックして保存、という画面構成です。また、住所録DataSet.xsdというデータソースを用意し、TableAdapterに修正対象のデータのみを読み書きするためのFillByCodeとUpdateByCodeのメソッドを作成しました。 ●Form1のコード Private Sub 修正_Click(〜省略) Handles 修正.Click Dim FrmOpen as New Form2 FrmOpen.LoadForm2(Me.ID.SelectedValue) FrmOpen.ShowDialog() End Sub ●Form2のコード Friend Sub LoadForm2(ByVal ID As Integer) 住所録TableAdapter.FillByCode(住所録DataSet.ID,ID) End Sub Private Sub 修正_Click(〜省略) Handles 修正.Click 住所録TableAdapter.UpdateByCode(Me.都道府県.SelectedValue,CInt(Me.ID.Text)) Me.Close() End Sub なお、都道府県はコンボボックスで選択し、DBには都道府県コード(例:東京都=13)を記録するものとします。 ここで、Form2について問題が2点出ました。 1 都道府県が現在選択中のものを表示せず、常に先頭の北海道(コード1)を表示してしまう。 2 コンボボックスに触ると「修正」ボタンのクリックが効かなくなってしまう。 この問題の回避方を、どなたかご教授願えるでしょうか。 ちなみに、都道府県を選択式にせず「東京都」などと記入するテキストボックスとし(もちろんDBにも文字列で記録する)、UpdateByCodeメソッドの引数もMe.都道府県.Textとするとこの問題は発生しません。 以上、よろしくお願いします。 | ||||||||
|
投稿日時: 2006-05-01 00:02
質問の背景を理解できていないような気がしますが...
これは、そのようにコードが一切書かれていないからではないでしょうか? それとも、ウィザードを使ってノンコーディングで単票形式の DB 更新フォームを作っているのでしょうか?
普通に考えると、そういうコードが組まれているからでしょう。 以上の二点を踏まえると、ウィザードを使って「ノンコーディング」で、 組まれているように見えますが、とりあえず現状のソースにない部分 (あるつもりの分?) が気になります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-01 19:47
じゃんぬねっとさん、レスありがとうございます。
2は私のうっかりでした。 ウィザードを用いずにフォームを作り、用意した項目のプロパティの(DataBindings)にデータセットの対応する項目を1つずつ設定してみたのですが、コンボボックスの場合も間違えてText欄に設定していました。SelectedValue欄に設定してみたところ、2の問題は解消されたのですが、コンボボックスのSelectedValueなので、東京都の人の場合は13という都道府県コードが渡り「東京都」と表示されるのを期待しているのですが、実際には「北海道」と表示されてしまうので、頭を抱えております。 もしかすると他にも勘違いしているかもしれないので、アドバイスいただけたら幸いです。 | ||||||||
|
投稿日時: 2006-05-01 19:53
北海道ということは、SelectedIndex = 0 と考えることができますね。 つまり、SelectedValue で値を指定したつもりが、スルーされているということが考えられます。 だとすると、単に ValueMember の指定がなされていないのではないでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-05-02 16:21
大変失礼しました。
コンボボックスに都道府県を列挙するアレイリストの定義をForm2_Loadプロシージャに記述していたのがいけなかったのでした。試しに、最初の投稿で記述したLoadForm2プロシージャの中の 住所録TableAdapter.FillByCode(住所録DataSet.ID,ID) の前に移動してみたところ、無事「東京都」と表示されるようになりました。 つまり、コンボボックスを初期化した後にデータバインディングをしなければいけない、ということですね。 以上、お騒がせして申し訳ありませんでした。 |
1