1

コードは次のとおりです。

DataSet1.CashRow CashRow = MainDataSet.Cash.NewCashRow();
CashRow.SetIdNull();
CashRow.Date = CashItem.Date;
CashRow.Description = CashItem.Description;
CashRow.Amount = CashItem.Amount;
MainDataSet.Cash.Rows.Add(CashRow);

初めて問題なく動作します。ただし、サイクルに入れて単純に2倍にすると、行は追加されなくなります。アプリケーションを閉じて、もう一度起動する必要があります。

更新:DataSetに接続されているDataGridViewがあります。これは問題を引き起こす可能性がありますか?この問題は本当に奇妙で、1週間これを修正しようとしています。たぶん、行を追加する別の方法がありますか?

更新2:原因が見つかりました: "System.Data.ConstraintException:列'Id'は一意になるように制約されています。値''は既に存在します。"

4

1 に答える 1

0

これを試して:

DataSet1.CashRow CashRow = MainDataSet.Cash.NewCashRow();
CashRow.Date = CashItem.Date;
CashRow.Description = CashItem.Description;
CashRow.Amount = CashItem.Amount;

MainDataSet.Cash.AddCashRow(CashRow);

CashTableAdapter.Update(MainDataSet);

それでも1行だけが更新される場合は、次のようにこのブロックを関数として配置します。

private void CreateCashRow (DateTime date, string description, int amount)
{
   DataSet1.CashRow CashRow = MainDataSet.Cash.NewCashRow();
   CashRow.Date = date;
   CashRow.Description = description;
   CashRow.Amount = amount;

   MainDataSet.Cash.AddCashRow(CashRow);

   CashTableAdapter.Update(MainDataSet);
}

そして、必要な回数だけ関数を呼び出します。

テーブルにPrimaryKeyがあることを確認する必要があります

  • また、CashRowで行ったように、変数とタイプに同じような名前を使用しないことをお勧めします。
于 2012-08-05T09:08:16.347 に答える