プロが教えるわが家の防犯対策術!

INSERT INTOステートメント構文エラーについての質問です

VB6.0+Access2003で開発を行っていますがInsert文の発行で上記のエラーメッセージが表示されます。

エラーとなっている部分は
Set rst = Ado_connect.Execute(strINS)
です。
rstはDim rst As ADODB.Recordsetと宣言しています。

Debug.Print strINSでinsert文を取得し、クエリでSQLを実行したところ、正常に追加されました。

様々なサイト等を調べて単純にSQLがおかしいだけだと思って修正をしていたのですがクエリでSQLが正常に実行できたということはSQLに問題がないということでしょうか?

正直手詰まりといった感じでSQL以外に何を修正すれば良いかわからないというのが現状でこちらに質問させていただきました。

皆様の知恵を貸してください。どうかよろしくお願い致します。

A 回答 (4件)

参考URLと同じでしょうか?



参考URL:http://okwave.jp/qa/q4640669.html
    • good
    • 0
この回答へのお礼

marlights様>
その通りでした。
無事に追加できました。
ありがとうございます。

お礼日時:2010/05/20 09:45

SQL文はパラメータを含んでいるので


パラメータを宣言しておく必要が
あるのでは。

http://support.microsoft.com/kb/181782

また、Parameters.Addメソッドでググってみてください。

Parameters.Add()の設定は単に
obj.Parameters.Add(パラメータ名、データ型)
です。
設定は単純なものですが、設定には少し
とまどうものがあるかもしれません。

参考 VB.NETでのやりとりです。OKWAVEでも過去ログにあるでしょう。
http://bbs.wankuma.com/index.cgi?mode=al2&namber …
    • good
    • 0
この回答へのお礼

piroin654様>
詳しく説明していただきありがとうございます。
今後の参考にさせていただきたいと思います。

お礼日時:2010/05/20 09:48

通勤時間の最後のカンマは不要です。



strINS = strINS + "'" & .Combo(1).Text & "',"

strINS = strINS + "'" & .Combo(1).Text & "'"


あと、数値型に文字型を代入しても大丈夫だったっけ?

'年齢
strINS = strINS + .Combo(0).Text & ","
'通勤時間
strINS = strINS + .Combo(1).Text

としたほうがいいのでは?
    • good
    • 0
この回答へのお礼

nag0720様>
回答ありがとうございます。

>通勤時間の最後のカンマは不要です
ご指摘ありがとうございます。カンマは消し忘れていました。

>あと、数値型に文字型を代入しても大丈夫だったっけ?
ACCESSのDBをテキスト型に変更しました。


ご指摘いただいた点を変更し、再度実行してみましたが、やはり同じところで同じメッセージがでてきます。
もうちょっと過去ログやプログラムを洗い直して検証しなおしてみます。
ありがとうございました。

お礼日時:2010/05/19 17:53

その「上記のエラー」やSQLそのものを書いてくれないと、答えようがないんですけど・・・



確かに、SQLを直接実行して成功するが、プログラムからだと失敗する、というケースはあります。

たとえば、SQLに余計な区切り文字(Oracleなら;)を書いているとか・・・

この回答への補足

kotoby2003様>
早速の回答ありがとうございます。
>その「上記のエラー」やSQLそのものを書いてくれないと、答えようがないんですけど・・・
申し訳ございません。記述を忘れていました。

SQLはこのように記述しています。
With aaa
strINS = "INSERT INTO TEST1 ("
strINS = strINS + "NAME,"
strINS = strINS + "INITIAL,"
strINS = strINS + "COUNTRY,"
strINS = strINS + "AGE,"
strINS = strINS + "JIKAN"
strINS = strINS + ") VALUES ("
'名前
strINS = strINS + "'" & .Txt(0).Text & "',"
'名前(イニシャル)
strINS = strINS + "'" & .Txt(1).Text & "',"
'国籍
strINS = strINS + "'" & .Txt(2).Text & "',"
'年齢
strINS = strINS + "'" & .Combo(0).Text & "',"
'通勤時間
strINS = strINS + "'" & .Combo(1).Text & "',"
strINS = strINS + ")"

Set rst = Ado_connect.Execute(strINS)の部分で
「INSERT INTOステートメントの構文エラー」です。とエラーメッセージが表示されます。

>確かに、SQLを直接実行して成功するが、プログラムからだと失敗する、というケースはあります。
勉強になりました。エラーメッセージでもそう言っているのでやはりinsert文がどこかプログラムから実行する上でおかしいのかなと思います。

もう一つ補足ですが、Combo()は年齢(18~60)、通勤時間(5,10,15,20....)とコンボボックスで作成し、DBは数値型にしています。

補足日時:2010/05/19 17:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A