6

私は反抗的な VS2008 DataSet デザイナーと戦っているようです。私は単純な 2 テーブルのデータセット ソリューションと思われるものを実行しようとしてきました。1 つのテーブルは、他のテーブルに格納されている整数値の単なるテキスト上の意味です。基本データ設計 101.

Table1
CharField1
CharField2
IntForeignKeyField1
etc

Table2
IntPrimaryKey1
ValueForKeyField

それは私が抱えている問題に実際には影響しません.2番目のテーブルから値を読み取る以外に何もしたくないので、クライアントのDataGridViewComboBoxColumnでそれらを選択できるようにします-私はそうしますクライアントでそれらを編集しないでください。しかし、私は脱線します。

これは Web サービスにあり、厳密に型指定されたデータセットをこの Web サービスのクライアントに配信したかったので、DataSet Designer を使用して TableAdapter とすべての配管を構築することにしました。維持。

そこで、プリティ ボックスを作成し、select ステートメントを編集して、テーブル アダプターが使用するすべての Insert、Update、および Delete コマンドを作成するようデザイナーに指示しました。それは喜んで義務付けられ、私が求めたとおりにすべてが行われたことを知らせてくれました。

しかし、Update ステートメントを使用しようとすると、有効な Update ステートメントがないというエラーが表示されました。Web 上で同様の問題を抱えている人を無益に探し回った後、私はデータセットの XML を掘り下げました。案の定、Update ステートメントも Delete ステートメントもありません。

プロジェクトから DataSet を完全に削除して再作成しようとしましたが、同じ結果になりました。完了したと報告されたにもかかわらず、Update または Delete ステートメントは作成されませんでした。

最終的に、別のプロジェクトから設計された別のデータセットを調べて、手動で Update ステートメント XML を構築したので、Web サービスは現在機能しています。しかし、私は自分の変更がデザイナーから開始された編集を通じて持続するということをまったく信じていません。何か案は?

フィードバックをありがとう、デイブ

4

5 に答える 5

14

テーブルに一意の主キーが定義されていない可能性がありますか?

于 2009-07-29T12:03:29.170 に答える
0

私は解決策を見つけたと思います。1) メイン テーブルのみの TableAdapter を作成し、TableAdapter UPDATE プロシージャ (TableAdapter プロパティ ウィンドウに保存) をコピーします。3) 古い UPDATE プロシージャを、空白になった TableAdapter UPDATE プロシージャに貼り付けます。4) DataGridView を作成した後、両方のテーブルからフィールドを表示し、メイン テーブルを更新できます。INSERT および DELETE コマンドの手順を繰り返します。

両方のテーブルを更新することが目標の場合は、Web で TableAdapter 親/子の更新情報を調べてみてください。良いリンクは次のとおりです

于 2009-07-30T15:37:27.293 に答える
0

ジョージが提案したことは素晴らしいことです。「挿入、更新、削除ステートメントの生成」オプションを有効にする必要があります。

ただし、VS2013 では、selete ステートメントで不要なテーブル修飾子を使用すると、IDE が混乱し、SELECT ステートメントと INSERT ステートメントのみが生成される可能性があります。この修飾子を削除するだけで問題ありません。固有の PK も持っていることを確認してください。

テーブルの特定の行のみを返すためにフィルターを適用するなどの複雑な塗りつぶしを使用する必要がある場合は、フォーム ロード イベントで特定の選択ステートメントを使用してデータ テーブルを埋めることができます。このように、生成された INSERT、UPDATE、および DELETE ステートメントは引き続き機能します。これは、DELETE および UPDATE が PK で機能するためです。

于 2014-07-15T02:05:51.100 に答える
0

私は同じ問題を抱えています。複数のテーブルのフィールドを使用すると、TableAdapter が正しく機能しません。次の記事からソリューションを再作成することができました:「結合を使用するように TableAdapter を更新する」。

http://www.asp.net/learn/data-access/tutorial-69-vb.aspx

このソリューションには、独自の Select/Update/Insert/Delete プロシージャの作成が含まれます。残念ながら、sqlserver データベースのソリューションに従うことはできましたが、ローカルの Access データベースではまだ機能しません。ストアド プロシージャのオプションはすべてグレー表示されます。

幸運を!

于 2009-07-29T22:11:39.910 に答える
0

Just ran into the same basic problem. I told the data designer to create all insert, update, delete statements. When I went to update one of the tables there was no update available. I finally went into the .xsd file created by the data designer (just double clicked to open it in the IDE). I then right clicked on the title bar of the table that had the issue and selected the configure option. From there I clicked the 'Advanced Options' button, then selected the 'Generate Insert, Update, Delete Statements' option. After pressing Okay I checked my project and the update was available for the table adapter.

于 2009-08-26T21:09:59.370 に答える