次のエラー メッセージが表示されます。
DataRow コレクションを渡すときに有効な UpdateCommand が必要です
私が提供している更新コマンドは、前のコード行と非常によく似ています。これを修正するにはどうすればよいですか?
使用されているデータベースは非常に単純です。1 対多の関係を持つ 2 つのテーブル:
CREATE TABLE [db].dbo.tb_TestHOLDERx
(
HolderID VARCHAR(5) NOT NULL,
Name VARCHAR(30),
"Address" VARCHAR(30),
CONSTRAINT tb_pkx PRIMARY KEY (HolderID)
);
GO
CREATE TABLE [db].dbo.tb_TestALLOTMENTx
(
Number INT NOT NULL,
HolderID VARCHAR(5) NOT NULL,
"Length" INTEGER NOT NULL,
Paid VARCHAR(5) NOT NULL,
FloodRisk VARCHAR(10) NOT NULL,
CONSTRAINT tb_pkax PRIMARY KEY (Number,HolderID),
CONSTRAINT tbx_fkx FOREIGN KEY (HolderID)
REFERENCES dbo.tb_TestHOLDERx(HolderID)
);
GO
INSERT INTO [db].dbo.tb_TestHOLDERx
values
('B14','ROY', '3 Stern Way'),
('N7','Jamela', '15 Jeune Street');
GO
INSERT INTO [db].dbo.tb_TestALLOTMENTx
values
(1,'B14',30,'No','Low'),
(2,'N7',30,'Yes','Medium'),
(3,'N7',15,'Yes','High');
GO
Windows フォームは次のようになります。
ボタン「Use Combo ID」クリック イベントのハンドラは次のとおりです。
private void useComboID_Click(object sender, EventArgs e) {
if(combHOLDER.SelectedIndex!=-1) {
allotHOLDERid.Text = combHOLDER.Text;
}
}
次に、左側のテキスト ボックスの値が、右上のコンボ ボックスで選択された値で上書きされます。
次に、[DB に保存] ボタンを使用して、変更をローカル データセットに保存し、次のイベント ハンドラーでデータベースを更新します。
private void saveChanges_Click(object sender, EventArgs e) {
tbTestHOLDERxBindingSource.EndEdit();
tbTestALLOTMENTxBindingSource.EndEdit();
try {
tb_TestHOLDERxTableAdapter.Update(wHAnalysisDataSet.tb_TestHOLDERx);
tb_TestALLOTMENTxTableAdapter.Update(wHAnalysisDataSet.tb_TestALLOTMENTx); //<<<<<<ERROR HERE
MessageBox.Show("ok");
} catch(Exception x) {
MessageBox.Show(x.Message);
}
}
コードのマークされた行をコメントアウトすると、問題なく実行されますが、この行では以前に詳細化されたエラーが発生します。
更新を修正して、変更を DB に書き戻すにはどうすればよいですか?