問題タブ [tableadapter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
4 に答える
2936 参照

c# - テーブル アダプターを使用する必要がありますか?

私は、C# と .NET、特にデータベース (私の場合は MS SQL Server 2008) を利用するアプリケーションを作成する方法についてさらに学習する方法として、個人的なプロジェクトに取り組んでいます。古い技術/アイデアを使用するか、新しいものを使用するかを選択できることを考えると、決定的な「正しい」方法が常にあるとは限らないことを理解していますが、新しいものを使用したいと思います。たとえば、このプロジェクトの私の目的の 1 つは、過去に行ったように WinForms を使用するのではなく、WPF を学ぶこと、または少なくとも WPF に慣れることです。

それに基づいて、データをデータベースに保存して取得することに関して、私は多くの方向性を持たずに混乱してきました。これまでのところ、両方を使用して動作させることができましたが、TableAdaptersそれらは「古い」動作方法のように感じます (これの根拠は、MSDN の Visual Studio 2005 の下にリストされていることです)。まず、この仮定は正しいですか?もしそうなら、データベースからデータを保存および取得する新しい方法は何ですか? 各方法が提供する長所と短所に感謝します。

MSDN をググって広範囲に検索しましたが、自分自身を混乱させることに成功しただけなので、正しい検索用語を使用しているとは思えません。

.NET 3.5、Visual Studio 2008、および Microsoft SQL Server 2008 を自由に使用できます。

どんなガイダンスでも大歓迎です。

0 投票する
2 に答える
66 参照

.net - .SLN の再構築時にデータベースの変更がロールバックされる (VS2008)

だから、皆さん。ここで興味深い出来事が起こっています。

最近まで SQL Server 2008 データベースに接続していた VS2008 で作成された Windows フォーム アプリケーションがあります。データベース内のさまざまなテーブルを編集、挿入、削除、または選択することができ、変更がコミットされました。SQL クエリを介してデータベースに変更を加えるたびに、その変更がデータベース内に反映されました。

しかし、ここ数日のうちに、データベース ファイルを VS studio .SLN にインポートし、データセットの数を 3 つから 1 つに減らしました (便宜上、異なるテーブルを組み合わせました)。データベースはコミットしません。

次の動作を観察しました。

1) テーブルへのレコードの挿入または削除がコミットされません。次にプログラムを実行すると、削除されたレコードが戻ってきて、挿入されたレコードはすべて失われます。以前は、Insert と Delete は、実行時に変更をコミットしているように見えました。

2) UPDATE コマンドを使用して変更を手動でコミットすると、追加されたレコードが残り、削除されたレコードは消えたままになりますが...

3) 何らかの理由でソリューションを再構築すると、データベースは最初にデータベースの場所を変更したときの状態に「リセット」されます。

このタイプの動作を作成するために、私が今別の方法で行っていることについて誰か考えがありますか?

0 投票する
1 に答える
1399 参照

c# - TableAdapterのパラメータは受け入れられません

現在TableAdaptersを設定しようとしていますが、パラメーターを使用できません(これにより非常に役に立たなくなります)-新しいクエリを作成するとき

近くにSQLエラーがあることを教えてくれます'@'...

C#でVS08を使用し、OleDB-Driverを使用してAccess-Databaseを使用しています

0 投票する
1 に答える
1938 参照

c# - テーブルアダプタでクエリの更新が機能しない

データベースの更新を照会するテーブルアダプターがあります。

しかし、実行しようとすると機能しません

アダプタには、選択または挿入するための他のクエリもいくつかあり、それらはすべて完全に正常に機能します。

idが正しいかどうか、またはステートメント内の他のエラーが原因で機能しないかどうかを確認しましたが、例外が発生しますね。

また、戻り値を確認すると、次の0ようになります。したがって、クエリは実際には行を編集しませんでしたが、理由はわかりません。正解です。idステートメントはテーブルアダプタ内で正しく作成され、構文も何もスローしません-エラー...

どうすればこの問題をもっとデバッグできますか?

0 投票する
2 に答える
558 参照

c# - DataTableにバインドされたASP.NETGridViewで数値を丸める最良の方法は何ですか?

DataTableにバインドされたGridViewがあり、次のようにTableAdapterを使用します。

このグリッドビューには、数字が含まれる多くの列が表示されます。ここで、数値を小数点以下1桁で数千単位で表示する必要があります。

