0

Access テーブルの内容を DataGridView で取得して表示する際に、非常に奇妙な問題が発生しています。問題は次のとおりです。

私は 2 つのフォームを持つ VS2010 のアプリケーションに取り組んでいます。ボタンを押すと、メイン フォームに 2 番目のフォームが表示されます。2 番目のフォームには、BindingSource (または DataSet など) を使用してローカル PC 上の Access テーブルにリンクされた DataGridView が含まれています。グリッドの Data Source プロパティを新しいデータ ソースとしてテーブルに最初に設定すると (つまり、すぐにプロジェクトに追加することを意味します)、グリッドはテーブルの現在の内容を正確に反映します。ただし、その時点以降、グリッド上のテーブルの表示内容を完全に変更することはできません。内容はそれらの行としてスタックされます。私が書いているプログラムとAccess自体の両方を介して行を追加および削除した後でも、グリッドのコンテンツは決して現在のデータを反映するように変更します。ゴースト コンテンツは、プログラムのリセット (プログラムを閉じて再度開く) やデータ ソースの再割り当てによっても保持されます。

私が行った最も進歩したことは、グリッドを完全にクリアできるようになったことです。

grdTableDisplay.DataSource = Nothing
grdTableDisplay.Rows.Clear()

ただし、使用してデータ ソースを再割り当てすると、

grdTableDisplay.DataSource = TableDisplayBindingSource

ゴーストデータが返ってきます。これにより、バインディング ソースまたはデータ セットが、最初のデータ ソースのセットアップ後にまったく更新されていないと思われます。

誰でも私に提供できるこの問題についての洞察を大いに感謝します。この問題により、アプリケーションのテストが妨げられており、おそらく非常に簡単に解決できます。前もって感謝します!

4

1 に答える 1

0

MSDNをしばらく掘り下げた後、これを解決できたことがわかりました。グリッドのデータ ソースへの接続をセットアップすると、データの種類 (データベース) や接続文字列などをセットアップするのに役立つウィザードが表示されます。接続文字列の段階を過ぎると、何らかのイベントによって自動的に更新されるデータベース ファイルのローカル コピーを保存するかどうかを尋ねるポップアップ ウィンドウが表示されます。ダメって言って!!!このファイルはまったく更新されず、VS2010 はデータ ソースをローカル コピーにリダイレクトしますが、ローカル コピーは更新されないため、グリッドに古くて役に立たないデータが残ります。ローカル データベースのコピーを保存せずに接続をやり直した後、グリッドは最終的にテーブルの現在の内容を反映します。これにより、実際には部屋の外にある部屋の照明スイッチに相当するものを探すという頭痛の種がなくなることを願っています!

于 2013-07-10T12:18:24.047 に答える