こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

INSERT INTO ステートメントの横文エラー。の解決

INSERT INTO ステートメントの横文エラー。の解決
Access VBAについての質問です。
在庫管理のフリーソフトを落とし改良している者です。
見よう見まねで手を加えてきたのですがタイトルのようなエラーが発生しました。
全くの初心者(というか未経験者です)なもので調べてみてもエラーの意味がよく分からず解決できずにいます。
こんな私にも分かりやすいようにどなたかご教授願えませんでしょうか?
Access2003を使用しています。
ソフトはhttp://ebe.jp/psoft/zaiko/様から落としたものです。


DoCmd.RunSQL ("INSERT INTO 入出庫(日付, 取引先No, 取引先名, 区分, 商品コード, メーカー名, 商品名, カナ, 大分類, 中分類, 小分類, 単価, 入庫数量, 出庫数量, 備考) VALUES(" & strDate & ", '', '棚卸', '棚卸', '" & RS.Fields("コード") & "', '" & RS.Fields("メーカー名") & "', '" & RS.Fields("商品名") & "', '" & RS.Fields("カナ") & "', '" & RS.Fields("大分類") & "', '" & RS.Fields("中分類") & "', '" & RS.Fields("小分類") & "', " & RS.Fields("単価") & ", 0, " & Abs(dblSa) & ", '')")
これが元のソースで当然ですが落としたソフト自体は問題なく動作していました。
これに手を加えたものが(下矢印)のソースになります。


DoCmd.RunSQL ("INSERT INTO 入出庫(日付, 取引先No, 取引先名, 区分, 商品コード, メーカー名, 商品名, 型番, カナ, 大分類, 中分類, 小分類, 単価, 入庫数量, 出庫数量, 備考) VALUES(" & strDate & ", '', '棚卸', '棚卸', '" & RS.Fields("コード") & "', '" & RS.Fields("メーカー名") & "', '" & RS.Fields("商品名") & "', '" & RS.Fields("型番") & "', '" & RS.Fields("カナ") & "', '" & RS.Fields("大分類") & "', '" & RS.Fields("中分類") & "', '" & RS.Fields("小分類") & "', " & RS.Fields("単価") & ", 0, " & Abs(dblSa) & ", '')")
元のソフトに『型番』というフィールドを追加しています。
このソースはもちろん、元のソースを移行してみても同じエラーが起こります。
フィールドを追加したときに他のテーブルやフォーム、クエリ、ソースにももちろん追加したのですが、
フォームだけスペースの問題で「大分類・中分類・小分類」のラベル・テキストを削除しました。
削除したのはソースとは全く別のフォームですがこれが原因になっていることもあるのでしょうか?
念のため関連していそうなフォームにこれらのラベルとテキストを再度作成しましたが結果は同じでした。
下手な説明かもしれませんがよろしくお願いします。

投稿日時 - 2010-01-29 09:38:24

QNo.5632046

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

DoCmd.RunSQL (SQLString)
このコマンドのSQLStringの部分はSQL文として正しい構文になっていなければなりません。

質問のコマンドをみると、SQLStringの部分は、RS.Fields("xxxx")の値を代入してからRunSQLを実行しています。
なので、RS.Fields("xxxx")の値がどうなっているかでSQLStringの内容が変わり、構文エラーになる可能性を除くことはできません。

質問のコマンドを、

SQLString = "INSERT INTO 入出庫(日付, ・・・・・" & Abs(dblSa) & ", '')"
DoCmd.RunSQL (SQLString)

のように2つに分けて記述し、SQLStringにどんな値が入っているかを確認してみてはどうでしょうか。


考えられる原因の1つは、
RS.Fields("xxxx")で参照した値をシングルクォーテーション(')で括っている場合は、RS.Fields("xxxx")で参照した値自体にシングルクォーテーションが入っていると構文エラーになります。

投稿日時 - 2010-01-29 18:05:38

補足

アドバイスありがとうございます。
教わったことを試してみたのですが空振りでした。

その後も色々探っているうちに特定の商品を見積もり登録するときのみエラーが起こることがわかりました。
特定の商品というのが単価の設定をしていないもので、
どうやら単価の値をNULLにしていたのが原因だったみたいです。。
NULLを全て「0」にしたところ正常に動作するようになりました。

投稿日時 - 2010-02-01 13:50:12

お礼

ソースに問題があるものとばかり思っていました。
こんな落とし穴もあるんですね。
時間を割いて回答してもらったのに結局自己解決という形になってしまいましたが、
おかげでまた一つ勉強になりました。

ありがとうございました。
今後の参考にさせてもらいます。

投稿日時 - 2010-02-01 13:53:25

あなたにオススメの質問