• ベストアンサー

DoCmd.OpenForm メソッド (Acce

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

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8524/19373)
回答No.2

コピペミスで、変な文字が入ってしまいました。 こっちが正解です。 DoCmd.OpenForm "TargetSelection", acNormal, , "[従業員番号] = '" & TList & "' AND [日付] BETWEEN #" & Sday & "# AND #" & Eday & "#" ANo.1の回答は破棄して下さい。

yooohey
質問者

お礼

ずばりで解決しました! ありがとうございました。感謝です!

その他の回答 (2)

  • chie65535
  • ベストアンサー率43% (8524/19373)
回答No.3

追記。 msgboxを使って、書いてある引数が間違ってないか確認してみるのが、一番の近道です。 フォームを開く代わりに msgbox "[従業員番号]='" & TList & "' AND [日付]= Between #' & Sday & #' And '# & Eday & #'" とやってみて、どういう文字列が表示されるか見てみて下さい。 添付画像は、質問文にある引数を、そのままmsgboxで表示した結果です。「明らかに変な値になっている」のが明白です。

yooohey
質問者

お礼

ご追記まで頂き、感謝感謝です。 この方法はたしかに近道ですね^^今後に役に立つお知恵までありがとうございました。

  • chie65535
  • ベストアンサー率43% (8524/19373)
回答No.1

DoCmd.OpenForm "TargetSelection", acNormal, , "[従業員番号] = '" & TList & "'" ' & " AND [日付] BETWEEN #" & Sday & "# AND #" & Eday & "#" シングルクォート、ダブルクォートの使い方が微妙に間違っているので、良く見てみて下さい。

yooohey
質問者

お礼

すばやい回答ありがとうございます 次項のご回答をベストアンサーにさせて頂きました。

関連するQ&A

  • 「DoCmd.OpenForm」が実行できない(vbaでフォームを開きたい)

    「フォーム1を開く」vbaで行ないたいのですが エラーになってしまいます。 Sub test1() DoCmd.OpenForm , acNormal, フォーム1 End Sub は「変数が定義されていません」と表示され (「変数の宣言を強制する」にチェックを入れています) Sub test2() DoCmd.OpenForm , acNormal, "フォーム1" End Sub は「引数は省略できません」となります。 Sub test1() DoCmd.OpenForm , フォーム1, acNormal End Sub Sub test2() DoCmd.OpenForm , "フォーム1", acNormal End Sub これにしても同じでした。 「OpenForm」をヘルプで調べてみたところ 「expression 」と「FormName」が「 必ず指定します。」でした。 「expression 」がないからだめなのでしょうか? すいません、助けてください。 よろしくお願いします。

  • Access DoCmd.OpenFormの引数

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

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

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

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

  • アクセス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のOpenForm書き方

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

  • 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 & "')" ご教授いただければ幸いです。よろしくお願いいたします。

  • VBAテスト勉強中でこまってます。

    基本的なことが分からず、進めません。アクション名メソッド名を答える問題ですがdocmd.openform "ppppp",acnormalの場合はどうなるのでしょうか?すみません。参考書呼んでも理解できません。

  • Accessの検索フォーム

    以前にも似たような質問をして、その時は解決したのですが、また同じようなことでつまづいて、以前の回答をみて、 そのとおりにやってるつもりなのに、できなくて…。 テーブル1とフォーム1・フォーム2があります。 フォーム1に入力された情報をもとに、テーブル1の内容を検索して、フォーム2に表示するものを作成しています。 テーブル1には「***.***.**.☆」(情報)という形の情報が入っています。 *の部分の桁数は固定で☆は不定形です。(テキスト形式) フォーム1に入力された情報は「(***.***.)**.*」(検索1)や「(***.***.)**.**」(検索2)などです。 ※()内は入力せず テーブル1の情報の9文字目以降と、フォーム1に入力された情報を比べたくて、以下のようなものを作成しました。 (多少省略等があります) condKensaku = "(Mid(Val(テーブル1.情報),9) between " & Val(Me!検索1.Value) & " and " & Val(Me!検索2.Value) & ")" wherecond = condKensaku DoCmd.OpenForm "フォーム2", acNormal, WhereCond これを実行すると 実行時エラー '2501': OpenForm アクションの実行はキャンセルされました。 と出て、デバッグを押すと、 DoCmd.OpenForm "フォーム2", acNormal, WhereCond の行が黄色になります。

  • フォームが開かない

    「F説明」と言うフォームは存在しているし、ナビゲーションウインドウで、ダブルクリックすると、 フォームは開くのに、なぜかVBAで DoCmd.OpenForm Forms("F説明"), acNormal とすると "実行時エラー2498 指定した式は、 いずれか の引数とデータ型が対応していません。” となります。 このvbaコードは、"F説明"の部分を変数にして使いまわしたいので、ダブルコーテーションで囲える文法にしたいのですが、どこが間違っているのか教えていただけますか。

専門家に質問してみよう