• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:INSERT INTOステートメント構文エラーについての質問です)

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

このQ&Aのポイント
  • VB6.0+Access2003で開発を行っていますがInsert文の発行でエラーメッセージが表示されます。
  • Debug.PrintでSQLを実行したところ、正常に追加されました。SQLに問題はないでしょうか?
  • SQL以外に何を修正すれば良いかわからない状況です。お知恵をお貸しください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

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

参考URL:
http://okwave.jp/qa/q4640669.html
zhuque
質問者

お礼

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

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

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

zhuque
質問者

お礼

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

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.2

通勤時間の最後のカンマは不要です。 strINS = strINS + "'" & .Combo(1).Text & "'," ↓ strINS = strINS + "'" & .Combo(1).Text & "'" あと、数値型に文字型を代入しても大丈夫だったっけ? '年齢 strINS = strINS + .Combo(0).Text & "," '通勤時間 strINS = strINS + .Combo(1).Text としたほうがいいのでは?

zhuque
質問者

お礼

nag0720様> 回答ありがとうございます。 >通勤時間の最後のカンマは不要です ご指摘ありがとうございます。カンマは消し忘れていました。 >あと、数値型に文字型を代入しても大丈夫だったっけ? ACCESSのDBをテキスト型に変更しました。 ご指摘いただいた点を変更し、再度実行してみましたが、やはり同じところで同じメッセージがでてきます。 もうちょっと過去ログやプログラムを洗い直して検証しなおしてみます。 ありがとうございました。

  • kotoby2003
  • ベストアンサー率15% (280/1755)
回答No.1

その「上記のエラー」やSQLそのものを書いてくれないと、答えようがないんですけど・・・ 確かに、SQLを直接実行して成功するが、プログラムからだと失敗する、というケースはあります。 たとえば、SQLに余計な区切り文字(Oracleなら;)を書いているとか・・・

zhuque
質問者

補足

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は数値型にしています。

関連するQ&A