【C#】 mdbファイルとDataGridViewについて【Access】

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ホヅミ
記事: 110
登録日時: 9年前

【C#】 mdbファイルとDataGridViewについて【Access】

#1

投稿記事 by ホヅミ » 7年前

現在C#とOLEを使ってDataGridViewにmdbファイル(←古いですな!!)のデータベースを表示させています。
DataGridViewからmdbファイルのデータベースを編集する(アップデートコマンドを発行しデータセットの更新を行う)ことはできたのですが
逆のアプローチ(mdbファイルの変更をリアルタイムでDataGridViewへ反映)を行うことができません。
現在行っている方法はタイマーイベントで逐一アダプターのFillを行う方法をとっています。
こちらはDataGridViewのスクロールバーを下げることができませんし、プログラムが重たいです。(たとえC++/CLIで作ったとしても重かったです。)

mdbファイルの変更時にDataGridViewを更新させるにはどうすればいいのか、知恵を貸していただけると幸いです。

non
記事: 1097
登録日時: 9年前

Re: 【C#】 mdbファイルとDataGridViewについて【Access】

#2

投稿記事 by non » 7年前

C#は使ってないけど、
Fillした後、DataGridViewのDataSourceに再セットするのではないでしょうか。
non

YuO
記事: 941
登録日時: 9年前
住所: 東京都世田谷区

Re: 【C#】 mdbファイルとDataGridViewについて【Access】

#3

投稿記事 by YuO » 7年前

まず,変更の監視ですが,サーバーからの通知機構があるRDB (e.g. SQL Server 2005 or later) ならば,それをトリガに変更を受け取ることができますが,OLEにはそのような機構がありません。
なので,タイマーの方法を使うか,別スレッドに分離するか,になります。

更新の前後で選択中のセルを保持するようにしたり,ADO.NETの部分を非同期にすることにより,使い勝手はマシにはなるかと思います。
DataAdapter系にAsyncメソッドもBegin/End系のメソッドもコールバックイベントもないため,別スレッド化しないと非同期になりませんが……。
# UIスレッドでRDBMSへのSQLを発行するのは基本的に悪手です。

ホヅミ
記事: 110
登録日時: 9年前

Re: 【C#】 mdbファイルとDataGridViewについて【Access】

#4

投稿記事 by ホヅミ » 7年前

non様
YuO様

知恵を貸していただきありがとうございました。
とても参考になりました。
タイマーイベントよりもbgWorkのほうが気持ち軽いかな?(主観)と思ったのでbgWorkでモニターしようかなと思います。

ISLe
記事: 2645
登録日時: 9年前
連絡を取る:

Re: 【C#】 mdbファイルとDataGridViewについて【Access】

#5

投稿記事 by ISLe » 7年前

FileSystemWatcherは使えませんか?

ホヅミ
記事: 110
登録日時: 9年前

Re: 【C#】 mdbファイルとDataGridViewについて【Access】

#6

投稿記事 by ホヅミ » 7年前

Timer,bgwork,FileSystemWatcherそれぞれを使った感想

・Timer:タイマーイベントが発生するたびに処理落ち発生
・bgwork:スレッドループが回転するたびに処理落ち発生
・FileSysWatcher:ファイルが変更されイベントが発生した時に処理落ち発生。イベント発生はファイルを変更してから4~10秒ほどでした。

もし、検索でここに行きついたとき、参考にしてくれると嬉しいです。(参考になれば^^;)

閉鎖

“C言語何でも質問掲示板” へ戻る