0

次のエラー メッセージが表示されます。

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 に書き戻すにはどうすればよいですか?

4

1 に答える 1