2

標準のスマート コントロールで ListBox を作成し、データベースに接続しました。クエリビルダーを介して事前に生成したデータを取得するので、これを行うと:

this.calibrate_swipesTableAdapter.Fill(this.xperdex_crandallDataSet.calibrate_swipes);

データを含むリストボックスを取得します。

次に、データのチャンクを追加すると、次のようになります。

toadd["card_number"] = card_number;
this.xperdex_crandallDataSet.Tables["calibrate_swipes"].Rows.Add(toadd);

それも機能します。それはうまくいきます。閉じると、すべての情報が失われます。アダプターと AcceptChanges を更新しますよね?

そんなに早くない。電話すると

this.calibrate_swipesTableAdapter.Update(this.xperdex_crandallDataSet.calibrate_swipes);

「「更新」の定義が含まれていません」というメッセージが表示されます。

何を与える?充填を行うのと同じものが更新メソッドを持たない理由はわかりません。

4

1 に答える 1

6

次のように記載されているTableAdapter の概要をご覧になることをお勧めします。

メイン クエリに十分な情報がある場合は、TableAdapter の生成時に InsertCommand、UpdateCommand、および DeleteCommand コマンドが既定で作成されます。TableAdapter のメイン クエリが複数のテーブル SELECT ステートメントである場合、デザイナーが InsertCommand、UpdateCommand、および DeleteCommand を生成できない可能性があります。これらのコマンドが生成されない場合、TableAdapter.Update メソッドの実行時にエラーが発生する可能性があります。

次の 2 つの選択肢があります。

  • メインクエリを変更する
  • UpdateCommand を変更します。

UpdateCommand を変更するには、TableAdapter 用に生成されたクラスの名前を調べます。コードは次のようになります。


SqlCommand yourUpdateCommand = new SqlCommand("UPDATE...", connection);
this.calibrate_swipesTableAdapter.Adapter.UpdateCommand = yourUpdateCommand;

アップデート:

コメンターが言ったように、コマンドが生成されない可能性がある他の条件があります。コメントを参照してください。

于 2009-09-08T23:10:41.837 に答える