Access VBA質問箱 IV

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

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


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

【3642】WHERE句でワイルドカードと変数を使用するときは? こもれび 04/10/3(日) 23:05 質問[未読]
【3643】Re:WHERE句でワイルドカードと変数を使用す... クロ 04/10/4(月) 8:43 回答[未読]
【3645】Re:WHERE句でワイルドカードと変数を使用す... こもれび 04/10/4(月) 11:11 発言[未読]
【3646】Re:WHERE句でワイルドカードと変数を使用す... こもれび 04/10/4(月) 11:30 お礼[未読]
【3647】Re:WHERE句でワイルドカードと変数を使用す... クロ 04/10/4(月) 11:44 発言[未読]
【3651】Re:WHERE句でワイルドカードと変数を使用す... こもれび 04/10/4(月) 23:13 お礼[未読]

【3642】WHERE句でワイルドカードと変数を使用する...
質問  こもれび  - 04/10/3(日) 23:05 -

引用なし
パスワード
   こもれびです

どなた様かお助け願います <m(__)m>

WHERE句でワイルドカードと変数の両方を用いてSQLを記述する方法
がわからなくなってしまいました。

 & "WHERE (((T_Data.Sankasya)=" & strsankaid & ") " _
 & "and ((T_data.inputdate) like #2004/" & strdispmonth & "/%#));"

上記のWHERE句には条件が2つありますが、問題は and 以下の日付の条件
の部分で引っ掛かっています。
「strdispmonth」が月の変数です。また日がワイルドカード「%」となっております。
何か1つ構文がまずいようで、エラーとなってしまいます。

比較のために、次のWHERE句を実行した場合は問題ありません。

 & "WHERE (((T_Data.Sankasya)=" & strsankaid & ") " _
 & "and ((T_data.inputdate) like '2004/10/%' ));"

WHERE句でワイルドカードと変数を使用するときはどうしたらよいのでしょうか?

【3643】Re:WHERE句でワイルドカードと変数を使用...
回答  クロ  - 04/10/4(月) 8:43 -

引用なし
パスワード
   #を抜いてはどうなりますか?
Likeは「2つの文字列の比較を行います」とのことなので...

【3645】Re:WHERE句でワイルドカードと変数を使用...
発言  こもれび  - 04/10/4(月) 11:11 -

引用なし
パスワード
   クロさん おはようございます <m(__)m>

お世話になります。

うーむ、どうもlike節はシビアですね。

こちらに投稿する前にいろいろ試したのですが悉くはねられました。(T_T)

×:like #2004/" & strdispmonth & "/%# ));" → 日付の構文エラー
×:like 2004/" & strdispmonth & "/% ));" → 構文エラー

エラーメッセージを読むとどちらも惜しいところまではきているようです。
(「パラメータ無し」にはなっておらず、2004/10/% までは読んでいる。)

また、次の文は論外で変数が読み込まれませんでした。

×:like #2004/ & strdispmonth & /%#));" → 日付の構文エラー

【3646】Re:WHERE句でワイルドカードと変数を使用...
お礼  こもれび  - 04/10/4(月) 11:30 -

引用なし
パスワード
   こもれびです

解決しました

文は次の記述で通りました。

"and ((T_data.inputdate) like ""2004/" & strdispmonth & "/%""));"

なるほど…とも取れますし、何で?とも取れてしまう記述です。

何はともあれ、回答ありがとうございました。<m(__)m>

【3647】Re:WHERE句でワイルドカードと変数を使用...
発言  クロ  - 04/10/4(月) 11:44 -

引用なし
パスワード
   Like演算子は最初にも書きましたが文字列を比較を行うので
Like "文字列" となります。

ということは
コード上は「"」単体では使えないので、私の場合通常
"Like '2004/10/%'"と書くことになります。
意味としてはこもれびさんの「"」の括り方でいいと思います。

私なら
"and ((T_data.inputdate) like '2004/" & strdispmonth & "/%'));"
と書きますが...たぶん通るばすです。

【3651】Re:WHERE句でワイルドカードと変数を使用...
お礼  こもれび  - 04/10/4(月) 23:13 -

引用なし
パスワード
   こもれびです

▼クロ さん:
>Like演算子は最初にも書きましたが文字列を比較を行うので
> Like "文字列" となります。

>私なら
>"and ((T_data.inputdate) like '2004/" & strdispmonth & "/%'));"
>と書きますが...たぶん通るばすです。

通りました。
Like "文字列"を頭に叩き込んでおけば悩まずに済んだようです。
シングルクォーテーションで括ったほうがコードは読みやすいですね。
ご教示ありがとうございました。

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