2017-10-19 23 views
1

私の同僚が私の質問に答えてくれましたが、他の誰かが問題を抱えている場合にはここに再投稿したいと思います。最後に注意してください。興味があれば、元の投稿はここにあります:Original Post入力時に結果が表示されるマルチフィールド検索

コミュニティの皆さん、特に@Andreに感謝します。

それは奇妙だったが、私がやったことをするとき、それは逆方向にすべての私の手紙に入れしようとして続けました。例:「Smith」を検索した場合は、「htims」と入力します。私はクリックイベントで何かすることができたと確信していますが、私は友達にそれを見てもらいました。これは次のようになります(コードの新しい行が何であるかについてのコメントを追加しました)。

最初に、テキストボックスのクリックイベントにより、ボックスをクリックするとテキストがクリアされ、検索(リセットボタンは必要ありません)

Private Sub txtSearch_Click() 
    Me.txtSearch.SetFocus 'new line of code 
    Me.txtSearch.Text = "" 
    Me.Requery 
With Me.txtSearch 
    .SetFocus 
    .SelStart 
End With 
End Sub 

これは、これは素晴らしい動作しているようだ複数のフィールド

Private Sub txtSearch_Change() 
    Dim strFilter As String 
    Dim sSearch As String 
    On Error Resume Next 

If Me.txtSearch.Text <> "" Then 
    sSearch = "'*" & Replace(Me.txtSearch.Text, "'", "''") & "*'" 
    strFilter = "[Last_Name] Like " & sSearch & " OR [First_Name] Like " & sSearch & " OR [SSN] Like " & sSearch 
    Me.Filter = strFilter 
    Me.FilterOn = True 
Else 
    Me.Filter = "" 
    Me.FilterOn = False 
End If 

If Me.Recordset.RecordCount = 0 Then 'new line of code 
    Me.Filter = "" 'new line of code 
    Me.FilterOn = False 'new line of code 
    Me.txtSearch.SetFocus 'new line of code 
    Me.txtSearch.Text = "" 'new line of code 
Exit Sub 'new line of code 
End If 'new line of code 

With Me.txtSearch 
    .SetFocus 
    .SelStart = Len(Me.txtSearch.Text) 
End With 
End Sub 

を検索します実際の検索、です。私はこの問題を完全に考慮していますが、質問をしています。あなたが私を助けることができれば、.Textを.Valueに置き換えたときに、なぜ文字が逆に進んでいたのですか?

ご協力いただきありがとうございます。

+1

元の記事の@Andreからの回答があなたの問題を解決した場合は、同じ問題に直面している可能性のある他のユーザーを助けるために、それを受け入れることを検討してください。 –

+0

私の間違い、私はそれをクリックすると、私はそれをクリックしたと思った。元の投稿を終わらせてください。また、@ KostasKに感謝します。後ろのテキストのあなたの助けのために。私はそれに何か関係があると思ったが、私はセルスタートが何をしているのかを誤解して、毎回再フォーカスしていると思う。私は私のDBに実装し、もう少し理解できるかどうかを見ていきます。ありがとうございました! –

+0

。セルスタート(選択開始)は、カーソルを与えられた値に単に置きます。値が指定されていない場合は、0になります。 –

答えて

0

あなたはEnterClickイベントを変更し、コントロールがフォーカスを持つことになりますので、.SetFocusをスクラップする必要があります:まず

Private Sub txtSearch_Enter() 
    With Me 
     .txtSearch.Value = "" 
     .Requery 
    End With 
End Sub 

.Text.Valueの違いについて:

.Textプロパティの更新コントロールがフォーカスを失ったときに、.Valueプロパティが更新される場所のすべてのキーストロークのみ。

Changeイベントでは、a)テキストボックスにはフィルタを適用する値(。テキスト)があり、b)レコードが返されない場合はレコードカウントがフィルタをクリアすることを確認する必要があります。

Private Sub txtSearch_Change() 
    Dim strFilter As String, sSearch As String 

    On Error Resume Next 
    With me 
     If .txtSearch.Text <> "" Then 
      sSearch = "'*" & Replace(.txtSearch.Text, "'", "''") & "*'" 
      strFilter = "[Last_Name] Like " & sSearch & " OR [First_Name] Like " & sSearch & " OR [SSN] Like " & sSearch 
      .Filter = strFilter 
      .FilterOn = True 
     End If 

     If .Recordset.RecordCount = 0 Then 
      .Filter = "" 
      .FilterOn = False 
     End If 
    End With 
End Sub 


後方手紙の理由は、カーソルが最初にあなたは、このようにあなたにそれが逆方向単語を反転された印象を与えて、文字を入力するたびにジャンプした.SelStart財産でした。

関連する問題