プロが教える店舗&オフィスのセキュリティ対策術

環境:Windows XP
Visual Basic 2008
DB:Access MDB

OLEdbAdapterでプログラムで作ったテーブルデータを、MDBへINSERT若しくはUPLODEしています。

あるフィールドのテーブルデータに?マークを入れてしまうと、
「指定されたデータ量がフィールド サイズを超えています。データ量を減らし、挿入または貼り付けを行ってください。」
と表示されてしまいます。

フィールド例
NO(int32):名前(String):コメント(string):担当(string)
1    :テスト1  :テストだ    :大田
2    :テスト2  :テストよ    :城田
3    :テスト3  :テストさ    :宮田
4    :テスト4  :テスト?    :千堂

パラメータ(INSERT)
dbAdapter.InsertCommand = New OleDbCommand( _
"INSERT INTO テーブル(" & _
"`NO`, `名前`, `コメント`, `担当`)" & _
"VALUES(?, ?, ?, ?)", _cn)

_dbAdapter.InsertCommand.Parameters.Add( _
New OleDbParameter("NO", OleDbType.Integer, 0, "NO"))
dbAdapter.InsertCommand.Parameters.Add( _
New OleDbParameter("名前", OleDbType.Char, 60, "名前"))
dbAdapter.InsertCommand.Parameters.Add( _
New OleDbParameter("コメント", OleDbType.Char, 60, "コメント"))
dbAdapter.InsertCommand.Parameters.Add( _
New OleDbParameter("担当", OleDbType.Char, 20, "担当"))

レコード4のコメント「テスト?」の?をとると正常に取り込むことができ、?を付けるとエラーがキャッチされます。

MDBで直接インポートなどのテストをしてみましたが、問題なくインポートできました。

VB側でのOleDbParameterなどの設定なのか、MDBでの受入の設定なのか、探すポイントがいまいちわからない為、困ってます。

ヒントでも良いですし、どこから調べていけばいいかでも結構ですので、ご返答お願いします。

A 回答 (1件)

VALUES('?', '?', '?', '?')

    • good
    • 0
この回答へのお礼

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

一応、私も試してはみたんですが、VALUES('?', '?', '?', '?')とすると、逆にどれもこれもINSERTやUPDATEすることができませんでした。

囲い込むことを行わないとけなそうなところは、なんとなくわかるんですが・・・

テーブルデータを作る時点で、囲んだ文字列を作ってしまえばよいのかな?とも思ったりもしたんですが、MDBで受け入れたときに「’」や「”」までデータに入ってしまって・・・

ふさがってます。
宜しくお願いします。

お礼日時:2009/10/06 14:48

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