Microsoft Access 掲示板

先頭行のドロップダウンがうまく機能しない。

13 コメント
views
4 フォロー

いつもお世話になります。

コンボボックスの入力時に、
フォーカス取得後のイベントプロシージャで
DropDown
を記述していますが、一瞬表示されて、すぐに消えてしまいます。
常時使用している2つの帳票でこの現象が起きます。

消えた後、手作業で再度、コンボボックスにカーソルを移動させると、
正常にドロップダウンされます。また、
2行目以降はその様な現象は起きません。

それならと、SetFoucus で他に移動して再度、コンボボックスに移動しても
同様に、一瞬、ドロップダウンされて消えてしまいます。

2003 から 2016 に移行しても、症状は同じでした。
自分で使用するだけですので、
誤魔化しながら15年以上使っていますが、自力で解決できずにいます。

解決策を、ご教授頂きたいです。

hhmmj553
作成: 2020/11/07 (土) 12:46:08
通報 ...
1

その仕様は私もよく使いますが、そのような現象は経験ないですね。
新規にフォームを作成して、同様の設定をしても現象が再現しますか。

現状のコンボボックスの設定、フォーカス取得時のコードを提示してもらえませんか。

2
hhmmj553 2020/11/08 (日) 21:23:26 19f3a@6b5ef

以下の2つがイベントプロシージャのコードです。
そのままを、コピペしました。

帳票で以下のコードでは正常にドロップダウンするのです。

Private Sub cbo仕入先ID_GotFocus()
  Me!cbo仕入先ID.Dropdown
End Sub

入力後、サブフォームで以下のコードの時は、一瞬だけドロップダウンして、
すぐ、消えます。しかし、2行目からは正常にドロップダウンするのです。

Private Sub cbo商品ID_GotFocus()
  Me.cbo商品ID.Dropdown
End Sub

[cbo商品ID]の値集合ソースは
SELECT T商品マスタ.商品ID, T商品マスタ.商品名, T商品マスタ.仕入先ID
FROM T商品マスタ
WHERE (((T商品マスタ.仕入先ID)=[parent]![cbo仕入先ID]))
ORDER BY T商品マスタ.商品名;
です。

以下は、サブフォームを使用せず、表形式のフォームなのですが、
先頭行でのみ、一瞬だけドロップダウンして、すぐ消えます。
これも同様に2行目からは正常にドロップダウンします。

Private Sub cbo食材ID_GotFocus()
  Me.cbo食材ID.Dropdown
End Sub

[cbo食材ID]の値集合ソースは
SELECT T食材.食材名, T食材分類.食材分類名, Format([㌍],"@@@") AS カロリー, T食材.食材ID, [×Q食材1].食材名のカウント
FROM (×Q食材1 RIGHT JOIN T食材 ON [×Q食材1].食材ID = T食材.食材ID) INNER JOIN T食材分類 ON T食材.食材分類ID = T食材分類.食材分類ID
ORDER BY [×Q食材1].食材名のカウント DESC , T食材.食材名;
です。

今まで、コピーしたり、新規にも何度となく試したのですが
だめでした。私ではお手上げです。
どちらも2行目以降は正常にドロップダウンするのです。
他には、特に変わった設定はしてないと思います。
どちらもフォーカス取得後以外にイベントはありません。
hatenaさんが未経験なことか、私に起こるとはなんとも不思議です。

3

フォーカス取得後イベント(GotFocus)をフォーカス取得時イベント(Enter)に変更したらどうなりますか。
私の場合は、Enter を使っています。

4
hhmmj553 2020/11/09 (月) 05:17:34 19f3a@6b5ef

2つとも
フォーカス取得時イベント(Enter)
に変更してみましたが、同じでした。
そして、2行目からは正常にドロップダウンします。

5

こちらで現象を再現できないので、実際のファイルを見ないと原因の特定は難しいですね。

