Access2003 にて、下記の手順で処理するプログラムを作成しています。
メインフォーム(埋め込みサブフォーム ※データシートビュー 一覧表)
→埋め込みサブフォームの対象のレコードセレクタをダブルクリック。
→別フォームを起動し、データ入力更新。別フォームを閉じる。
→メインフォームのリフレッシュ し別フォームで変更した内容を反映させたい。
メインフォームのリフレッシュを行いたいのですが、うまくいきません。
■試してみたこと
メインフォーム、サブフォーム、別フォームとあり、
1.
別フォームのデータ更新が終了したあと、
別フォームを閉じる直前にForms![メインフォーム名].requery をしてみた
メインフォームは別フォームを開く前の状態と、変化なし
2.
別フォームのデータ更新が終了したあと、別フォームを閉じ
サブフォーム内ロジックで、Forms![メインフォーム名].requery をしてみた
メインフォームは別フォームを開く前の状態と、変化なし
3.
別フォームのデータ更新が終了したあと、別フォームを閉じ
サブフォーム内ロジックで、Me.requery をしてみた
メインフォームは別フォームを開く前の状態と、変化なし
-----
いずれもメインフォームには変化はありませんでした。
出来れば、メインフォームにはForm_Loadした時と同じように
処理を走らせたい(メインフォームを閉じることなくフォームロードから処理を再開させたい)
と考えています。
サブフォームを含め、メインフォームごとリフレッシュするような処理はないでしょうか。
ご存知のかた宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
#1 です。
余談ですが、DAO と ADO の選択の目安としては、Access オンリーの設計としていいか、汎用性を持った設計にしたいか、みたいなところではないでしょうか。DAO は完全に Jet に特化したオブジェクトなので、Jet に対する速度や細かな操作が得意です。
ADO は OLE DB を経由するため、速度に若干ムラがあり、かゆいところに手が届きにくいところがありますが、OLE DB プロバイダを変更すれば、接続するデータベースの変更が容易という利点があります。
Access でクローズされたアプリには DAO のほうが合ってるのかもしれませんね。でも、私はDAO はあまり使ったことがありません。
この紛らわしい省略単語、なんとかならんもんですかね・・・・・・・。
この回答への補足
勉強になります。感謝いたします。
DAOを使ってみようかと思案中です。
昔、DAOを使ってAccessでプログラムを組んでいた人がいましたが
このような理由だったんですね。
たしかに呼び方も、DAOとADOは紛らわしいですね(笑
丁寧な回答、大変助かりました。
また機会がありましたら、宜しくお願いいたします。
No.1
- 回答日時:
別フォームでの更新処理をどういった方式で実装されているのかがちょっとわからないのですが、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の方が良いのでしょうかね?
頑張ってみます、ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Access 登録ボタンからサブフォームの更新 1 2022/07/22 10:23
- Visual Basic(VBA) VB.net フォーム 親子 1 2022/07/04 19:00
- Access(アクセス) accessについて(超初心者です) 1 2023/02/11 11:18
- Google Drive Google form を利用して 問い合わせフォームを作りたい 1 2022/04/25 14:15
- Access(アクセス) Accessに関する質問です。 クエリーQ出勤 からフォームF出勤を作成 フォームは分割フォームで作 1 2023/05/26 08:57
- JavaScript ラジオボタンによるフォームの開閉を行いたい 3 2022/03/31 21:30
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Access(アクセス) Accessで独自メニューバーまたはリボンを作成したい 1 2022/12/02 14:31
- Excel(エクセル) エクセルのファームにプルダウン設置できますか? 2 2022/05/19 23:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleフォーム・複数人の申し...
-
サブフォームの新規レコードに...
-
Accessでフォームから別フォー...
-
アクセスVBA フォームのス...
-
VBAにてメッセージボックスを最...
-
【ACCESS2003】サブフォーム名...
-
VB.net(VB)で、フォームにExcel...
-
Access メインフォームのリフレ...
-
アクセス・別フォームの新規レ...
-
サブフォームの行ごとにコンボ...
-
VB.NET 親フォームから子フォー...
-
PDFフォームに本日の日付を自動...
-
子フォームから親フォームのオ...
-
VBのEXEファイルのサイズを小さ...
-
メッセージボックスの背景色
-
VBAでフォームのスクロールバー...
-
サブフォームのイベント取得
-
VBプログラムの終了
-
[C#]別フォームとの連動について
-
accessで2つ以上のフォームを起...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAにてメッセージボックスを最...
-
Accessでフォームから別フォー...
-
サブフォームの新規レコードに...
-
リストボックスの選択解除
-
Googleフォーム・複数人の申し...
-
ユーザーフォーム上にアイコン...
-
PDFフォームに本日の日付を自動...
-
accessで2つ以上のフォームを起...
-
VBプログラムの終了
-
アクセスVBA フォームのス...
-
メッセージボックスの背景色
-
サブフォームの行ごとにコンボ...
-
ExcelVBAでフォーム内でブック...
-
フォーム上の全てのコントロー...
-
ディスプレイ解像度より大きな...
-
メインフォームからサブフォー...
-
VBAでフォームのスクロールバー...
-
PDFフォーム内で日付計算したい...
-
Access 無操作の場合、自動で閉...
-
C# 別なフォームへ値を渡す (...
おすすめ情報