私は(c1という名前の)テキストボックスとボタンを持つフォームを持つAccessデータベースを持っています。ボタンをクリックすると、情報がテキストボックス値でフィルタリングされたデータシートフォームが開きます。クエリに複数の値を持つテキストボックスにアクセス
ボタンVBAは次のようになります。
c1.Value = Replace(c1.Value, ",", " Or ")
DoCmd.OpenForm ("dsForm")
データシートの後ろのクエリがデザインビューで次のようなものになります。
Field: Name1 | Name2
Criteria: | Like [Forms]![Menu]![c1].[value]
をこれには、私はこの後の結果をエクスポートすることができています優れたクエリ。
私の問題は、テキストボックスに値を入力し、コンマで区切ります。後でカンマで区切りますなぜ1つのテキストボックスでこれをやっているのかというと、私が検索したい値がたくさんあるからです。
これは、テキストボックスに1つの値を入力すると機能しますが、2つの値を入力すると機能しません。私はかなりクエリが完全なステートメントを文字列として取っていると確信しています。たとえば110,220と入力すると「110」や「220」のようになりますが、クエリでは「110または220」のようになります。
フィールドを文字列または数字に設定してみました。 vbaのクエリの基準をどのように操作するのですか?
Sub y()
a = "a,b,c,d"
'Split into 1d Array
b = Split(a, ",", , vbTextCompare)
For c = 0 To UBound(b)
Debug.Print b(c)
Next c
End Sub
あなたはのDebug.Printループのように配列をループすることができますし、個別にそれぞれの値を使用します。
なぜ "sql =" WHERE Name2を( "&c1&") "'にしてから 'DoCmd.openform" dsform "、acformDS、sql'を使ってSQLステートメントを置くことができませんでしたすべきだ。次に、あなたはopenargsを渡す必要はありませんし、他の形式のレコードソースステートメントを使用する必要はありません。 – geeFlo
@geeFloあなたは正しいです、それは状況にさらに適しています。適切な言葉遣いは "WHERE"予約語なしで行われます。 'sql = Name2 in( "&c1&") "' –