• ベストアンサー

アクセエスのレコードの更新をVBAでするには?

アクセスで、一覧表のフォームにボタンを取りつけています。レコードの内容を変更したら、ペンの形のマークが現れますね。これは変更中ということですが、そこでボタンを押しても変更は確定されないから、更新確定させたいのです。 それで、DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。 元の一覧表の位置を動かさないために、Ctrl+Enter キーを押して更新確定させたような状態をVBAで実現する方法あるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.4

No1 です。 今回の場合には Docmd.RunCommand acCmdSaveRecord の方が良かったですね 文字通りレコードを保存します。 Requery に引きづられてしまいました (^_^;) Recalc、Refresh、Requery の使い分けは下記が参考にはなりますか? http://www.nurs.or.jp/~ppoy/access/access/acF007.html

hiroi
質問者

お礼

nicotinismさん 更に新しい用法ありがとうございます。 それに詳しい解説のついたURLもよかったです。 他者の変更したレコードの反映もよく分かりました。 もっと、色々な場面も踏んで様々なケースに対応出来るようにしていきたいと思います。 よろしくお願いします。

その他の回答 (3)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

>Recalcメソッド フォームのすべての演算コントロールを更新します。 >Refreshメソッド 指定したフォームまたはデータシートに含まれるレコードを更新してデータへの変更を反映します。 カレントレコードセットに加えられた変更だけです。 詳しくはVBのヘルプを参照してみてください。

hiroi
質問者

お礼

O_cyanさん Recalc と Refresh の解説ありがとうございました。 はい、ヘルプも参照しておきます。 もっと、色々勉強していきます。

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>DoCmd.Requery を最初の行に入れてみたら、元の一覧表は最初のレコードに飛んでしまう。 最初の行?Requeryは通常は処理の後に再クエリをして表示しなおすような場合に使いますが。 Requeryは再クエリなので最初のレコードに移動します。 コントロールの更新後後処理に Me.Refresh とすればレコードは移動しません。 こういう事ではないのでしょうか。

hiroi
質問者

お礼

O_cyanさん 早速の回答ありがとうございます。 最初の行というのは、ボタンを押した後にまず、更新確定させるためにRequery してみた訳ですが、この場合は適切ではないようですね。分かりました。 さきほどのNo.1さんのいうMe.recalc とMe.Refresh の違いを調べてみようと思います。ありがとうございました。 (出来れば、Recalc と Refresh の違いというか用法を教えて頂ければ助かります。)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

me.recalc では?

hiroi
質問者

お礼

nicotinismさん 早速の回答ありがとうございました。 me.recalc を入れてみたら出来ました。 recalc は始めてみるものです。調べてみます。

関連するQ&A