Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1975 / 2272 ツリー ←次へ | 前へ→

【4371】抽出条件にFormat関数は使えないのでしょ... さつこ 05/2/8(火) 15:26 質問[未読]
【4373】Re:抽出条件にFormat関数は使えないのでしょ... クロ 05/2/8(火) 17:55 回答[未読]
【4395】Re:抽出条件にFormat関数は使えないのでしょ... さつこ 05/2/10(木) 11:02 質問[未読]
【4396】Re:抽出条件にFormat関数は使えないのでしょ... クロ 05/2/10(木) 11:13 回答[未読]
【4399】Re:抽出条件にFormat関数は使えないのでしょ... さつこ 05/2/10(木) 14:55 質問[未読]
【4400】Re:抽出条件にFormat関数は使えないのでしょ... クロ 05/2/10(木) 15:06 回答[未読]
【4402】Re:抽出条件にFormat関数は使えないのでしょ... さつこ 05/2/10(木) 16:22 お礼[未読]
【4404】Re:抽出条件にFormat関数は使えないのでしょ... クロ 05/2/10(木) 16:44 回答[未読]

【4371】抽出条件にFormat関数は使えないのでしょ...
質問  さつこ  - 05/2/8(火) 15:26 -

引用なし
パスワード
   よろしくお願いします!

テーブルでは年月日で登録されているデータから、画面入力された年月と同じデータを
抽出したいのですが、クエリーでは抽出されるのに、コードにSQLを展開すると、
うまくいきません。

ex.伝票日付  2005/01/01 〜 2005/02/28 のデータがある
  画面年月  2005/01 2005/01 月分のデータを抽出したい
  抽出条件  WHERE ((Format([伝票日付],"yyyymm"))=Format([Forms]![A伝票日付],"yyyymm")))

  実行すると、上記の Format([伝票日付],"yyyymm") で、
  指定した式で参照されている'|'フィールドが見つかりません。 というエラーが
  出てしまいます。クエリーでは、Format([伝票日付],"yyyymm") はテーブル欄に
  テーブル名は表示されないので、それが原因なのかなとは思うのですが、
  これをどのように回避するかがわかりません。

  よろしくお願いします。

【4373】Re:抽出条件にFormat関数は使えないのでし...
回答  クロ  - 05/2/8(火) 17:55 -

引用なし
パスワード
   > WHERE ((Format([伝票日付],"yyyymm"))=Format([Forms]![A伝票日付],"yyyymm")))

フォーム名が「A伝票日付」ならコントロールが指定されてませんし、
「A伝票日付」コントロール名ならフォーム名が指定されていませんが...
その辺では?

【4395】Re:抽出条件にFormat関数は使えないのでし...
質問  さつこ  - 05/2/10(木) 11:02 -

引用なし
パスワード
   クロ さんへ
早くに回答いただいていたのにすみません。

そして、以下のように間違いだったのです。

>> WHERE ((Format([伝票日付],"yyyymm"))=Format([Forms]![A]![伝票日付],"yyyymm"))) でした。

いろいろやってみたのですが・・・どうにもうまくいきません。

【4396】Re:抽出条件にFormat関数は使えないのでし...
回答  クロ  - 05/2/10(木) 11:13 -

引用なし
パスワード
   > クエリーでは抽出されるのに、コードにSQLを展開すると
この意味はどういうことですか?もう少し詳しく...

また、フォームAの「伝票日付」の書式はどうのようになってますか?

【4399】Re:抽出条件にFormat関数は使えないのでし...
質問  さつこ  - 05/2/10(木) 14:55 -

引用なし
パスワード
   クロ さんへ

たとえばですが、フォームAの「処理日付_FROM」は
  Format(Date, "yyyy") & "/" & Format(Date, "mm")
をセットします。
T_テーブルの[伝票日付]は yyyy/mm/dd で入っています。

クエリーを作成し、SQL文に展開すると
 SELECT T_テーブル.地区コード, T_テーブル.地区名, T_テーブル.店舗コード,
     T_テーブル.店舗名,T_テーブル.伝票日付
 FROM T_テーブル
 WHERE ((Format([伝票日付],"yyyymm"))
     =(Format([Forms]![A]![処理日付_FROM],"yyyymm")))
になるのですが、これをコードで
 sql = "SELECT T_テーブル.地区コード, T_テーブル.地区名,"
 sql = sql & "T_テーブル.店舗コード,T_テーブル.店舗名,"
 sql = sql & "T_テーブル.伝票日付 "
 sql = sql & "FROM T_テーブル"
 sql = sql & "WHERE ((Format([伝票日付],""yyyymm""))"
 sql = sql & "=(Format([Forms]![A]![処理日付_FROM],""yyyymm"")));"
こんなかんじにしてみるのですが・・・NGです。
日付がテーブル、画面項目とも "yyyy/mm/dd" ならなんら問題がないのですが、
片側が "yyyy/mm" という場合に、たとえば 2005/02 のデータを抽出する
のができないでおります。
どこか根本的に勘違いしているのでしょうか?

よろしくお願いします。

【4400】Re:抽出条件にFormat関数は使えないのでし...
回答  クロ  - 05/2/10(木) 15:06 -

引用なし
パスワード
   sql = "SELECT 地区コード, 地区名, 店舗コード, 店舗名, 伝票日付"
sql = sql & " FROM T_テーブル"
sql = sql & " WHERE Format([伝票日付],'yyyymm')='" & Format([Forms]![A].[処理日付_FROM],'yyyymm') & "';"

こうかな?

新手では...
sql = "SELECT 地区コード, 地区名, 店舗コード, 店舗名, 伝票日付"
sql = sql & " FROM T_テーブル"
sql = sql & " WHERE [伝票日付] Like '" & Format([Forms]![A]![処理日付_FROM],'yyyymm') & "*';"
これでも通るかも?

SQL文ではスペースが重要になりますのでご注意を...
また、コードなどで「"」を「"」内で使えないので「'」を使用してください。

【4402】Re:抽出条件にFormat関数は使えないのでし...
お礼  さつこ  - 05/2/10(木) 16:22 -

引用なし
パスワード
   クロ さんへ

ありがとうございました。
今すぐ確認できないのであとでやってみます。
>コードなどで「"」を「"」内で使えないので「'」を使用
については「"」は「""」を使っていたのですが、
もしかしてそれが災いだったのかなぁ。

とにかく、いろいろお世話になりました。

【4404】Re:抽出条件にFormat関数は使えないのでし...
回答  クロ  - 05/2/10(木) 16:44 -

引用なし
パスワード
   間違ってたので修正...
前者
<省略>
sql = sql & " WHERE Format([伝票日付],'yyyymm')='" & Format([Forms]![A].[処理日付_FROM],"yyyymm") & "';"

後者
<省略>
sql = sql & " WHERE [伝票日付] Like '" & Format([Forms]![A]![処理日付_FROM],"yyyy/mm") & "*';"

以上訂正してお詫び申し上げます。

1975 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078284
(SS)C-BOARD v3.8 is Free