DoCmd.ApplyFilter引数を文字にする

このQ&Aのポイント
  • DoCmd.ApplyFilter引数を文字に変換する方法について教えてください。
  • [社員番号]のデータ型をテキストに変更し、DoCmd.ApplyFilterのフィルタ式に反映する方法を教えてください。
  • DoCmd.ApplyFilterのフィルタ式にテキストの引数を使用する方法を教えてください。
回答を見る
  • ベストアンサー

DoCmd.ApplyFilter引数を文字にする

いつもお世話になっています。 以下のフィルタを作成して使っています。 Private Sub to12_Click() DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]=2)" DoCmd.OpenForm "F_登録" Set Forms!F_登録.Recordset = Me.Recordset End Sub DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]=2)" の [社員番号]にテキストを使用することになりました。 元テーブルも数値型からテキスト型に変更したのですが、 こうした検索の式に反映するにはどうしたらいいのでしょうか。 お力添えをお願いいたします。

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (295/459)
回答No.1

> DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]=2)"  DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]='2')" あるいは  DoCmd.ApplyFilter , "([部署コード] = 1 And [社員番号]=""2"")" 前者の方が分かりやすいでしょう。 ちなみに、日付時刻なら  [日付]=#2011/7/15# です。

suzupen
質問者

お礼

早々に回答いただきありがとうございます。 おかげですっきり解決いたしました。 また機会がありましたらどうぞよろしくお願いいたします。

