プロが教えるわが家の防犯対策術!

Access2003 にて、下記の手順で処理するプログラムを作成しています。

メインフォーム(埋め込みサブフォーム ※データシートビュー 一覧表)
→埋め込みサブフォームの対象のレコードセレクタをダブルクリック。
→別フォームを起動し、データ入力更新。別フォームを閉じる。
→メインフォームのリフレッシュ し別フォームで変更した内容を反映させたい。

メインフォームのリフレッシュを行いたいのですが、うまくいきません。

■試してみたこと
メインフォーム、サブフォーム、別フォームとあり、

1.
別フォームのデータ更新が終了したあと、
別フォームを閉じる直前にForms![メインフォーム名].requery をしてみた
メインフォームは別フォームを開く前の状態と、変化なし

2.
別フォームのデータ更新が終了したあと、別フォームを閉じ
サブフォーム内ロジックで、Forms![メインフォーム名].requery をしてみた
メインフォームは別フォームを開く前の状態と、変化なし

3.
別フォームのデータ更新が終了したあと、別フォームを閉じ
サブフォーム内ロジックで、Me.requery をしてみた
メインフォームは別フォームを開く前の状態と、変化なし

-----
いずれもメインフォームには変化はありませんでした。
出来れば、メインフォームにはForm_Loadした時と同じように
処理を走らせたい(メインフォームを閉じることなくフォームロードから処理を再開させたい)
と考えています。

サブフォームを含め、メインフォームごとリフレッシュするような処理はないでしょうか。
ご存知のかた宜しくお願いいたします。

A 回答 (2件)

#1 です。

余談ですが、DAO と ADO の選択の目安としては、Access オンリーの設計としていいか、汎用性を持った設計にしたいか、みたいなところではないでしょうか。

DAO は完全に Jet に特化したオブジェクトなので、Jet に対する速度や細かな操作が得意です。
ADO は OLE DB を経由するため、速度に若干ムラがあり、かゆいところに手が届きにくいところがありますが、OLE DB プロバイダを変更すれば、接続するデータベースの変更が容易という利点があります。
Access でクローズされたアプリには DAO のほうが合ってるのかもしれませんね。でも、私はDAO はあまり使ったことがありません。

この紛らわしい省略単語、なんとかならんもんですかね・・・・・・・。

この回答への補足

勉強になります。感謝いたします。
DAOを使ってみようかと思案中です。

昔、DAOを使ってAccessでプログラムを組んでいた人がいましたが
このような理由だったんですね。

たしかに呼び方も、DAOとADOは紛らわしいですね(笑
丁寧な回答、大変助かりました。
また機会がありましたら、宜しくお願いいたします。

補足日時:2011/09/19 02:40
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2011/09/19 02:40

別フォームでの更新処理をどういった方式で実装されているのかがちょっとわからないのですが、ADO 使われている場合は、アプリケーションで独自に ADO のコネクションを作ると、そこにキャッシュバッファが作られて、Access 本体の処理との同期に遅れが出る、とうことが発生することがあったように思います。

その場合、ちょっと詳細がわかりませんが、Access 本体が使っている ADO のコネクションを取得することができたかと思います。

ちなみにサブフォームはきちんと反映されている、ということでしょうか?サブフォームにも Requery 送ってみるのはどうでしょう??

この回答への補足

回答ありがとうございます。
キャッシュバッファですか、同期に遅れが、、、たしかに心当たりがあります(汗
Googleでコネクション関連で調べてみると、
「リクエリが効かない?」など色々な情報が出てきましたね。
http://www.accessclub.jp/bbs5/0009/vba2399-2.html

<だめだった時>
Dim objConn as ADODB.Connection
Set objConn = New ADODB.Connection
objConn.Open = CurrentProject.Connection
 ↓
<OK>
Dim objConn as ADODB.Connection
Set objConn = CurrentProject.Connection

とすると良いようですね。
大変良いヒントになりました。これで解決できそうです。
今からDAOにすべきか、ADOにすべきか、
これもADOの特性を理解しておく、いい機会とするか難しいとこですが(笑

Accessで使用する場合は、DAOの方が良いのでしょうかね?
頑張ってみます、ありがとうございました

補足日時:2011/09/18 14:40
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2011/09/18 14:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!