- PR -

BindingContextについて

1
投稿者投稿内容
mopooh
会議室デビュー日: 2004/03/04
投稿数: 6
投稿日時: 2004-03-04 10:21
お世話になります。
[VB.NET-Oracle8i-Windows2000]

現在データアダプタとデータセットを利用して画面を作成しており、
新規ボタンを押下すると"列XXXXにNULLを使用することはできません。"
とメッセージが出ます。新規ボタンのクリックイベントとしては

Try
Me.BindingContext(Ds, "Table1").EndCurrentEdit()
Me.BindingContext(Ds, "Table1").AddNew()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Exception")
End Try

と記述しています。
確かにTable1のXXXXはNULLを許可していないのですが
Me.BindingContext(Ds, "Table1").AddNew()で新規入力エリア
を作っているだけなのに、なぜこのような現象がでるのでしょうか?
ご教授お願いいたします。
じいじ
大ベテラン
会議室デビュー日: 2003/11/11
投稿数: 223
投稿日時: 2004-03-04 10:33
これって、2003/12/16 13:52 「未記入」さん投稿のリメーク? ということにしておきます。

[ メッセージ編集済み 編集者: じいじ 編集日時 2004-03-04 11:04 ]
mopooh
会議室デビュー日: 2004/03/04
投稿数: 6
投稿日時: 2004-03-04 10:38
お世話になります。
内容はかぶっているかもしれませんが
まったくの別人ですので。。。
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-03-04 13:51
AddNewした時点でデータ検証されているからだと思います。

SuspendBindingでデータ連結を中断して
データが入力されてからResumeBindingでデータ連結を再開したらだめですか
mopooh
会議室デビュー日: 2004/03/04
投稿数: 6
投稿日時: 2004-03-04 14:10
お世話になります。
ご回答有難うございます。
以下のように新規作成時にSuspendBinding
更新時にResumeBindingとしてみたのですが
同じように"列XXXXにNULLを使用することはできません。"
とメッセージが出ます。記述の仕方間違っていますか?

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
新規

Try
 Me.BindingContext(Ds, "Table1").SuspendBinding()
 Me.BindingContext(Ds, "Table1").EndCurrentEdit()
 Me.BindingContext(Ds, "Table1").AddNew()
Catch ex As Exception
 MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Exception")
End Try

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
更新

Try
 Me.BindingContext(Ds, "Table1").ResumeBinding()
 Me.BindingContext(Ds, "Table1").EndCurrentEdit()
 OleDbDataAdapter.Update(Ds, "Table1")
 MsgBox("レコードを更新しました", MsgBoxStyle.Information, "情報")
Catch ex As Exception
 MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Exception")
End Try

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
ゆうじゅん
ぬし
会議室デビュー日: 2004/01/16
投稿数: 347
投稿日時: 2004-03-04 14:58
そうなるとテーブルのほうでチェックされていると思われますので

SuspendBinding
ResumeBinding

Ds.Table1.BeginLoadData()
Ds.Table1.EndLoadData()
に置き換えてみてください
これでもだめだったら、さらに
SuspendBinding
ResumeBinding
を追加してみてください

mopooh
会議室デビュー日: 2004/03/04
投稿数: 6
投稿日時: 2004-03-04 15:21
お世話になります。
Ds.Table1.BeginLoadData()
Ds.Table1.EndLoadData()
を適用してみましたが今度は
"DataBindingは、すべてのバインドに適切な行を一覧で見つけることができませんでした。"
とメッセージが出ました。
ちなみにFormは単票形式です(DataGridは使用していません)
また、Form_LoadでOleDbDataAdapter.Fill(Ds,"Table1")しないと
ダメですか?

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
新規

Try
Ds.Table1.BeginLoadData()
 Me.BindingContext(Ds, "Table1").EndCurrentEdit()
 Me.BindingContext(Ds, "Table1").AddNew()
Catch ex As Exception
 MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Exception")
End Try

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
更新

Try
Ds.Table1.EndLoadData()
 Me.BindingContext(Ds, "Table1").EndCurrentEdit()
 OleDbDataAdapter.Update(Ds, "Table1")
 MsgBox("レコードを更新しました", MsgBoxStyle.Information, "情報")
Catch ex As Exception
 MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Exception")
End Try

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
1

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