関連するQ&A

  • Access2007 DoCmd.ApplyFilterのAnd条件について

    お世話になっております。 下記のフィルタはそれぞれ単独で機能しています。 DoCmd.ApplyFilter , "(コード Like '" & Me.コード1 & "')" DoCmd.ApplyFilter , "日付 between #" & 開始 & "# and #" & 終了 & "#" これをAndでフィルタリングしたいのですが、たとえばこのようにすると構文エラーとなります。 DoCmd.ApplyFilter , "(コード Like '" & Me.コード1 & "') and (日付 between #" & 開始 & "# and #" & 終了 & "#)" Andとしてはこのようにすれば機能することから、between以下がおかしいと思うのですが、自分ではわかりませんでした。 DoCmd.ApplyFilter , "(コード Like '" & Me.コード1 & "') and (コード Like '" & Me.コード2 & "')" ご教授いただければ幸いです。よろしくお願いいたします。

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

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

  • アクセス DoCmd.Minimize

    DoCmd.Minimizeで小さくしたフォームを元に戻したいのですが Sub 元に戻す() DoCmd.OpenForm "フォーム3" End Sub でいいのでしょうか? 一応上記のコードで元のサイズに戻りますが 元に戻したいのに、再度OpenForm する事に 抵抗というか疑問に思っています。 よろしくお願い致します。

  • ★アクセス2002★DoCmd.ApplyFilterの記述

    先日同じような質問をして回答頂きましたが再度お願いします。 住所検索フォームを作成中です。 住所検索フォームにテキストボックス[検索値]を配置して、[検索値]に入力した語句で始まるレコードを表示させています。[抽出開始]コマンドボタンに下記の様に記述していますが、これだと[住所]の頭の文字でしか抽出できません。[検索値]に入力する語句は必ずしも頭の文字ではないので、途中の一部の語句でもヒットするようにしたいのですが、上手く記述できずに困っています。 DoCmd.ApplyFilter , "[住所] Like '" & Forms![住所テーブル一覧]![検索値] & "*'"

  • DoCmd.OpenForm メソッド (Acce

    DoCmd.OpenForm メソッド (Access)について文法が分かりません。 何卒、お知恵を借りたく存じます。 よろしくお願いします。 やりたい事は従業員番号と期間を指定してフォームを開きたいのです。 おそらく文法が間違えているのではと思っております。 DoCmd.OpenForm "TargetSelection", acNormal, , "[従業員番号]='" & TList & "' AND [日付]= Between #' & Sday & #' And '# & Eday & #'"

  • Access 複数条件のフィルタ

    フォーム[F_MENU]に非連結のテキストボックス検索用A~Cで3つあります。 検索用A 検索用B 検索用C AかつBかつCという全件一致でフィルターをかけてフォーム[詳細]を開きたいのですが DoCmd.OpenForm "F_詳細", , , "A = '" & Forms!F_MENU!検索用A & "'" And "B = '" & Forms!F_MENU!検索用B & "'" And "C = '" & Forms!F_MENU!検索用C & "'" とやると、実行時エラー'13':型が一致しません。 と出てしまいます。 Aだけ、Bだけ、Cだけ、それぞれひとつずつ書けば、エラーなく結果が得られます。 DoCmd.OpenForm "F_詳細", , , "A = '" & Forms!F_MENU!検索用A & "'" DoCmd.OpenForm "F_詳細", , , "B = '" & Forms!F_MENU!検索用B & "'" DoCmd.OpenForm "F_詳細", , , "C = '" & Forms!F_MENU!検索用C & "'" おそらくANDの使い方が誤っていると思うのですが、添削お願いいたします。 全てのテキストボックス及び元テーブルのデータ型はテキスト型です。 条件は3つとも完全一致のみで、検索用ABC、F_詳細のABCそれぞれのカラムにNULL値はありません。 よろしくお願いします。

  • アクセスでのコマンドボタンでの上書き保存について。

    Private Sub cmd_修正_Click() Dim fname As String fname = "F_kihonn" '転送先のフォーム名 If SysCmd(acSysCmdGetObjectState, acForm, fname) = 0 Then DoCmd.OpenForm fname, acNormal '転送先フォームが開いてない場合は開く End If DoCmd.GoToRecord acDataForm, fname, acNewRec '転送先フォームの新規レコードをカレントにする '値の代入 Forms!F_kihonn!更新日 = Me!更新日 Forms!F_kihonn!コード = Me!コード Forms!F_kihonn!カナ = Me!カナ Forms!F_kihonn!発注者名 = Me!発注者名 Forms!F_kihonn!担当部署 = Me!担当部署 Forms!F_kihonn!郵便番号 = Me!郵便番号 Forms!F_kihonn!住所 = Me!住所 Forms!F_kihonn!ビル名等 = Me!ビル名等 Forms!F_kihonn!電話番号 = Me!電話番号 Forms!F_kihonn!FAX番号 = Me!FAX番号 Forms!F_kihonn!URL = Me!URL Forms!F_kihonn!特記事項 = Me!特記事項 End Sub というのを書きました。これだとコードにキーを持たせているので、転送先フォームでコード以外の内容を修正すると、「重複しているので変更できませんでした」とエラー表示が出ます。上書き保存ができればいいのでしょうけど。上書き保存のコマンドボタンとかを作ればいいのでしょうか??何かいい方法はありますか?わかる方いましたらご教示ください。初心者の質問ですみません。宜しくお願いします。

  • コマンドボタン名を取得して変数に代入したい。

    OS:windowsXp Access Version:Xp 既出でしたらすみません。 INDEXのフォームにて複数コマンドボタンを作り、それを押すと各登録フォームや集計フォームが開くようにしています。 さて、質問なのですが、コマンドボタンで別のフォームを開く時の処理を(フォーム名が違うだけで後は同じなので)まとめて書きたいのです。 現在は次のようにやっています。 ------------------------------------------------- Private Sub F_メニュー_Click() Call close_form DoCmd.OpenForm "F_メニュー", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub F_売上伝票_Click() Call close_form DoCmd.OpenForm "F_売上伝票", acNormal, , , acFormEdit, acWindowNormal End Sub      (中略) Private Sub 事業所別集計_Click() Call close_form DoCmd.OpenForm "F_事業所別集計", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub 消費税変更_Click() Call close_form DoCmd.OpenForm "F_消費税変更", acNormal, , , acFormEdit, acWindowNormal End Sub Private Sub システム終了_Click() Call close_form DoCmd.RunCommand acCmdExit End Sub Private Sub close_form() msgbx = False DoCmd.Close acForm, "index", acSaveYes End Sub ------------------------------------------------- これを  ボタン名_Click() ではなく  frm_open() 押されたボタン名を変数に取得(ボタン名=Form名にします。) DoCmd.OpenForm 押されたボタン名変数 のように共有したいのです。 どうすれば出来ますでしょうか?ご指導よろしくお願いします。

  • 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]の表記が良くないのだと思うのですが、具体的な表記方法が分かりません。 よろしくお願いします。

  • 複数のフィールドに対する抽出

    Private Sub 社員抽出_Click() Dim ipt As String ipt = [社員コード指定] DoCmd.ApplyFilter , "[社員コード]=" & ipt End Sub っとすれば「社員コード」フィールドに対して抽出を行えます。 そこで質問です。 これだとひとつの項目に対しての抽出は可能ですが、 2つ以上のフィードに対して抽出するという事はできますか? 自分としては「社員コード」以外に「年度」フィールドからも同時に抽出を行いたいのです。 宜しくお願いします。