- ベストアンサー
INSERT INTOステートメント構文エラーについての質問
- VB6.0+Access2003で開発を行っていますがInsert文の発行でエラーメッセージが表示されます。
- Debug.PrintでSQLを実行したところ、正常に追加されました。SQLに問題はないでしょうか?
- SQL以外に何を修正すれば良いかわからない状況です。お知恵をお貸しください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
参考URLと同じでしょうか?
その他の回答 (3)
- piroin654
- ベストアンサー率75% (692/917)
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=40641&KLOG=70
お礼
piroin654様> 詳しく説明していただきありがとうございます。 今後の参考にさせていただきたいと思います。
- nag0720
- ベストアンサー率58% (1093/1860)
通勤時間の最後のカンマは不要です。 strINS = strINS + "'" & .Combo(1).Text & "'," ↓ strINS = strINS + "'" & .Combo(1).Text & "'" あと、数値型に文字型を代入しても大丈夫だったっけ? '年齢 strINS = strINS + .Combo(0).Text & "," '通勤時間 strINS = strINS + .Combo(1).Text としたほうがいいのでは?
お礼
nag0720様> 回答ありがとうございます。 >通勤時間の最後のカンマは不要です ご指摘ありがとうございます。カンマは消し忘れていました。 >あと、数値型に文字型を代入しても大丈夫だったっけ? ACCESSのDBをテキスト型に変更しました。 ご指摘いただいた点を変更し、再度実行してみましたが、やはり同じところで同じメッセージがでてきます。 もうちょっと過去ログやプログラムを洗い直して検証しなおしてみます。 ありがとうございました。
- kotoby2003
- ベストアンサー率15% (280/1755)
その「上記のエラー」や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は数値型にしています。
お礼
marlights様> その通りでした。 無事に追加できました。 ありがとうございます。