- PR -

【VB.Net Windows】CheckBox.Checked = True の設定がされません。

1
投稿者投稿内容
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-12-24 11:28
【状況説明】
WindowsXP、VB2005EE Access2003 でWindowsアプリケーションを開発中です。
単純な名簿を作成しています。法人用フォームと個人用フォームがあり、個人フォームの場合は区分フィールド
(Boolean)を下のようにフィルターに掛けてフォームの右側にListBoxで氏名をリスト表示しています。
−−> 名簿BindingSource.Filter = "区分 = True"
このListBoxから名前を選択して、選択した人の詳細内容を名簿BindingSourceにバインドした各種の
コントロールでフォームの左側に表示させています。

また、この画面の左下に[新規作成]ボタンを配置して、イベントハンドラを次のように記述しています。
※主キー(ID)のコード体系はA-000、 A-001等となっています。
コード:

Dim NN, N0 As Integer
Dim SS As String
'------------新規ID番号を作成--------------------------------
N0 = 0
Dim dr As DataRow
For Each dr In Me.abcDataSet.名簿.Rows
SS = CStr(dr("ID"))
If SS.Substring(0, 1) = "A" Then
NN = CInt(SS.Substring(2, 3)) '-------主キーの数字部を取り出す
If NN > N0 Then
N0 = NN
End If
End If
Next
'------------新しいレコードを追加-------------------------------
名簿BindingSource.AddNew()
CheckBox_区分.Checked = True '------主キー(ID)にTrue(個人)を設定
TextBox_ID.Text = "A-" & (N0 + 1).ToString.PadLeft(3, "0"c) '-主キー設定


【質問内容】
上記の内容で名簿閲覧や新規作成は正常に動作していますが、区分フィールドのTrueだけが設定されません。
[新規作成]ボタンを押すとCheckBox_区分にチェックが入り新規作成画面が表示されますが[登録]ボタンで登録
しても区分フィールドはFalseとなっていてTrueが設定されていません。(その他の項目は正常に登録されます)

ところがCheckBox_区分をマウスでクリックしてTrueに設定してから登録すると正常(True)に登録されています。

ちなみにこの画面にありましたCheckBox_既婚(既婚フィールドとバインド)に対しても同じように次のような
コードを加え、登録すると既婚フィールドには正常(True)に登録されます。
−−> CheckBox_既婚.Checked = True

念のためにCheckBox_既婚をコピーしてCheckBox_区分を作成しなおしましたが結果は同じでした。

画面Load時のフィルター(BindingSource.Filter = "区分 = True")や主キーに関連しているのでしょうか
よろしくご教示下さい。

追加修正:[新規作成]ボタンを押すと・・以降3行追加
[ メッセージ編集済み 編集者: One.net 編集日時 2008-12-24 13:45 ]

[ メッセージ編集済み 編集者: One.net 編集日時 2008-12-24 15:10 ]
One.net
大ベテラン
会議室デビュー日: 2008/03/01
投稿数: 202
投稿日時: 2008-12-25 17:33
スレッド主の One.net です。
自己回答します。やはり個人用フォームのLoad時に次のようにフィルターを掛けていたのが問題だったようです。
コード:
Me.名簿TableAdapter.Fill(Me.abcDataSet.名簿)
名簿BindingSource.Filter = "区分 = True"


この2行目を削除すると[新規作成]ボタンを押して、次のコードで正常に区分フィールドにTrueが登録されました
−−> CheckBox_区分.Checked = True
フィルターの代わりに名簿TableAdapter.Fillで"区分 = True"SELECT してを使いました。
以上、はっきりした原因はわかりませんが、解決しました。大変お騒がせしました。
1

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