- - PR -
VB.NET2003 ACCESS パラメータクエリで"INSERT INTO ステートメントの構文エラーです。"
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-23 14:07
Access様ご返信ありがとうございます。
1)に関しては、順番はあっています。 2)に関しては、共にACCESSのテキスト型です。 フィールドサイズは、5と4です。 実際に入る値は、1つめのパラメータが"00104"で、2つめのパラメータが"2006"になります。 パラメータの型を指定するというのは、 oleCmd.Parameters.Add("param1", cstr(strVal(0))) の様にするということであってますでしょうか。 または、 oleCmd.Parameters.Add("@param1", OleDb.OleDbType.VarWChar) oleCmd.Parameters("@param1").Value = strVal(0) oleCmd.Parameters.Add("@param2", OleDb.OleDbType.VarWChar) oleCmd.Parameters("@param2").Value = strVal(1) (この場合、SQL文の?も@param1、@param2に変えました) のようにするということでしょうか。 どちらも試してみましたが結果は同じでした。 [ メッセージ編集済み 編集者: K5 編集日時 2006-04-23 14:08 ] | ||||
|
投稿日時: 2006-04-23 16:20
皆様ご返信ありがとうございます。
静的にSQL文を作成したところ、同じように "INSERT INTO ステートメントの構文エラーです。" のエラーがでました。 作成したSQLをACCESSのクエリに貼り付けると実行できました。 参照(SELECT)は、出来ているので、ACCESSの設定の問題ではないかという気がしてきました。 先頭の書込みにも書きましたが、VB.NET上から "INSERT INTO TESTTBL(KKR_NO) values('90001')" は実行され、 "INSERT INTO TESTTBL(KKR_NO,YEAR) values('90001','2006')" は実行されないということです。 お手上げ状態になっています。 よろしくお願いします。 [ メッセージ編集済み 編集者: K5 編集日時 2006-04-23 17:09 ] | ||||
|
投稿日時: 2006-04-23 17:27
YEARって型はなんですか? DATE型(ACCESSにあったっけ?)だとしたら キャストの必要があると思うんですけど | ||||
|
投稿日時: 2006-04-23 17:44
かるあ様
ご返信ありがとうございます。
テキスト型です。 かるあ様の書込みでピンと来ました。 YEARはACCESSで関数がないか調べたら、ありました・・・。 予約語のなのでダメだったということでした。 名前を"FISICALYEAR"に変更したら実行されました。 ご迷惑お掛けしました。 本当にありがとうございました。 大変たすかりました。 フィールド名が"YEAR"でも、ACCESSのクエリからは実行できる。 プログラムからは、実行できないということがわかりました。 パラメータクエリでも実行できました。 | ||||
|
投稿日時: 2006-04-23 17:51
それだったら、Access の方からは実行できなくて、プログラムからは実行できるってなりそうですけどね。 まぁそういうことがあるので、フィールド名は[]でくくると良いですよ。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-04-23 17:58
囚人様
ありがとうございます。 フィールド名を[]でくくることを知りませんでした。 全て[]でくくって実装しようと思います。 本当にありがとうございます。 |