アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
申し訳ありませんが教えてください。

Accessでフォームを作成しました。
Formload時でDataSourceを設定し、その後に
詳細(Detail)内で「●」マークのついているテキストに
フォーカスを設定したいのです。

例えば全部で100行あり、画面上は10行しかみえず、
●が40行目からあった場合は、40行目にジャンプして
見えるような動作を目標にしています。

イメージ的には、回して詳細内の指定テキストボックスに
「●」があったらフォーカスして抜けたい、ということです。

Private Sub Form_Load()
  Dim sSql As String
  Dim rsSetting As DAO.Recordset
  Dim i As Integer

  sSql = "select * from 設定マスタ"
  Set rsSetting = CurrentDb.OpenRecordset(sSql)

  ’マスタの条件に従い再クエリ(設定マスタデータ利用)
  sSql = "SELECT ・・・"
  Me.RecordSource = sSql

  'はじめに●のある位置に移動する
  (ここでループのようなことしたい)
  for i = 0 to 詳細の件数
    if チェックしている行数のテキストボックス.value = "●" then
      テキストボックス.SetFocus
      exit for
    end if
  next
End Sub
こんな感じです。
このくらいならできるだろう、とナメていたら、
ウィザードで作ったフォームの行をどう扱うのか
全く予想がつかない状態なのです。
調べたのですが、調べ方が悪いのか、期待するページが出てきません。

すみませんがよろしくお願いいたします。

A 回答 (1件)

要約すると、



・今作っているフォームは表形式で、10レコード分表示される。

・フォームを開いたときに、とあるフィールドに●と書かれているレコードが一番先頭になるように表示したい。

ということですか?

もしそうならば、レコードセット作成後にその中からとあるフィールドに●があるレコード番号を取得しておき、あとはレコード移動アクションでレコードセットの一番最後へ移動→先ほど取得したレコード番号へ移動、、、とすれば良いかと思います。

DAOの記述はあまりくわしくないので割愛しますが、下記のような感じなります。
'-----
Dim RecNo as Integer
'~レコードセット設定~
'~該当レコード番号取得(RecNoに格納)~
DoCmd.GoToRecord , , acLast
DoCmd.GoToRecord , , acGoTo, RecNo
'-----

一旦最後のレコードに移動したのは、一番先頭に該当レコードが来るようにするためです。
    • good
    • 0
この回答へのお礼

お返事が遅れました。

今回作ったフォームは上記のやり方ができなくて
やろうと思うとそのフォームだけ毛色が違うことになり。
今後のメンテナンス性から考えて、
ユーザーに相談させていただき、別の方法を取りました。

大変失礼なことになってしまい、申し訳ありません。
有難うございました。

お礼日時:2008/08/22 18:01

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A