過去ログ

                                Page      59
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼フォームフッターへのTABでの移動  山プ〜 02/10/1(火) 10:37
   ┗Re:フォームフッターへのTABでの移動  こうちゃん 02/10/1(火) 11:24
      ┗Re:フォームフッターへのTABでの移動  山プ〜 02/10/1(火) 11:39
         ┗フォームフッターからのTABでの移動  山プ〜 02/10/1(火) 12:04
            ┗Re:フォームフッターからのTABでの移動  yu-ji 02/10/7(月) 13:29
               ┗Re:フォームフッターからのTABでの移動  山プ〜 02/10/8(火) 17:14
                  ┗Re:フォームフッターからのTABでの移動  山プ〜 02/10/8(火) 17:44
                     ┗GoToRecordのacFirstでうまくいかない?  yu-ji 02/10/8(火) 18:16
                        ┗Re:GoToRecordのacFirstでうまくいかない?  山プ〜 02/10/9(水) 13:54
                           ┗Re:GoToRecordのacFirstでうまくいかない?  yu-ji 02/10/9(水) 16:33

 ───────────────────────────────────────
 ■題名 : フォームフッターへのTABでの移動
 ■名前 : 山プ〜
 ■日付 : 02/10/1(火) 10:37
 -------------------------------------------------------------------------
    いつもお世話になっております。質問ばかりで恐縮ですが・・。
表形式のフォームを作成してテーブルの内容をフォームの「詳細」に表示させています。
そして、「フォームフッター」にいくつかボタンを配置しています。
画面上のTABの移動順を設定したのですが、「詳細」だけ、「フォームフッター」だけのTAB順は設定できるのですが、「詳細」の最後の項目の次にTABボタンで「フォームフッター」にフォーカスが飛んでほしいのですが、やり方がわかりません。逆に、「フォームフッター」のボタンの最後の次は「詳細」の項目にとんでほしいのですが・・。
何か方法があるようでしたら、教えていただきたいと思います。
よろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:フォームフッターへのTABでの移動  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/10/1(火) 11:24  -------------------------------------------------------------------------
   山プ〜 さん、こんにちは
> いつもお世話になっております。質問ばかりで恐縮ですが・・。
>表形式のフォームを作成してテーブルの内容をフォームの「詳細」に表示させています。
>そして、「フォームフッター」にいくつかボタンを配置しています。
>画面上のTABの移動順を設定したのですが、「詳細」だけ、「フォームフッター」だけのTAB順は設定できるのですが、「詳細」の最後の項目の次にTABボタンで「フォームフッター」にフォーカスが飛んでほしいのですが、やり方がわかりません。逆に、「フォームフッター」のボタンの最後の次は「詳細」の項目にとんでほしいのですが・・。
>何か方法があるようでしたら、教えていただきたいと思います。
>よろしくお願いします。

「詳細」の最後の項目のLostFocusイベントで、「フォームフッター」の最初の項目にフォーカスするのではいけませんか?
ただ、これだとShift+Tabとかでも、「フォームフッター」側に移動しちゃいますが^^;

Private Sub テキスト2_LostFocus()
 テキスト4.SetFocus
End Sub

 ───────────────────────────────────────  ■題名 : Re:フォームフッターへのTABでの移動  ■名前 : 山プ〜  ■日付 : 02/10/1(火) 11:39  -------------------------------------------------------------------------
   こうちゃん さん、早速のお返事ありがとうございます。

>
>「詳細」の最後の項目のLostFocusイベントで、「フォームフッター」の最初の項目にフォーカスするのではいけませんか?
>ただ、これだとShift+Tabとかでも、「フォームフッター」側に移動しちゃいますが^^;
>
>Private Sub テキスト2_LostFocus()
> テキスト4.SetFocus
>End Sub

ただ、フォームは表形式ですので、対象レコードが複数あると数行表示されます。
その最終行で移動したいので上記の例だと1行目の最後の項目でフォーカスがフッターの項目に移動してしまうと思うのですが・・。
とりあえず、試してみます。ありがとうございました。

 ───────────────────────────────────────  ■題名 : フォームフッターからのTABでの移動  ■名前 : 山プ〜  ■日付 : 02/10/1(火) 12:04  -------------------------------------------------------------------------
   >ただ、フォームは表形式ですので、対象レコードが複数あると数行表示されます。
