私はVBAとADODBの助けを借りてExcelから検索するアクセスデータベースを持っています。複数の列で検索する
これは完璧に機能しますが、一度に1つしか検索できません。列[2]の「姓」も持つ[1]列の「名」のすべてのインスタンスを検索したいとします。または、列[1]の「ファーストネーム」と列[3]の「アドレス」。
私はどのようにユーザーフォームのテキストボックスからそれを行うことになるでしょうか?
何らかの形で「Firstname + Lastname」などを追加しようとしていましたが、コードのロジックを理解できません。助言がありますか?
これは私が今持っているものです。提案のため
Private Sub cmd_lookup_Click()
Dim cn As Object
Dim rs As Object
Set cn = CreateObject("ADODB.Connection")
Set sqlConnect = New ADODB.Connection
Set rs = CreateObject("ADODB.RecordSet")
sqlConnect.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Source\database.accdb;Persist Security Info=False;"
cn.Open sqlConnect
rs.ActiveConnection = cn
SearchCriteria = "%" & searchCrit.Text & "%"
rs.Open "SELECT [1],[2] ,[3],[4], [5] FROM [tblDatabase]" & _
"WHERE [1] LIKE '" & SearchCriteria & "' " & _
" OR [2] LIKE '" & SearchCriteria & "' " & _
" OR [3] LIKE '" & SearchCriteria & "' " & _
" OR [4] LIKE '" & SearchCriteria & "' " & _
" OR [5] LIKE '" & SearchCriteria & "' " & _
"ORDER BY [2] Desc;", _
cn, adOpenStatic
Dim i As Integer
If Not rs.EOF Then
rs.MoveFirst
i = 0
With lstLookup
'Code not relevant
End With
rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End If
End Sub
感謝:)
これを実行する方法はたくさんあります。私はユーザーフォームを使って情報を入力して照会する傾向があります。次に、これらの入力を変数として保存します。それは空白であるものを省略するために、いくつかの条件付きロジック(すなわち 'If..End If'または' Select ... Case')を必要とします。希望の出力を知らずに具体的に伝えるのは難しいです。 – Kyle
を使用すると、whereステートメントを動的に構築することができます。複雑さはguiとそれがANDやORなどのときに識別するためのパラメータですが、ドロップダウンリストやチェックボックスをAND/ORに使用し、SQL文を構築するときにその値を使用することができます – Matt
複数の入力ボックスフォームに?たとえば、3つのボックスがある場合、それらを満たすことができます。次に、それらの値を持つクエリに対して「AND」ステートメントを追加するだけです。ボックスが空白の場合は、空の文字列ではなくワイルドカードを挿入できます。 – SandPiper