2017-01-25 3 views
0

ユーザーがリストからレコードを選択してIDを取得できるコンボボックスを構築できましたテーブルから。私は現在、約60,000レコードまで走っているテーブルを使っていますが、この方法を使ってレコードを見つけるのは現実的ではありません。MS Access内のリンクされたSQL Serverテーブル内のフィールドでワイルドカード検索としてテキストボックスを使用

ユーザーができるようにするには、テキストボックスに名前を入力し、フィールドの1つが一致するテーブルの関連レコードをコンボボックスに入力します。したがって、ユーザーがテキストボックスに 'This'を入力した場合、コンボボックスはフィールドに 'This'、 'This and that'と 'this'のレコードを表示します。フィールドに「それ」しかないレコードは表示されませんでした。

リンクSQL Serverテーブル内のテキストボックスが「txtBox」と呼ばれていると言う、コンボボックスが「COMBOX」と呼ばれますと、フィールドが「LinkedTable」

+0

まず、コンボボックスの更新をトリガーするものを決定する必要があります。テキストボックスイベントは、すべてのキーストロークで更新を行うかどうかを決定しなければならないか、またはユーザーが入力とタブアウトを完了するのを待つときに決定する必要があるため、扱いにくいです。その後、テキストを読んでコンボボックスの行ソースを作成します(これはAccess SQLクエリです)。コンボボックスに入力して再クエリーします。 – SunKnight0

答えて

0

私は他の回答で推奨オプションに別のルートを下って行きました。これは私のニーズをより正確に満たし、同様の問題を持つ人を助けるかもしれません。

最初に、フィールドのいずれかの条件としてテキストボックスの値を使用するように、コンボボックスのクエリを修正しました。 「LinkedTable」内の「SearchField」の基準で

は私が入力された:

Like "*" & [forms]![*FormName*]![txtBox] & "*" 

これはSearchFieldはtxtBoxに入力された値を含むものにCOMBOXで結果を制限します。ただし、これは動的には更新されず、最初の値がtxtBoxに入力された後にのみ更新されます。この問題を回避するには

、私は、これはtxtBoxの現在の値を使用して、もう一度クエリを実行するために、コンボボックスを強制しますCOMBOX

Private Sub comBox_GotFocus() 

    Dim ctlCombo As Control 

    ' Return Control object pointing to a combo box. 
    Set ctlCombo = Forms!FormName!comBox 

    ' Requery source of data for list box. 
    ctlCombo.Requery 

End Sub 

ためのイベント "には、フォーカス取得]をに次を追加しました「クリックされるたびに」

結果として、必要なコンボボックスに値の制限リストが表示され、ユーザーは新しいレコードを作成するために使用できるレコードを「検索」できるようになりますフォームに記録する。

0

「SearchField」と呼ばれ、私はあなたをないことをお勧めコンボボックスを使用します。ユーザーがいくつかの文字を入力してEnterキーを押すことができるテキストボックスがあります。

結果の「リスト」を表示すると、結果のいずれかを選択してクリックすると、指定されたデータ行を「編集」または「表示」することができます。

次のスクリーンショットでは、50万行の非常に小さなテーブルを扱っています。私たちは鍛冶屋を探していますので、smiと入力して入力してください。結果は瞬時に表示され、その時点でユーザーは「名字」や少数の名字を入力し、さらにドリルダウンしてフィルタリングすることができます。

形式は次のようになります。

enter image description here テキストボックスの更新後のイベントのコードは単純です:

Dim strSQL as String 

strSQL = "select * from tblCustomers where LastName like '" & me.TextSearch & "*’" 
me.RecordSource = strSQL 

だから、非常にわずかなコードが必要です。コンボボックスに結果を入力すると思いますが、ユーザーはボックスに入力してからコンボボックスから何かを選択して、何らかの形でそのレコードを編集用に表示しなければなりません。それはユーザーにとって3つ以上のステップのようなものです。 - あなたは、いくつかの文字を入力して、彼らは結果を入力打ったとき選択するユーザに表示されている

シンプルなテキストボックスを:

ちょうどGoogleや任意のコンピュータ・ソフトウェアの近くに最も会計やくそが何を使用します。

「眼鏡」アイコンボタンをクリックすると、単一のレコードを表示するフォームを起動できます。そのボタンの背後にあるコードは次のとおりです。

Docmd.Openform "frmEditDetails",,,"ID = " & ME!ID 
関連する問題