• ベストアンサー

ACCESSの検索結果のレコード移動時イベント

Access2010です。 F_マスタにF_サブのサブフォームが組み込まれています。 F_マスタには検索ボタンがあって、その検索結果がF_サブに表示されます。 その検索結果についてレコード移動時イベントを使い、クリックしたレコードの処理を行っています。 ところが、検索結果の1行目だけイベントが発生しません。 1行目以外ではイベントが発生し、その後は1行目でも発生するようになります。 表示直後はカレントレコードが1行目に存在するため、1行目をクリックしても移動とみなされない? そこで、表示直後でも1行目のイベントを発生させる何か良い方法はないでしょうか?

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

  • ベストアンサー
回答No.1

「レコード移動時」イベントだと、質問の不具合以外にも、PageDown などのキーボードで移動したときもイベントが発生してしまいますので、適切でないと思います。 詳細セクションの「ダブルクリック時」かフォームの「ダブルクリック時」の方がいいかと思います。 が、お勧めは、詳細セクションにコマンドボタンを配置して、その「クリック時」が分かりやすくてユーザーの混乱が少ないと思います。

yokagura
質問者

お礼

ありがとうございます。 クリック時のイベントの内容はクリックしたレコードの色を変えることだったのですが 先頭行はダブルクリックでもイベントが起きないため不思議に思い調べたところ 検索ボタン押下時のスクリプトの最後で (実際の記述) Forms![F_一覧main]![F_一覧sub].Form![テキスト45] = "" (押された行IDを格納するテキスト45をクリアする) (このテキスト45を使って処理をしている部分)が邪魔をしていました。 この記述をクエリーの前に記述したところ 検索後は必ず1行目がクリックされた状態(レコードに色がつく)で表示されますが まあ、許容範囲で解決としたいと思います。 お勧めの方法も参考にさせていただきます。 ありがとうございました。

