Microsoft Access 掲示板

構文エラー

5 コメント
views
4 フォロー

SQLビューから自分なりに加筆してみたのですが、実行すると「実行エラー3075 文字列の構文エラー」になってしまいます。初めてSQLを書いています。何がダメなのか分かりやすく教えていただけませんか?

        StrSQL = "UPDATE T_01地耐力 SET 基1 =IIf([№]=1 Or [№]=9,"",'※')" &
                "WHERE [変位1]=DMax(変位],№>=1 AND №<=9) AND ([№] Between 1 And 9);"

        DoCmd.RunSQL (StrSQL)

ちちみ
作成: 2023/08/30 (水) 12:38:58
通報 ...
1
hatena 2023/08/30 (水) 15:13:00 修正

    StrSQL = "UPDATE T01地耐力 SET 基1 =IIf([№]=1 Or [№]=9,"",'※')" &
            "WHERE [変位1]=DMax(変位],№>=1 AND №<=9) AND ([№] Between 1 And 9);"And 9);"

上記コードの改行は実際にはないとして(あると構文エラーで実行すらできないので)、
下記に変更するといいでしょう。

StrSQL = "UPDATE T_01地耐力 SET 基1 =IIf([№]=1 Or [№]=9,"""",'※')" & _
    "WHERE [変位1]=DMax(変位],№>=1 AND №<=9) AND ([№] Between 1 And 9);"

VBAの文字列内(""内)で"を表現するには""と重ねる必要があります。
あるいは、'を使う方が読みやすいですね。

StrSQL = "UPDATE T_01地耐力 SET 基1 =IIf([№]=1 Or [№]=9,'','※')" &
    "WHERE [変位1]=DMax(変位],№>=1 AND №<=9) AND ([№] Between 1 And 9);"
2
ちちみ 2023/08/31 (木) 12:21:13 2d148@1925b

ありがとうございます。途方に暮れていたのでとっても助かります!

3
ちちみ 2023/08/31 (木) 12:28:04 2d148@1925b

実際 教えていただいたものを張り付けて実行したのですが
実行エラー3075 DMax(変位],№>=1 AND №<=9) AND ([№] Between 1 And 9) と表示されました。
何がいけなかったのでしょう?お願いいたします

4

後半の方を見てませんでした。下記でどうでしょうか。テーブル名の部分は実在のテーブル名にしてください。

StrSQL = "UPDATE T_01地耐力 SET 基1 =IIf([№]=1 Or [№]=9,'','※')" & _
    "WHERE [変位1]=DMax('[変位]','テーブル名','[№] Between 1 And 9');"
5
ちちみ 2023/08/31 (木) 16:28:09 2d148@1925b

お騒がせいたしました。落ち着いてみたら解決できる事でしたね。すみません。ありがとうございました。