データセット、バインディングソース、およびバインドされたコントロールで動作するインサートがどのように動作するのか混乱します。挿入用のテキストボックスに基づいてバインディングソースを更新する
シナリオを検討します。追加または更新モードのフォームがあります。更新モードは簡単で、主キーがフォームに渡され、datesetが設定され、バインディングソースがデータセットから更新されます。コードは次のようになります。
Me.DS_Edit_Phantom_Block_taPhantomBlock1.Fill(Me.DS_Edit_Phantom_Block1.PHANTOM_BLOCK, CInt(mPhntmSessionNum))
bsPhantomBlock.DataSource = DS_Edit_Phantom_Block1.PHANTOM_BLOCK
挿入物ははるかに難しいと証明されています。 next_sequence関数(私はOracleを使用しています)からプライマリキーを取得できますが、結果セットは空です。
私がしたいことは、ユーザーが必要なフォームを入力してからOKをクリックし、clickイベントでバインディングを行うことです。
私は頭や尾を作ることはできません。私は、すべての単一のコントロールを経ずに、ユーザがデータセットに戻ってくるデータ(外部キーの制約のために必要とされる)を得ることができません。
これは私が動作しないものです。外部キーの制約のためにUpdateを実行するとクラッシュするので、コントロールからデータを取得する必要があります。データセットを取得するには、手動で各データを取得する必要はありません。
Dim drvPhantomBlock As DataRowView = TryCast(Me.bsPhantomBlock.Current, DataRowView)
Dim drvPhantom As DataRowView = TryCast(Me.bsPhantom.Current, DataRowView)
If mViewAddEdit = ViewAddEditEnum.Add Then ' do this first
drvPhantomBlock = DirectCast(bsPhantomBlock.AddNew(), DataRowView)
Dim drPhantomBlock As DataRow = drvPhantomBlock.Row
drPhantomBlock("PHNTM_SESSION_NO") = mPhntmSessionNum
drPhantomBlock("PHANTOM_BLOCK_NO") = mPhntmBlockNum
drvPhantomBlock.EndEdit()
Me.DS_Edit_Phantom_Block_taPhantomBlock1.Update(DS_Edit_Phantom_Block1.PHANTOM_BLOCK)
bsPhantomBlock.DataSource = Me.DS_Edit_Phantom_Block_taPhantomBlock1