• ベストアンサー

MS ACCESS2000のVBAでDocmd.openformしてます

openform のパラメータのwhereconditionに、like演算子を使って、 「 フィールド名 like %文字% 」 というような指定をしたいのですが、上手くいきません。 演算子が無いとか、いろいろ言われてしまいます。 どのように記述すると、動作するでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> 「 フィールド名 like %文字% 」 Oracle系とはワイルドカードキャラクタが異なります。 フィールド名 like '*文字*' か フィールド名 like "*文字*" を使用してください。 任意の文字列を表す場合の%は*、 任意の1文字を表す場合の_は? です。

KAZUMI2003
質問者

お礼

ありがとうございました。 結果的には、シングルクォート(ダブルクォートでもいいのですね)と、%→*の2重の罠にはまっていたようでした。 回答感謝いたします

その他の回答 (4)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

DoCmd.OpenForm "テーブル名", , , "フィールド名 Like '*文字*'" これで出来ます。 定数を使ってなら Dim stDocName As String Dim stLinkCriteria As String stDocName = "テーブル名" stLinkCriteria = "a Like '*文字*'" DoCmd.OpenForm stDocName, , , stLinkCriteria で出来ます。

KAZUMI2003
質問者

お礼

ありがとうございました。 結果的には、シングルクォート(ダブクォートでもいいのですね)と、%→*の2重の罠にはまっていたようでした。 回答感謝いたします。

noname#22222
noname#22222
回答No.4

s_husky です。 Like の前後に全角のブランクがある場合[演算子がありません]と出ます。 No.1さんの回答を<全角のブランク抜き>で!!

KAZUMI2003
質問者

お礼

ありがとうございました。 結果的には、シングルクォート(ダブルクォートでもいいのですね)と、%→*の2重の罠にはまっていたようでした。 回答感謝いたします。

noname#22222
noname#22222
回答No.3

s_husky です。 回答をキャンセルします。 MDBと仮定して  Like '*A*'を Like '%A%'と書いても 検索しないだけですね! [演算子が無い]というエラーメッセージの原因ではないようです。

noname#22222
noname#22222
回答No.2

フィールド名 like '%文字%' 単に シングルクオーテーションが無いだけ!? それとも、 フィールド名 like '*文字*' クライアント/サーバー系か MDB なのか不明なので判りません。

