■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#765-0MDBファイルの更新情報取得 げじもん2001-10-10(水) 13:05
     #766-0RE#765:MDBファイルの更新情報取得 だい2001-10-10(水) 14:51
     #768-0RE#766:MDBファイルの更新情報取得 げじもん2001-10-10(水) 16:07
     #770-0RE#768:MDBファイルの更新情報取得 だい2001-10-10(水) 17:18
     #771-0RE#770:MDBファイルの更新情報取得 げじもん2001-10-10(水) 17:32
     #773-0RE#771:MDBファイルの更新情報取得 だい2001-10-10(水) 17:49
     #776-0RE#773:MDBファイルの更新情報取得 げじもん2001-10-11(木) 09:10
     #777-0RE#776:MSDEでの更新情報取得 だい2001-10-11(木) 10:09
     #779-0RE#777:MSDEでの更新情報取得 げじもん2001-10-11(木) 11:04
     #780-0RE#768:MDBファイルの更新情報取得 なぼ2001-10-11(木) 14:55
     #786-0RE#780:MDBファイルの更新情報取得 げじもん2001-10-12(金) 11:57
     #819-0RE#780:MDBファイルの更新情報取得 げじもん2001-10-17(水) 14:54
#765-0
MDBファイルの更新情報取得
はじめまして、げじもんと申します
VBSのころで意見をもらった後にここを発見してデータベース専用の掲示板があったので
マルチポストになってしまってすみませんが、書き込みさせていただきます。
よろしくおねがいします。

[MDB]:Access 2000
[DBアクセス] ADO2.5
MDBの内容を表示するプログラムの作成を行っています。
さらに、MDBを監視して、MDBの内容が更新されたとき、
更新内容をアプリケーションの表示に反映させたいと思っています。

Accessでは、複数のAccessから一つのMDBファイルをオ-プンし、
レコードのフィールド情報を表示させ、あるAccessよりフィールドの内容を
書き換えると、他のAccessも変更された(書き換られた)内容が自動更新(オプションで設定した間隔)されます。

上記の更新方法として、以下の方法が推測できますが、実現方法が分からない状態です。

アクセスより定期的に更新情報を取得する。
→更新情報を取得するためのI/F?が見当たりません...。

その根拠として
MSの検索で下記の一文を発見したので。
-------------------------------------------------------------------
PageTimeout は、このバックグラウンド スレッドがデータベース ファイルに
新しく更新が行われたかどうかを確認する周期を決定します。
(関連リンクの詳細)
-------------------------------------------------------------------
ココを読むと、一定の周期でチェックをして更新があった場合にシートを更新しているらしいので何とかしてできないものかとおもいまして。

[関連リンク]
http://www.microsoft.com/JAPAN/support/kb/articles/JP202/3/76.HTM

 レコードの追加・削除を含めて、MDBの内容変更を取得できる方法をご存知でしたら、ご教授願えないでしょうか。
#766-0
RE#765:MDBファイルの更新情報取得
タイマーを用いて一定周期でテーブルの更新日時を再読み込みし、
変更があった「テーブル単位」でデータの再読み込み&表示を行うことは可能かと思われます。

レコード単位やフィールド単位でとなると、
トリガー機能を持ったDBMSでないと実現は難しいかもしれませんね。



#768-0
RE#766:MDBファイルの更新情報取得
レスありがとうございます。m(__)m

> タイマーを用いて一定周期でテーブルの更新日時を再読み込みし、
> 変更があった「テーブル単位」でデータの再読み込み&表示を行うことは可能かと思われます。
テーブルについている更新日時ってテーブルのデザイン変更時でないと、日付が変更されなかったと思うのですが?
#ADOXでTABLEのプロパティ参照しています。
レコード更新[削除、追加]があったときはどこが更新されるのですか?

