Microsoft Access 掲示板

選択クエリで抽出した値で、更新したい / 10

16 コメント
views
4 フォロー
10
hiroton 2023/09/08 (金) 16:45:26 fe56d@f966d >> 9

前回の質問でも同じ補足をしましたが、VBAの文字列では改行をそのまま入力することはできません
_」はVBAコードとしての改行を無視するのみです

"SELECT TOP 1 基4, 変位4, №" & _
"FROM T_01_地耐力"

は、単に

"SELECT TOP 1 基4, 変位4, №" & "FROM T_01_地耐力"

として実行されます。この結果生成される文字列は

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"

        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つで済む
インデントがそろって見やすい
行末(文字列の最後)という気づきにくいところでの記述漏れを防げる
というメリットがあります

通報 ...