関連するQ&A

  • ACCESS VBAのOpenForm書き方

    ACCESS VBAについて教えてください。 DoCmd.OpenFormのWhereConditionの部分の記述がわからないのです。 1つの条件の場合は問題なく表示できたのですが、複数条件にすると「抽出条件でデータ型が一致しません。」とエラーになってしまいます。 なぜでしょうか? このように記述しています。 DoCmd.OpenForm "会員データ", , , "種別 = '" & Me![種別] & "' AND 会員番号 = '" & Me![会員番号] & "'" 種別、会員番号ともに数値データです。

  • OpenForm

    AccessVBAで DoCmd.OpenForm "メインメニュー", acNormal, "", "", , acNormal という記述がありますが、式.OpenForm(FormName, View, FilterName, WhereCondition, DataMode, Window Mode, OpenArgs)で引数を合わせていくと個数があいません。最後のacNormalは、どれでしょうか?

  • [Access VBA] DoCmd.OpenForm ...の書式について(VBAに詳しい方求む!)

    仕事でAccessを使用しています。 帳票管理のデータベースを作ってて 帳票名フィールドに各種の帳票の名前が格納されています。 ここはコンボボックスにしてあり、データベース化する 対象の帳票も決まってます。 メインのフォームには帳票の基礎データを入力し フォーム上に作ったボタン(ボタン名「詳細記録」)を押すことで 各帳票の詳細な記録を書きこむフォームが現れるように設計する予定です。 そこで、メインのフォームに設けたボタンの 「クリック時」のイベントプロシージャに以下の記述をしました。 Private Sub 詳細記録_Click() DoCmd.OpenForm 帳票名 End Sub ボタンをクリックした時点で帳票名フィールドに記載されている 帳票の詳細記録フォームがたちあがります。 例えば帳票名フィールドが 「AA」の時→ボタンClick→AAの詳細記録フォームが立ちあがる。 「BB」の時→ボタンClick→BBの詳細記録フォームが立ちあがる。 (企業秘密のため具体的な帳票名を書けません。) 実はこのような動作をしてくれるのが目的だったのですが 疑問があるんです。 それより前には、上述のと1箇所だけ記述がいろいろ変えてました。 DoCmd.OpenForm "帳票名" 帳票名のところがダブルクォーテーションでくくってあるかないか の違いです。 くくるとエラーが出ますが、くくらないとうまく行きます。 [帳票名]のときもうまく行きましたが、"[帳票名]" はだめのようです。 また、" "の中を具体的な帳票の名前にすると (例:DoCmd.OpenForm "AA") いつでもそのAAフォームだけがたちあがります。 (帳票名フィールドの記述がBBでも) たまたまダブルクォーテーションをはずすと うまく反応してくれたんでよかったんですが ダブルクオーテーションひとつで なぜこんなに動きが違うのか? わかる方よろしくお願いします。

  • Access DoCmd.OpenFormの引数

    現在Access VBAを勉強中の者です。 DoCmd.OpenForm については、同じQ&Aがありますが回答内容の意味が理解できず応用が利きません。 具体的には、 DoCmd.OpenForm "フォーム名", , , "商品番号 = '" & Me!商品番号 & "'" における、Where句の「"」と「'」の使い方です。 私の情報収集では、   (1)文字列は「"」で囲む。   (2)Where句は「"」で囲む。   (3)「"」の囲みが重複したら内側を「'」に変更する。 なのですが、(2)と(3)は上記の例からでは理解に苦しみます。 DoCmd.OpenForm のWhere句の「"」と「'」の使い方についてその仕様を教えて下さい。

  • DoCmd.OpenFormパラメータが表示される

    いつもお世話になっています。 DoCmd.OpenFormで条件に合致するフォームが開く以下のコードを作成して使っています。 Private Sub send_Click() DoCmd.OpenForm "集計", acFormDS, , "[支所] =" & Me.支所 & " And [部署] =" & Me.部署, , acHidden End Sub [部署]はこれまで数値で表していましたが、テキストを使用することになりました。 上記のプロシージャを実行すると[部署] のところにパラメータが表示されて 入力すると指定の支所と部署のデータが表示されます。 別の質問で、テキスト型を検索する記述方法は教えていただいて解決したのですが、 パラメータを表示せずに上記の式に反映するにはどうしたらいいのでしょうか。 型は数値型からテキスト型に変更しています。 お力添えをお願いいたします。

  • ACCESS VBA コマンドDoCmd.OpenFormの引数

    2つの項目で主キーを構成するテーブルを定義しました。 この場合、VBA コマンドを使って登録画面を開く為の コマンドの引数の指定方法がわかりません。 テーブル名: T運転手割当 1)W業務依頼日 <=主キー 2)W使用車両  <=主キー 3)W運転手番号 DoCmd.OpenFormの書式 ■第4引数 WhereCondition/レコード抽出条件(省略可能) テーブルやクエリと連結しているときのレコード抽出条件を指定します。 1)仮に主キーが1つの時、以下の表記で正常に表示されます。 'フォームを開く DoCmd.OpenForm "F運転手割当登録", acNormal, , "W業務依頼日 = " & Me![lstWariate] 2)主キーが2つの時、以下の表記ではF運転手割当画面は表示されるのですが、 肝心のデータがセットされずに空白で表示されます。 'フォームを開く DoCmd.OpenForm "F運転手割当登録", acNormal, , ("W業務依頼日 = " & Me![lstWariate]) & " And " & ("W使用車両 = " & Me![lstWariate]) [lstWariate]とは、データの検索画面で検索結果を表示するリストボックスの名称です。 検索結果から該当データを選択して、個別データの修正画面に移行したいのですが・・・。 Me![lstWariate]の表記が良くないのだと思うのですが、具体的な表記方法が分かりません。 よろしくお願いします。

  • 演算フィールドが、パラメータクエリになってしまうのはなぜ?

    アクセス2003を使っているのですが、演算フィールドを作るために、フィールド名に[]を使うと、パラメータクエリとして動作してしまうのですがなぜでしょうか? 同じように作り直すと、正常に、演算フィールドとして、動作するのですが、パラメータクエリと演算フィールドの式は、同じ[]を使いますが、どこが違うと、どっちになるのでしょうか? 今は、作ってみないと、どっちになるかわかりません。

  • Access2000 (VBA) ' & "などの記号の意味

    次のコードで迷ってます。 InputBoxに入力した、都道府県と同一ものだけをレポートに表示させるものです。(ちなみにこのコードは正しく動きます。) Private Sub コマンド2_Click() Dim myStr As String myStr = InputBox("抽出する都道府県は?") DoCmd.OpenForm FormName:="顧客マスタ表形式フォーム", _ WhereCondition:="[都道府県]='" & myStr & "'" End Sub この、 "[都道府県]='" & myStr & "'" が理解できません。 (一番外の”は、WhereConditionの条件を示すのは分かります。) ただ、'や&がなぜ必要で、このコード内ではどのような役割をしているのか分かりません。(’や&を消すとエラーになるので、この書き方が正解なのでしょうけど、理解できずに困っています。) そもそも、データ型が文字列でも、変数には&のような文字列連結演算子が必要なのか? なぜ、’が必要なのか?

  • アクセスOpenForm 引数FilterName

    テーブルをレコードソースとしているフォームがあるのですが そのテーブルのtestフィールドに値がいくつかはいっていて、「い」と言う値を抽出した状態で フォームを開きたいのですが Sub test() DoCmd.OpenForm "フォーム1", acNormal, "test ='い'" End Sub これは、意味がないのですか? このコードを実行してフォームを開いても、 testにフィルタは適用されない状態で開きます。 また、ヘルプのFilterNameの項目を見ると ------------------------------------------- 有効なSQLWHERE句を文字列式で指定します。 ただし、WHEREという語を指定する必要はありません。 ------------------------------------------- と書いてありますが、"test ='い'"と言う記載の仕方は間違っていますか? Private Sub Form_Load() Me.Form.Filter = "test ='い'" Me.Form.FilterOn = True End Sub だと、フィルタが適用されます。 OpenForm メソッドを使ってフィルタを適用する方法を教えてください。

  • accessのVBAで変数名でフィールド指定は?

    VBAの記述として フィールド名を指定するときに通常であれば forms![顧客一覧]![ID]やforms![顧客一覧]![age]と記述しますが この[ID]という部分についてあるフォームから IDという文字があるときはIDフィールド、 ageという文字があるときはageフィールドに記述というのはできるのでしょうか?