たとえば、データベースの番号「24753」は、グリッドビューに「24,8」のように表示されます。

達成するための最もクリーンな方法は何ですか?

0 投票する
1 に答える
199 参照

.net - 挿入時の型付きデータセット ConstraintException

基本的に、階層データを含むテーブルがあります。

したがって、id 列と、各子の親の id 列を指すロールアップ列があります。

このテーブルは、TableAdapter で GetData() を使用してデータベースからロードされ、テーブルの主キー autoincrementsseed は次を使用して設定されます。

SELECT IDENT_CURRENT('テーブル名') + 1

階層内に新しい子が作成されたら、同じ TableAdapter で Update() を呼び出します。

ほとんどの場合、これは完全に機能しますが、ContraintException Column 'id' is constrainted to be unique problem が発生する場合があり、新しい行が追加されたときにのみ発生するようです。

通常、autoincrementsseed と autoincrementstep を -1 に設定するだけで、id 列を更新するとデータベースから正しい値が取得されますが、ロールアップ列は主キーの値に依存するため、これは機能しません。

データベースに適用する前に、すべての変更をユーザーが全体として確認する必要があるため、新しい行をそれぞれライブで適用することもできません。

何か案は?

編集:他のソースからこのテーブルに他の変更が加えられていないことを言及する必要があるため、ここには同時実行の問題はありません。

別の編集: 今日、更新メソッドが呼び出される前にテーブルの値を確認したところ、新しい行が主キーで適切に並べ替えられていないことに問題があることに気付きました。

たとえば、行は 960,961,963,962 になり、962 が挿入されたときに、962 が既に存在するというエラーが発生しました。更新によって行が順番に挿入されていれば、これは起こらなかったでしょう。

テーブルが主キー順ではない行にインデックスを付けるのはなぜですか?

0 投票する
1 に答える
1040 参照

vb.net - TableAdapterの更新が失敗する

AccessDB内の複数のDataTableに接続するVBWindowsフォームプロジェクトがあります。私のフォームには、これらのソースにバインドされているいくつかのテキストボックス、コンボボックス、および日時ピッカーがあります。特に1つのテーブルで、テキストボックスの1つを編集した後にテーブルアダプターを更新しようとすると、更新メソッドが失敗します。例外はスローされませんが、updateメソッドはゼロ値を返し、データは更新されません。更新、コンボボックスまたは日時ピッカーのみが編集された場合に機能しますが、テキストボックスも編集されるとすぐに、更新は機能しません。

プロジェクト内の他のDataTableは同じ方法で設定されますが、更新の問題はありません。この1つの特定のテーブルが問題を引き起こしているのか理解できません。どこで、何をトラブルシューティングするかについて、誰かが私に何か考えを教えてもらえますか?

ありがとう!

0 投票する
1 に答える
309 参照

database - CommandTextを変更するとパラメータが変更されます

vb.netのデザイナのTableAdapterに挿入コマンドのCommandTextを編集しようとしています。CommandTextに変更を加えるたびに、Visual Studio(2008)は、コマンドを編集する前に存在し、完全なガベージパラメーターの海に浸された1つのパラメーターで構成されるコレクションにパラメーターを自動的に変更します。その後、元に戻す必要があります(これがない限り)私が最初に編集を試みたのは、変更を破棄して再度開くためにDesignerを閉じるか、すべてのパラメーターを手動で完全なガベージではないものに戻す必要があることでした。

誰かがこのようなものを見たことがありますか、またはVisual Studioが私の注意深く手入れされたパラメーターを殺害するのを防ぐ方法を知っていますか?M $の名前を呪う別の理由を見つけることなく、CommandTextを変更する方法をいただければ幸いです。

0 投票する
7 に答える
15941 参照

c# - TableAdapterから@@IDENTITYを取得する

私は、数時間の冒険に変わった一見単純なタスクを完了しようとしてい@@IdentityますTableAdapter.Insert()

これが私のコードです:

1つの答えは、私がしなければならないのはを変更することだけだということを示唆していますExecuteMode。やってみました。これによりGetData()、動作を停止します(rowdataの代わりにスカラーを返すため)(GetData()を保持する必要があります)。また、insertedID変数がまだ1に設定されているという問題も解決しません。

