• ベストアンサー

サブフォームに対する表示制御について

yoishoの回答

  • ベストアンサー
  • yoisho
  • ベストアンサー率64% (331/516)
回答No.1

私も同じことで悩んだことがあります。そのときの結論ですが、 (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) で用が足りるということでは、自信あり(経験済み)ですが、この方法がベストか? ということではちょっと自信なしです。

rikiou
質問者

お礼

お返事ありがとうございます。 実は、私も不本意ながら、(2)にやや近い方法で実験していたのですが、 あともう少しというところでうまくいかなかったりでした。 で、yoishoさんのいわれたようにやってみたところ、うまくいきました。 ちょっと1回余分にレコード移動しているので、 画面のチラツキが気になるところですが、しょうがないですね。 ありがとうございました。

関連するQ&A

  • サブフォームの新規レコードに移動したい アクセス

    親フォームのコマンドボタンをクリックしたら 親フォームにはまっているサブフォームの新規レコードに移動したいのですが、 うまくできません。 サブフォームのオブジェクト名は、"F_SubForm"です。 サブフォームはデータシートビューです。 VBAコードは Private Sub cmd_test_Click() DoCmd.SelectObject acForm, "F_SubForm" DoCmd.GoToRecord , , acNewRec End Sub です。 上記コードを実行すると DoCmd.SelectObject acForm, "F_SubForm" の部分で、 「実行時エラー 2489  オブジェクトが開いていません。」 となります。 だからと言って、 DoCmd.GoToRecord , , acNewRec だと、何も起こりません。(新規レコードに移動しません) 解決方法をご教授ください。

  • Access レコード移動時イベントでサブフォーム

    お世話になります。 親フォーム Aがあります。(データソースが存在します) その中にサブフォームBがあります。(データソースが存在します) 親フォームのレコード移動時のイベントで、いつもサブフォームのレコードの最後を表示したいのです。そこで・・・ 親フォームAの レコード移動時イベントに Private Sub Form_Current() Me.B.SetFocus DoCmd.GoToRecord , , acLast End Sub 上記を記述すると、一番初めはきちんとサブフォームBのレコードは最後を表示するのですが、以後、親フォームのレコードを動かすと、親フォームの最後のレコードをさしっぱなしになってしまいます。 Me.B.SetFocus DoCmd.GoToRecord , , acLast これの後にどんな記述をすれば、親フォームのレコードを動かすと同時にサブフォームBも最後の行に移るようにできますでしょうか? 何卒よろしくお願いいたします。

  • GoToRecordでサブフォームを指定したい

    Fフォームの中にSF詳細という名前のサブフォームを埋め込んでいます。 このサブフォームに対して、 指定したレコードに移動したいのですが DoCmd.GoToRecord acDataForm, Form_SF詳細, acGoTo, 3 DoCmd.GoToRecord acDataForm, Forms("Fフォーム").Controls("SF詳細").Form, acGoTo, 3 DoCmd.GoToRecord acDataForm, "SF詳細", acGoTo, 3 全部エラーになり、うまくいきません。 正しい記述の仕方を教えてください。

  • 新しいレコードの表示

    業務日報をアクセスで作成しています。 タブに個人別のサブフォームを作成してそれぞれ表示しているのですが、件数が多くなると新規でレコードを作成したい時に新しいレコードにカーソルを移動するのが大変になるので、ボタンをクリックして移動できたらと考えています。 Docmd.GotoRecord , , acNewRecord だとサブフォームの新しいレコードには移動出来ません。 もし、この方法が出来ないのであれば、新しいレコードが常に一番先頭に表示されていて、追加するたびに先頭にどんどん表示するという方法でもいいのですが、こんな事は可能なのでしょうか?

  • Access メインフォーム サブフォームにて

    お世話になります。 Accessにて メインフォームにコマンドボタンを置いて、クリックするとサブフォームのレコードが 次に行くようにしたいのですが、 コマンドボタン クリック Forms![メインフォーム]![サブフォーム名].Form!フィールド名.SetFocus DoCmd.GoToRecord , , acNext メインフォームとサブフォームのレコードが次に行ってしまいます。 サブフォームだけ次のレコードに行くには、どのようにすれば良いのでしょうか。 分かる方教えて下さい。 宜しくお願いします。

  • サブフォームのレコード移動

    以下のように2つのサブフォームを親フォームより指定しています。 この場合だとかならずSetFocusしなくてはならなく そのたびに画面がぶれてしまいます。 Me.[1つ目のサブフォーム].SetFocus DoCmd.GoToRecord , , acGoTo, num Me.[2つ目のサブフォーム].SetFocus DoCmd.GoToRecord , , acGoTo, num SetFocusをしないでもサブフォームの移動は可能でしょうか? よろしくお願いします。

  • Accessサブフォームのレコード移動

    Accessにおいて、サブフォームのレコードの移動方法をどなたか教えてもらえませんか。「Forms![メインフォーム名]![サブフォーム名].Form.SetFocus DoCmd.GoToRecord acDataForm, "サブフォーム名", acNext」とコーディングしたのですがダメでした。よろしくお願い致します。

  • トグルスイッチをVBAでコントロール

    マイクロソフトアクセス2000で作成しています。 メインフォームとサブフォームを使っています。 メインフォームにあるトグルスイッチを押した時に、サブフォームの最新レコードに移動したいと 考えています。 ボタンを押したときに、VBAの命令は動くのですがトグルスイッチが押した状態になりません。 VBAで押した状態にしようとしても命令言語がわかりません。 ご教授をお願い致します。 Me.トグルスイッチ1=true <- ここが動きません。 DoCmd.GoToControl "サブフォーム名" DoCmd.GoToRecord , , acNewRec

  • ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい

    日付/品番/出庫数のフィールドで構成された「明細テーブル」があります。 「日付」フィールドからなるメインフォーム、「品番/出庫数」からなるサブフォームをつくり、メインフォームのサブフォームコントロールのレコードソースを「サブフォーム」に指定しました。 日付を入れるとその日の出庫明細がサブフォーム上に表示されるのですが、このレコード件数をメインフォーム上のコントロールで表示したいのです。 サブフォームのヘッダにテキストボックスコントロールを作り「=Count([品番])」としてやれば、「サブフォーム上での」件数表示は出来るのですが、同じ式をメインフォーム上のコントロールに記述すると、「全レコードの件数」が表示されてしまいます(当たり前ですが) そこで、「=Count([埋め込み].Form![品番])」とやってみました。ここで「埋め込み」とはメインフォーム上のサブフォームコントロールの名前です。 結果は「#Error」となってしまいます。Count関数だけでなくSum関数などでも同様の結果となります。 はっきりいって「サブフォームのヘッダに表示させればいいじゃないか」というところなのですが、「式ビルダ」ではサブフォームのコントロール名も容易に参照できるようになっており、なにか方法があるのではないか、初歩的なところでつまずいていないか、と思案している次第です。 なにかアドバイスいただけたら幸いです。

  • Access2013サブフォームの背景色(2)

    サブフォームの先頭行のみ青色の背景色となってしまいます。 2行目以降は無色になっています。 カレント行には背景色がついてしまうでしょうか? 全て無色にする方法が知りたいのですが。 カーソルはメインフォームのコントロールにSetFocusしています。 サブフォームのフォームのプロパティ「レコードセレクタ」は「いいえ」に 設定しています。 何か他に設定するところがあるのでしょうか? フォームが開いた時にサブフォームのレコードセレクタが選択されるような作りにしたつもりはないのですが、もしそうであればどうやって解消すればいいのでしょうか?