0

基本的に、いくつかのフィルター、並べ替え、アクションボタン、およびフィルターを実装するためのいくつかのテキストボックスを備えた大きなリストボックスである検索フォームがあります。

私は問題なくこれらのフォームをかなり長い間使用しています。リストボックスから項目を選択しない限り、SELECT ボタンは無効になります。フィルタリングまたはソートが変更されたときに、リストボックスのエントリを選択解除しようとしています。

これを行うには、リストボックス (複数選択オプションなし) にフォーカスを -1 に設定します。同等のアクションが多数あり、私はそれらのほとんどを試しました。ListIndex が -1 に設定されると、リストボックスで再クエリ アクションを実行するか、含まれているフォームで更新アクションを実行すると、'2115' ランタイム エラーが発生します。さらに、フィールドを保存する必要があるというさまざまな実行時エラーが発生して、フォーム上のテキスト ボックスまたはボタンにフォーカスを設定できません。

これがどのように機能するかについて誰か考えがありますか?

コード スニペットでは、エラーを取得する実際のコードは、Unselect listbox コメントの後の下部近くにある .requery 行です。

これは、私がこれを発生させた方法の1つのコードスニペットです。

    With Me.lbxFoundItems
        If strCurrentSearchText = vbNullString Then    'Nothing to search for
            .Visible = False
            Call ButtonSettings
            Exit Sub
        End If
        strQry = strSql & strWhere & strOrderBy
        If Nz(.RowSource, vbNullString) = vbNullString Then       'First time through
            Set qry = Nothing
            On Error Resume Next
            Set qry = CurrentDb.CreateQueryDef(strQname, strQry)
            If qry Is Nothing Then
                Set qry = CurrentDb.QueryDefs(strQname)
                qry.sql = strQry
            End If
            colGarbage.Add CurrentDb.QueryDefs(qry.Name), qry.Name
            .RowSource = qry.Name
        Else
            CurrentDb.QueryDefs(qry.Name).sql = strQry
        End If
'       Unselect the listbox entry
        .SetFocus                           
        .Selected(.ListIndex + 1) = False
        .Requery
        Me.Refresh

        Me.tbxListCount = .ListCount - 1
        .Visible = True

    End With
4

0 に答える 0