症状の出るAccessファイルを送信してもらえたら原因が特定できるかもしれません。

よろしければ右カラムの下にあるファイル送信フォームから送信もらえますか。

6
名前なし 2020/11/09 (月) 06:12:37 30f77@6b5ef

わかりました。
ただ、仕入先等の情報がありますので
今日中には、データを作って送信します。

7
hhmmj553 2020/11/09 (月) 06:31:49 19f3a@6b5ef

仕入データのあるものは、控えました。
もう一つの、日々の食事データを入力しているものを
送信しました。よろしくお願いします。

8

送信ファイル、拝見しました。
開いたときに最初にフォーカスがくるのがコンボボックスのとき、症状がでるようです。

txt時刻の「タブストップ」を「はい」にすると開いたときこれに最初にフォーカスがきますので、その後、コンボボックスにフォーカスを移動するようにすればいいでしょう。

ただし、開く時イベントでフォーカス移動しても同じ症状になるので、タイマーイベントを使って少し遅らせてフォーカス移動させるようにすれば、コンボボックスのリストを開いた状態にできます。

txt時刻
 タブストップ いいえ

フォーム
 タイマー時 [イベント プロシージャ] 
 タイマー間隔 0

Private Sub Form_Timer()
    Me.TimerInterval = 0 'タイマー時イベント停止
    Me.cbo食材ID.SetFocus
End Sub

「開く時」のイベントプロシージャのコードは「読み込み時」(Form_Load)のイベントプロシージャに移動して、下記のように修正してください。

Private Sub Form_Load()
    If Me.OpenArgs = "ShowObj" Then Exit Sub
    Dim dTime
    Dim nSyoukei As Long
    Dim nKeikaFun As Integer
    Dim s1 As String
    Dim c1 As Integer
    Echo False
    If Me.Recordset.RecordCount = 0 Then
        Me.txt時刻.TabStop = False
        Me.TimerInterval = 10 '10ミリ秒後にタイマー時イベント実行
    Else

    '略 

    End If
    Echo True
End Sub

修正済みファイルは下記からダウンロードできます。

修正ファイル

9
hhmmj553 2020/11/09 (月) 09:34:23 19f3a@6b5ef

ひとつ変化がありました。

なんと、Enter に変更した仕入伝票のサブフォームの明細入力が
一行目からドロップダウンしました。

指摘された時は、ドロップダウンしなかったのですが、
今、新しいデータを入力すると、ドロップダウンしました。

送信した 食事明細入力.accdb はドロップダウンしないことは
一度確認しましたが、なんだか訳が分かりません。

10
hhmmj553 2020/11/09 (月) 09:47:55 19f3a@6b5ef

すみません。
今、新しい仕入データを入力すると
やはり、ドロップダウンしませんでした。

11
hhmmj553 2020/11/09 (月) 11:50:02 19f3a@6b5ef

開いた時最初にフォーカスするのがコンボボックスの時に症状がでるとの指摘が
的を射ていました。

私は、まったく気づきませんでした。

なぜかは、分かりませんが、問題は解決しました。

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

12
hhmmj553 2020/11/09 (月) 13:38:39 19f3a@6b5ef

本筋から外れるかもしれませんが、

もう一つの帳票は、コンボボックスにフォーカスする前に
日付を入力するようになっているため、そこでは正常にドロップダウンして、
サブフォームを入力する場合は、最初にコンボボックスにフォーカスします。

一つの入力フォームしか、見せていないのに
なぜ、開いた時最初にフォーカスするのがコンボボックスの時に症状がでると
判断できたのか、知りたいです。

13
hhmmj553 2020/11/09 (月) 13:46:41 19f3a@6b5ef

すみません。
開いた時に最初にフォーカスするのがコンボボックスで
その時、症状がでるのは、分かっていることでした。

なにぶん、長期間にわたり、解決しなかった事が
一瞬で解決してしまった事に、戸惑っています。