TableAdapterで秒を作成し、TypedDataSet.XSDそのアダプタのプロパティを「スカラー」に設定しようとしましたが、変数が値1を取得しても失敗します。

生成された挿入コマンドは

また、「データテーブルの更新」(IDを取得するためのInsertステートメントとUpdateステートメントの後にselectステートメントを追加する)も設定されています。

環境

SQL Server 2008 R2、Visual Studio 2010、.NET 4、Windows XP、すべてローカルの同じマシン。

これは何が原因ですか?

編集/更新

VisualStudio内で自動生成されたコードを使用していることを明確にしたい。コードを生成した「ツール」が何であるかはわかりませんが、*。XSDファイルをダブルクリックすると、SQLテーブルスキーマと関連するTableAdapterのUIが表示されます。自動生成されたコードを使い続け、どういうわけかIDの取得を有効にしたい。ストアドプロシージャを使用して、これをすべて手作業で記述したくありません。

0 投票する
3 に答える
1822 参照

sql-server - テーブル アダプター クエリで、SQL Server Management Studio で再現できないエラーが発生する

Windows フォーム アプリケーション (.NET 2.0) の一部のレポートで使用される Visual Studio のテーブル アダプター デザイナーで定義されたいくつかのクエリを維持しています。アプリケーションを実行して特定のクエリを実行すると、次のエラーが表示されます。式をデータ型 smallmoney に変換すると、算術オーバーフロー エラーが発生します。クエリはかなり少量を生成するはずなので、私は驚いたので、SQL プロファイラーでクエリをキャプチャし、SQL Server Management Studio で (明らかに同じデータベースで) まったく同じクエリを実行しました。ここで、クエリは問題なく実行され、smallmoney は "33.00" です。214,748.3647 境界のどこにもありません。

デバッグを複雑にするために、この問題はクライアントの QA 環境でのみ発生し、ローカルでは再現できません (また、法的な理由により、データベースを開発環境にコピーすることはできません)。これにより、クライアントの環境で新しいバージョンをビルドして展開するのに最大 30 分かかるため、デバッグ サイクルが非常に遅くなります。そのため、できるだけ少ない実験でこの問題を特定するためのヒントをいただければ幸いです。SQL Studio でクエリをいじっても、同じエラーを発生させることはできないため、あまり役に立ちません。

クエリは次のとおりです。

TotalExVat および TotalVat は smallmoney ではありません。データ テーブルの「Total」フィールドは、「System.Decimal」にマップされます。式で smallmoney を money にキャストすることもできますが、SQL スタジオで正常に実行されるのに、なぜそれを行う必要があるのでしょうか?

私が取得する例外は次のとおりです。

アップデート

SUM(i.TotalExVat + i.TotalVat) を SUM(i.TotalExVat) + SUM(i.TotalVat) に変更するとエラーが解消されましたが、生成された結果に小さなお金のオーバーフローがないため、その理由はまだわかりません。

更新 2

新しい問題。スモールマネーのキャスティングの問題はなくなりましたが、タイムアウトの問題が発生しました。同じレポートで使用される別のクエリは、SSMS で実行した場合、約 5 ~ 6 秒で実行されます。テーブル アダプタで実行すると、10 分後にタイムアウトします。他のクエリは期待どおりに実行され、SSMS と同じ結果が生成されます。これは、テーブル アダプターがデータベースにクエリを実行しようとすると、何かがおかしいという私の疑いを裏付けるものです。

アップデート 3

これは奇妙になり始めています。小額問題のクエリは、レポートを生成するために使用される一連のクエリの 5 番目のクエリを埋めます。最初の更新に記載されている修正を適用した後、最初のクエリでタイムアウトが発生します。後のクエリで smallmoney がオーバーフローしていたとき、そのクエリは問題なく実行されました。その理由は何でしょうか?

smallmoney クエリでエラーが発生したときに実行され、動作しているときに実行されていないクエリ:

smallmoney クエリの結果が 30.0.0.0 である日付間隔を制限すると、上記のクエリは機能します。smallmoney クエリも失敗していた期間に日付間隔を拡張すると、タイムアウトが発生します。smallmoney クエリが失敗したときに正常に実行されたときに、smallmoney クエリの前に実行されるクエリでタイムアウトを取得するにはどうすればよいですか? SSMS ですべてのクエリを実行すると、期待どおりに動作します。ところで、クエリは同期的に実行されます。