関連するQ&A

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

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

  • Access 指定したレコードへ移動

    お世話になります。 Access2003で在庫管理システムを作っています。 商品マスター登録画面にて商品を検索する際 コマンドボタンで検索画面に移動 テキストボックスに入力した文字列を含む商品を 検索画面内のサブフォームに表示、該当レコードをダブルクリックすると 商品マスター登録画面にその商品が表示される…という ところまでなんとかかんとか作りました。 でもレコードソースを書き換えるところがまずいみたいで 商品マスター登録画面には表示したレコード1件のみしか 表示されなくなってしまいます。 私がやりたいのは単なるレコードの移動です… 調べましたがどうしたらいいのかわかりません。 よろしくお願いします。 検索画面内のサブフォームをダブルクリックしたときのコード Private Sub Form_DblClick(Cancel As Integer) On Error GoTo Err_Form_DblClick   Dim strSQL As String   With Application.Forms("商品マスター登録")     strSQL = "SELECT *"     strSQL = strSQL & " FROM 商品マスター"     strSQL = strSQL & " WHERE 商品ID = " & Me.商品ID     Form_商品マスター登録.RecordSource = strSQL         ↑ここをどう変えればいいでしょうか?   End With Exit_Form_DblClick:   Exit Sub Err_Form_DblClick:   MsgBox Err.Description   Resume Exit_Form_DblClick End Sub

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

    親フォームのコマンドボタンをクリックしたら 親フォームにはまっているサブフォームの新規レコードに移動したいのですが、 うまくできません。 サブフォームのオブジェクト名は、"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 だと、何も起こりません。(新規レコードに移動しません) 解決方法をご教授ください。

  • 検索フォームの検索結果。毎回先頭のレコードを表示させたい。

    こんにちは。 顧客データベースを作成しています。 当方初心者なもので、調べながらですがようやく顧客検索フォームができあがりました。 【Q検索】を作成し、それを元に【F検索】を作りました 顧客名の一部をキーワードとし、【F検索】内に配置したテキストボックスにキーワードを入力し検索ボタンを押すと、【F検索】内に埋め込んだサブフォームに該当顧客データが単票フォームで表示されるようにしました。誰でも使えるように、サブフォーム内に【前のレコードへ】と【次のレコードへ】という2つのレコード移動ボタンを配置しました。検索処理はうまく動いたのですが、一度検索をして、続けて検索をした時、先頭のレコードからの表示になりません。 例えば、「東」をキーワードにして検索し、検索結果が30件あったとします。一度目の検索では、検索結果は先頭のレコードが表示されます。【次のレコードへ】ボタンで10番目のレコードまで移動した後、今度は「西」をキーワードにして検索をすると10番目のレコードが表示されてしまいます。「西」の検索結果が5件しかなかった場合は新規レコードが表示されてしまいます。 ネットで調べていろいろ試してはみたのですが どのタイミングでどう記述すればいいのかわかりません。 説明に不備がありましたら追記していきますので よろしくお願いします。

  • ACCESSのデータシートビューでレコード(行)をクリックした時イベントを発生させるには

    ACCESSのフォームにデータシートビューが貼り付けてあります。 ここにはAのテーブルのレコードがいくつか表示されていますが、 この行(レコード)の一部をクリックするとイベントを発生させるということは できるのでしょうか? またこのレコードの特定の値を取得するには? 例:TABLE名 野菜 フィールド:野菜名、値段 レコード1:とまと、100円 レコード2:キャベツ、200円 レコード3:なす、150円 1行で表示されているレコード3のなすか150円またはレコードセレクタをクリックすると イベントを発生させる。 150円という金額を取得する *なす、150円個別でクリックしたときのイベントは受け取れるのですが… フィールドが多い場合にどこをクリックしても同じイベントを発生させたいのです。 以上わかりにくい文章ですみませんが、宜しくお願いします。

  • 新規レコードへ移動しない

    Access2010を使用しています。 サブフォームからメインフォームの「登録」ボタンプロシージャをCallした時、メイン・サブフォーム共に新規レコードへ移動しなくて困っています。 具体的には、サブフォームにフォーカスがある時に「F12」を押すと画面の入力項目の内容刃そのままでメインフォームの「注文番号」テキストボックスにフォーカスが移動します。 メインフォームにフォーカスがあるか、マウスで「F12」をクリックすると画面の入力項目がクリアされて新規レコードへ移動します。 コードは以下の内容が記述してあります。 ーーーーーサブフォーム----- Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 123 Call Me.Parent.Form_KeyDown(KeyCode, Shift) KeyCode = 0 End Select End Sub -----メインフォーム----- Public Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case 123 Call 登録_Click KeyCode = 0 End Select End Sub Private Sub 登録_Click() DoCmd.GoToRecord , , acNewRec Me.注文番号.SetFocus End Sub

  • アクセス サブフォームのレコードの値が変更したら

    フォームの中にテーブルに基づいたサブフォームを入れています。 サブフォームはデータシートビューで表示しています。 そのサブフォームのレコードの値が変わったら msgboxを表示させるにはどのイベントで行なえば良いですか? サーブフォームのコントロールに Private Sub ページ名_AfterUpdate() MsgBox "" End Sub としたら確かにメッセージボックスは表示されるのですが 全てのコントロールにつけないとだめですか? 「サブフォームのレコードの値が変更したら」 とするにはどうすればいいでしょうか?

  • Accessのレコードセレクタについて

    はじめまして、質問です。 フォーム画面にサブフォームがあり、検索するとサブフォームにワークテーブルからのレコードが出力されるのですが、ある画面では初期表示からレコードセレクタをホイールで移動でき、もう一方はできないものがあります。 レコードセレクタのデフォルトはどんな動きなのでしょうか? キーボードの方向キーで移動できるものとできないものがありのですが、何で制御しているのか? 漠然でしたら質問にはお答えしますので宜しくお願いします。

  • なぜフォームを開いただけで「レコード移動時」のイベントが発生してしまうのか?

    データシートビューのフォームを開くときに イベントプロシージャーの「レコード移動時」も発生してしまいます。 開いただけでレコードが移動しているのでしょうか? (どこからどこへ?) なんとなく不思議です。 何かわかる方いらっしゃいましたら御回答宜しくお願い致します。

  • Access2003のイベント

    Access入門者です Acceessでのイベント発生が分かりません Mainフォームにサブフォームを2つ配置 (Sub_A、Sub_B) MainフォームにSub_Aの連結コントロールを作成してあります。 この連結コントロールの値でSub_Bを再クエリするシステムを作成しています。 Sub_Aでフィールドを選択するごとに連結コントロールの値は変化しますが、連結コントロールは変更又は更新イベントは発生しません。(その他のイベントも試しました) 仕方なく、連結コントロールのクリックイベントを利用して再クエリを実行しています。 Sub_Aで選択 → Sub_Bを再クエリする良い方法はありますか?

専門家に質問してみよう