- PR -

VB2005での単票形式DB修正画面

1
投稿者投稿内容
夕凪
常連さん
会議室デビュー日: 2006/04/30
投稿数: 24
投稿日時: 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とするとこの問題は発生しません。

以上、よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-01 00:02
質問の背景を理解できていないような気がしますが...

引用:

夕凪さんの書き込み (2006-04-30 23:51) より:

1 都道府県が現在選択中のものを表示せず、常に先頭の北海道(コード1)を表示してしまう。


これは、そのようにコードが一切書かれていないからではないでしょうか?
それとも、ウィザードを使ってノンコーディングで単票形式の DB 更新フォームを作っているのでしょうか?

引用:

2 コンボボックスに触ると「修正」ボタンのクリックが効かなくなってしまう。


普通に考えると、そういうコードが組まれているからでしょう。

以上の二点を踏まえると、ウィザードを使って「ノンコーディング」で、
組まれているように見えますが、とりあえず現状のソースにない部分 (あるつもりの分?) が気になります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
夕凪
常連さん
会議室デビュー日: 2006/04/30
投稿数: 24
投稿日時: 2006-05-01 19:47
じゃんぬねっとさん、レスありがとうございます。

2は私のうっかりでした。

ウィザードを用いずにフォームを作り、用意した項目のプロパティの(DataBindings)にデータセットの対応する項目を1つずつ設定してみたのですが、コンボボックスの場合も間違えてText欄に設定していました。SelectedValue欄に設定してみたところ、2の問題は解消されたのですが、コンボボックスのSelectedValueなので、東京都の人の場合は13という都道府県コードが渡り「東京都」と表示されるのを期待しているのですが、実際には「北海道」と表示されてしまうので、頭を抱えております。

もしかすると他にも勘違いしているかもしれないので、アドバイスいただけたら幸いです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-01 19:53
引用:

夕凪さんの書き込み (2006-05-01 19:47) より:

コンボボックスのSelectedValueなので、東京都の人の場合は13という都道府県コードが渡り「東京都」と表示されるのを期待しているのですが、実際には「北海道」と表示されてしまうので、頭を抱えております。


北海道ということは、SelectedIndex = 0 と考えることができますね。
つまり、SelectedValue で値を指定したつもりが、スルーされているということが考えられます。
だとすると、単に ValueMember の指定がなされていないのではないでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
夕凪
常連さん
会議室デビュー日: 2006/04/30
投稿数: 24
投稿日時: 2006-05-02 16:21
大変失礼しました。

コンボボックスに都道府県を列挙するアレイリストの定義をForm2_Loadプロシージャに記述していたのがいけなかったのでした。試しに、最初の投稿で記述したLoadForm2プロシージャの中の

住所録TableAdapter.FillByCode(住所録DataSet.ID,ID)

の前に移動してみたところ、無事「東京都」と表示されるようになりました。
つまり、コンボボックスを初期化した後にデータバインディングをしなければいけない、ということですね。

以上、お騒がせして申し訳ありませんでした。
1

スキルアップ/キャリアアップ(JOB@IT)