> レコード単位やフィールド単位でとなると、
> トリガー機能を持ったDBMSでないと実現は難しいかもしれませんね。
とりあいず、テーブルの更新状態がわかれば、そのときだけテーブルの更新をしますので
レコードやフィールド単位なんて高度なことは、望みません・・・今は(ーー;

アクセスってどうやってるんでしょうか?

#770-0
RE#768:MDBファイルの更新情報取得
各テーブルを別MDBファイルへ格納し、各MDBファイルの更新日時をチェックする
というのを実験レベルで試みたことがあります。
実際には、テーブルが更新されたタイミングではなく、MDBファイルへの書き込みが行われたタイミングになります。
但し、MDBファイルを「読んで閉じるだけ」でもタイムスタンプが変わっていくので、
レコードが変更された「可能性がある」というサインにとどまります。

やはり、変更の有無に関わらず、アプリで一定間隔でテーブルごとに再読み込みを行う
のが現実的かと思われます。

>アクセスってどうやってるんでしょうか?




#771-0
RE#770:MDBファイルの更新情報取得
> 各テーブルを別MDBファイルへ格納し、各MDBファイルの更新日時をチェックする
> というのを実験レベルで試みたことがあります。
> 実際には、テーブルが更新されたタイミングではなく、MDBファイルへの書き込みが行われたタイミングになります。
APが大体出来ていて、後からこのことをつけることになったので、DBの構成等は変更したくないので何か無いかなとおもいまして。

> 但し、MDBファイルを「読んで閉じるだけ」でもタイムスタンプが変わっていくので、
> レコードが変更された「可能性がある」というサインにとどまります。
上記のことがあるので、どのテーブルが更新されたか分からないのでこの案はつかえませんでした。
 
> やはり、変更の有無に関わらず、アプリで一定間隔でテーブルごとに再読み込みを行う
> のが現実的かと思われます。
試してみたのですが更新されていない時にもテーブルごと更新するとレスポンスがわるくなってしまいました。
#773-0
RE#771:MDBファイルの更新情報取得
> APが大体出来ていて、後からこのことをつけることになったので、DBの構成等は変更したくないので何か無いかなとおもいまして。

「後から」の機能が結構重いですよね。

> > やはり、変更の有無に関わらず、アプリで一定間隔でテーブルごとに再読み込みを行う
> > のが現実的かと思われます。
> 試してみたのですが更新されていない時にもテーブルごと更新するとレスポンスがわるくなってしまいました。

更新の間隔が短すぎるのかもしれませんが、
業務要件を鑑みてバランス的に最適な値を探ることになるかもしれません。

また、MDBファイルの共有に関しては、

PCDNのページにある、
間違いだらけのデータアクセス開発
http://www.int21.co.jp/pcdn/vb/howto/datacces.html

なぼ様のページ
http://www.naboki.net/access/index.html
地獄への階段の項の、
 ネットワークでの使用 
 排他制御の罠 

などをご参照の上、
定期的なバックアップと最適化は必ず行った方がよろしいかと思われます。
#776-0
RE#773:MDBファイルの更新情報取得
> 「後から」の機能が結構重いですよね。
先輩のプロプラムに追加できないかと言うことなので・・・
 
> 更新の間隔が短すぎるのかもしれませんが、
> 業務要件を鑑みてバランス的に最適な値を探ることになるかもしれません。

 
> PCDNのページにある、間違いだらけのデータアクセス開発
クライアントサーバではなく、ファイルサーバで同時にアクセスで十数人〜数十人なんてことは無いので
(せいぜい同時に2、3人)MDBをせんたくしました。SQLやオラクルはDBを熟知しているわけではないことと
コスト面を考慮に入れての選択です。
 
> なぼ様のページ
>  ネットワークでの使用 
自動最適化等は利用せずに最適化バックアップ等は行っています。
>  排他制御の罠 
排他に関しては、今はこの質問内容が解決していないので、データベースを排他で開いて同時に
編集させないようにしています。

わかる範囲でいいので、MSDEについて聞きたいのですが
調べると、SQLsaverとほとんど同じ事(知識もSQLなみに)ができるらしいのですが、こちらを使う場合
1.テーブルの大きな変更が必要か?
2.プログラム変更の工数(おおよそとして)
3.質問内容が実現可能か

ご教授願えないでしょうか?
#777-0
RE#776:MSDEでの更新情報取得
> 先輩のプロプラムに追加できないかと言うことなので・・・

先輩の尻拭いですか... ご苦労様です。

> 1.テーブルの大きな変更が必要か?

大きな変更は生じないかと思われます。

> 2.プログラム変更の工数(おおよそとして)

プログラムの「作り」によるので返答不可能です。

> 3.質問内容が実現可能か

一例ですが、
各テーブルにUPDATE時トリガを掛け、そこで更新情報を管理するテーブル
(項目は テーブル名、更新日時、最終更新端末名...その他お好みで)
を更新します。
アプリでは、一定間隔で更新情報管理テーブルを読み、更新されたテーブルを検知します。
#各テーブルをいちいち全件再読み込みする必要がなくなるので、パフォーマンスが向上します。



#779-0
RE#777:MSDEでの更新情報取得
> > 2.プログラム変更の工数(おおよそとして)
> プログラムの「作り」によるので返答不可能です。
すみません確かにそうですね。
 
MSDEについて調べてみます(いままで使ったこと無いので)そこで工数等を考慮して
どうするか、考えてみます。

だいさん長い間質問に答えていただきありがとうございました。m(__)m
#780-0
RE#768:MDBファイルの更新情報取得
> レコード更新[削除、追加]があったときはどこが更新されるのですか?

データのが更新されます。

> とりあいず、テーブルの更新状態がわかれば、そのときだけテーブルの更新をしますので
> レコードやフィールド単位なんて高度なことは、望みません・・・今は(ーー;

全件読んで、自分が表示のために格納しているデータと突き合せましょう。

> アクセスってどうやってるんでしょうか?

作ったレコードセットって、ヨソから追加更新されればその情報が反映されますよね?
(そういうタイプで作っていれば)
それをそのまま再表示すりゃいいんじゃないすか?だめ?
Access はそれを一定間隔でやってるだけじゃないのかなぁ。

# ちなみに、どこぞの ML でそっくりの質問を見かけましたが、もしあなたなら
# 「絶」「対」「に」あちらにも結果報告してくださいね。
# そっくりの他人だったらすいません。
#786-0
RE#780:MDBファイルの更新情報取得
> 作ったレコードセットって、ヨソから追加更新されればその情報が反映されますよね?
> (そういうタイプで作っていれば)
> それをそのまま再表示すりゃいいんじゃないすか?だめ?
> Access はそれを一定間隔でやってるだけじゃないのかなぁ。
ちょっとためしてみます。

 
> # ちなみに、どこぞの ML でそっくりの質問を見かけましたが、もしあなたなら
> # 「絶」「対」「に」あちらにも結果報告してくださいね。
メーリングリストでも一箇所投稿させてもらっています。もしかした僕かも知れません。
おんなじような投稿を見かけるのですが、みんなあきらめているのか、回答がついていませんでした。
それで自分で投稿した次第です。
もちろん結果報告はさせていただきます。
#819-0
RE#780:MDBファイルの更新情報取得
とても失礼かとと思ったのですが、その他のメーリングでも一通
質問をさせてもらったのでが、更新日付もしくは更新テーブルを利用
されては?
と言う意見をいただきました。
一応本来探していた内容をさがしつつ、更新日付関係のでプログラムで考えてみようと思います。

マルチポストになったことを深くお詫びいたしますm(__)m
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)