>その最終行で移動したいので上記の例だと1行目の最後の項目でフォーカスがフッターの項目に移動してしまうと思うのですが・・。
>とりあえず、試してみます。ありがとうございました。

表形式の場合、最終行の項目にはNullが入ってくるので、それで判別の材料として最終行でフッターの項目に移動することはできました。しかし、フッターからTABで戻ろうとすると、最終行から移動したため、最終行に戻ってしまいます。先頭行の先頭項目に戻す方法はないでしょうか?たびたびの質問で申し訳ありませんが、よろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:フォームフッターからのTABでの移動  ■名前 : yu-ji  ■日付 : 02/10/7(月) 13:29  -------------------------------------------------------------------------
   こんにちは。

▼山プ〜 さん:
>>ただ、フォームは表形式ですので、対象レコードが複数あると数行表示されます。
>>その最終行で移動したいので上記の例だと1行目の最後の項目でフォーカスがフッターの項目に移動してしまうと思うのですが・・。
>>とりあえず、試してみます。ありがとうございました。
>
>表形式の場合、最終行の項目にはNullが入ってくるので、それで判別の材料
>として最終行でフッターの項目に移動することはできました。しかし、
>フッターからTABで戻ろうとすると、最終行から移動したため、最終行に
>戻ってしまいます。先頭行の先頭項目に戻す方法はないでしょうか?たびたび
>の質問で申し訳ありませんが、よろしくお願いします。

最終行かどうかのチェックは

If Me.RecordsetClone.RecordCount = CurrentRecord Then

こいつで、できるはずです。

先頭行に戻すのは、

DoCmd.GoToRecord acDataForm, "フォーム名", acFirst

で、いけます。

 ───────────────────────────────────────  ■題名 : Re:フォームフッターからのTABでの移動  ■名前 : 山プ〜  ■日付 : 02/10/8(火) 17:14  -------------------------------------------------------------------------
   ▼yu-ji さん:
回答ありがとうございます。
>
>先頭行に戻すのは、
>
>DoCmd.GoToRecord acDataForm, "フォーム名", acFirst
>
>で、いけます。
上記コマンドで実行してみたところ、フォームフッター内の
最初のボタンにフォーカスが移動してしまいました。
私が希望する動きは、表形式のフォームの「詳細」内の先頭レコードに
フォームフッターのボタンからTABで移動することですので
どうもうまくいかないようです。
お手数をおかけしますが、他の方法、もしくは上記に追加するコード等
ありましたら教えていただきたいと思います。
よろしくお願いします。

 ───────────────────────────────────────  ■題名 : Re:フォームフッターからのTABでの移動  ■名前 : 山プ〜  ■日付 : 02/10/8(火) 17:44  -------------------------------------------------------------------------
   >>先頭行に戻すのは、
>>
>>DoCmd.GoToRecord acDataForm, "フォーム名", acFirst
>>
>>で、いけます。
>上記コマンドで実行してみたところ、フォームフッター内の
>最初のボタンにフォーカスが移動してしまいました。
>私が希望する動きは、表形式のフォームの「詳細」内の先頭レコードに
>フォームフッターのボタンからTABで移動することですので
>どうもうまくいかないようです。
>お手数をおかけしますが、他の方法、もしくは上記に追加するコード等
>ありましたら教えていただきたいと思います。
>よろしくお願いします。
上記コードをもとにいろいろ試してみたらなんとかできるようになりました。
ありがとうございました。

 ───────────────────────────────────────  ■題名 : GoToRecordのacFirstでうまくいかない?  ■名前 : yu-ji  ■日付 : 02/10/8(火) 18:16  -------------------------------------------------------------------------
   ▼山プ〜 さん:
>>>先頭行に戻すのは、
>>>
>>>DoCmd.GoToRecord acDataForm, "フォーム名", acFirst
>>>
>>>で、いけます。
>>上記コマンドで実行してみたところ、フォームフッター内の
>>最初のボタンにフォーカスが移動してしまいました。
>>私が希望する動きは、表形式のフォームの「詳細」内の先頭レコードに
>>フォームフッターのボタンからTABで移動することですので
>>どうもうまくいかないようです。

GoToRecordのacFirstで、そんな動きをするはずがないと思うのですが。。。。
こちらで試しても、やはりちゃんと詳細の先頭レコードに飛びますが。。。

>上記コードをもとにいろいろ試してみたらなんとかできるようになりました。
>ありがとうございました。

自分は、こういう質問掲示板は、他の方の質問とその解決方法を、他人が見れる
為に存在していると思ってます。
なので、自己解決した場合も、他の方の参考になる場合があると思うので、解決
方法を記述していただけるとありがたいです。
#とりあえずこの件は、自分が参考にしたいので(笑)

 ───────────────────────────────────────  ■題名 : Re:GoToRecordのacFirstでうまくいかない?  ■名前 : 山プ〜  ■日付 : 02/10/9(水) 13:54  -------------------------------------------------------------------------
   >自分は、こういう質問掲示板は、他の方の質問とその解決方法を、他人が見れる
>為に存在していると思ってます。
>なので、自己解決した場合も、他の方の参考になる場合があると思うので、解決
>方法を記述していただけるとありがたいです。
>#とりあえずこの件は、自分が参考にしたいので(笑)

参考までにつたないコードですが記載します。
「コマンド18」が「詳細」内のボタンです。
「コマンド16、17」が「フォームフッター」のボタンです。

Private Sub コマンド18_Enter()
Dim form1 As Form
Set form1 = Forms![ファイル名]
If IsNull(form1!buka_code) Then '移動したレコードにデータがあるかのチェック
  If flag1 = 1 Then
    flag1 = 0
    DoCmd.GoToRecord acDataForm, "ファイル名", acFirst
  End If
End If
End Sub

Private Sub コマンド18_LostFocus()
Dim form1 As Form
Set form1 = Forms![ファイル名]

If IsNull(form1!buka_code) Then
  コマンド16.SetFocus 'フォームフッターのボタンへのフォーカスの移動
Else
  flag1 = 0
End If
End Sub

Private Sub コマンド17_LostFocus() 'フォームフッターのボタン
On Error GoTo Err_process
flag1 = 1
コマンド18.SetFocus '実行するとこの行のsetfocusでエラーとなり
Exit_function:   '終了すると先頭行にフォーカスが行くので、エラー処理を
  Exit Sub     '作成し、エラー「2110」の時何もしないようにしてます。

Err_process:
  Select Case Err.Number
    Case 2110    
    Case Else
      MsgBox Err.Description
      Resume Exit_function
  End Select
End Sub

エラーが出ているのに強引に終了させているのできれいなやり方ではありませんが
一応これで問題なくTABが移動するようになりました。
ちなみにAccessはOfficeXPのものです。
以上、参考になりましたでしょうか。
では。

 ───────────────────────────────────────  ■題名 : Re:GoToRecordのacFirstでうまくいかない?  ■名前 : yu-ji  ■日付 : 02/10/9(水) 16:33  -------------------------------------------------------------------------
   LostFocusを使われているんですね(^^;
デバッグ時にコードの処理の流れを追えないから不便じゃないですか?
Exitの方が使いやすいと思いますが。

で。エラーの確認はできましたが、エラーの原因はよく分かりませんでした。
が、以下のコードのようではエラーは出ませんでした。
#自分が使ってるのはAccess2000ですが。

エラーが気になるのであれば、試してみてはいかがですか?
#既に解決されているので、わざわざ試す必要がないということであれば
#流してもらって結構です。


***************

Private Sub コマンド17_Exit(Cancel As Integer)
  コマンド18.SetFocus
  DoCmd.GoToRecord acDataForm, "ファイル名", acFirst
End Sub

Private Sub コマンド18_Exit(Cancel As Integer)
  If Me.RecordsetClone.RecordCount = CurrentRecord Then
    コマンド16.SetFocus
  End If
End Sub

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 59