ちちみ
2023/09/08 (金) 12:43:07
2d148@1925b
何度も申し訳ありません
記載方法のご説明、ありがとうございました。今度はちゃんと見えていますでしょうか?
クエリのデザインビューに変数に置き換える前の以下の分を張り付け、& _ と " を外して実行させてみました。
StrSQL = _
SELECT TOP 1 基4, 変位4, №
FROM T_01_地耐力
WHERE (T_01_地耐力.№ Between 1 And 9)
ORDER BY T_01_地耐力.変位4 DESC , T_01_地耐力.№ DESC
クエリの画面では、表示されました。もう一度VBAに戻って & _ と " を付け実行すると
StrSQL = _
"SELECT TOP 1 基4, 変位4, №" & _
"FROM T_01_地耐力" & _
"WHERE (T_01_地耐力.№ Between 1 And 9)" & _
"ORDER BY T_01_地耐力.変位4 DESC , T_01_地耐力.№ DESC"
今度は実行時エラー3075「WHERE № Between 1 And 9 ORDER BY T_01_地耐力.変位4 DESC , T_01_地耐力.№ DESC」
演算子がありません になってしまいました。
お願いいたします
通報 ...
前回の質問でも同じ補足をしましたが、VBAの文字列では改行をそのまま入力することはできません
「
_
」はVBAコードとしての改行を無視するのみですは、単に
として実行されます。この結果生成される文字列は
SELECT TOP 1 基4, 変位4, №FROM T_01_地耐力
となります。これでは、「
SELECT
句で№FROM
フィールドを指定」という記述になってしまいますねこの直後ですでに構文エラーとなるような気もしますが、エラーメッセージがそのように出力されるのはよくわかりません
hirotonが提示したちょっと楽をする記述をするなら次の通りです
StrSQL =
" SELECT TOP 1 基4, 変位4, №" &
" FROM T_01地耐力" &
" WHERE (T_01地耐力.№ Between 1 And 9)" &
" ORDER BY T_01_地耐力.変位4 DESC , T_01_地耐力.№ DESC"
実際のSQL構文部分の各行で先頭に半角スペースを追加する形で記述します
SQL構文は「改行」と「半角スペース」が同じ役割をするので、VBAでは直接入力できない改行の代わりに半角スペースを使います。さらに、改行を行の最後に入力するかわりに、行の先頭で記述します
こうすることにより、
面倒な改行の入力が半角スペース1つで済む
インデントがそろって見やすい
行末(文字列の最後)という気づきにくいところでの記述漏れを防げる
というメリットがあります