プロが教える店舗&オフィスのセキュリティ対策術

Access97でサブフォームを使用したフォームを作成しています。

サブフォームの明細行の最後に新規レコード行がありますよね。
サブフォームの初期表示時に、この新規レコード行にカーソルを位置付けたいのですが、
Docmd.GoTORecord,,acNewREc とやると、新規レコード行がサブフォームの
最上部にいってしまい、その前にある既存レコードが見えなくなってしまいます。

理想は、サブフォームの1ページが10明細分の大きさで獲ってあるとすると、
新規レコード行を10行目に表示されるようにもっていきたいのですが、
サブフォームに対してこのような制御は可能なのでしょうか。

RecordCountを操作したりしてやってみたのですが、既存レコードの件数によって、
うまくいったりいかなかったりです。

よろしくお願いします。

A 回答 (2件)

私も同じことで悩んだことがあります。

そのときの結論ですが、

(1) 一番簡単なのは、
サブフォームのビューをデータシートにすれば新規レコードに移動しても10行表示されます。

(2) サブフォームのビューをを帳票にする必要があるなら、
DoCmd.GoToRecord , , acLast
DoCmd.GoToRecord , , acPrevious, 9
DoCmd.GoToRecord , , acNewRec
のように、一度9行前のレコードに行ってから、新規レコードに移動すれば、ちゃんと10行表示されます。
(なんだか裏技っぽくてスマートじゃないんで、自分では納得できてないんですが・・・)

(3) 最後の9レコードより前を表示する必要が無ければ、
サブフォームのクエリーを
SELECT ID, フィールド1, フィールド2,・・・・
FROM テーブル1
WHERE ID In (SELECT TOP 7 ID FROM テーブル1 ORDER BY ID DESC;)
ORDER BY ID;
のようにして、レコード数を新規も含めて10に限定してしまうのも一つの方法かと思います。

とりあえず (2) で用が足りるということでは、自信あり(経験済み)ですが、この方法がベストか? ということではちょっと自信なしです。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

実は、私も不本意ながら、(2)にやや近い方法で実験していたのですが、
あともう少しというところでうまくいかなかったりでした。

で、yoishoさんのいわれたようにやってみたところ、うまくいきました。

ちょっと1回余分にレコード移動しているので、
画面のチラツキが気になるところですが、しょうがないですね。

ありがとうございました。

お礼日時:2002/01/18 18:06

画面のちらつきを止めるには



Application.Echo False
画面の更新処理
Application.Echo True

とすれば良いと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

早速試してみたところ、なるほどうまくいきました。
目からウロコ状態です。
まだまだ知らないメソッドがいっぱいあるなあと痛感...

ありがとうございました。

お礼日時:2002/01/21 09:29

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