
お世話になります。
SQLServer2000のvarchar型とtext型が混在する
テーブルをACCESS2002のODBCリンクテーブルを
使用して登録 or 更新を行う際、varchar型に
わざと指定バイト数を超える文字列を入力した後
text型に任意の文字列を入力し、レコードの更新
を行うと以下のエラーが発生します。
[Microsoft][ODBC SQL Server Driver][SQL Server]STRING または BINARY データは切り詰められました。 (#8152)
上記エラーは指定バイト数を超える文字列を入力した
時に発生することは理解しているのですが上記条件で
text型に値を入力しなかった場合はエラーが発生せず
varchar型には指定バイト数までの文字列が登録され
ます。
text型に値を入力したときとしない時、チェック方法が
違うのでしょうか?
以下は上記現象が発生した環境です。
OS:WinXP(SP2)
DB:SQLServer2000(08.00.0194)
使用ACCESS:2002(SP3)
以上、御返答、宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
s_husky です。
ODBCで接続してもAccessプロジェクトでリンクしても、varchar型はAccess側で切り捨てます。
Text型の入力の有無によって動作が変わる現象は確認されませんでした。
フォームの幾つかの形式、テーブルを開いての直接入力の全てにおいてです。
よって、ウーンと言う以外にありません。
この回答への補足
御返答有難う御座います。
>ODBCで接続してもAccessプロジェクトでリンクしても
現象が発生したのはプロジェクト(adp)ではなく、
データベース(mdb)のODBCリンクテーブルです。
でもODBCでも試して頂いているようですし...。
環境、ドライバのバージョンによる違い何ですかね~。
No.3
- 回答日時:
s_husky です。
私の回答は、Varchar型に限定してのことです。
Text型ですと、SQL Server はデータアドレスを参照しているのではないでしょうか?
ですから、通常は、Accessからかなりの桁数を登録してもエラーにはならないと思います。
Access側で桁の切捨てを行わない理由かと思います。
※Text型でエラーが理解できません!素人の限界です。すみません!
御返答有難う御座います。
>通常は、Accessからかなりの桁数を登録してもエラーにはならないと思います。
Text型の項目でエラーが発生しているのではなくVarchar型の項目でバイト数超過のエラーだと考えています。
・Text型の項目が未入力
→Varchar型の項目は自動的に桁の切捨てを行ってくれる。
・Text型の項目が正しく入力済み
→Varchar型の項目が桁の切捨てを行わず、エラーとなる。
この違いは何なんでしょうね~?
No.2
- 回答日時:
s_husky です。
「<文字列を入力し>が気になります。」と書いていますが、少し、補足します。
つまり、Accessのフォーム等で入力した場合、その結果をレコード移動時に確認すれば、実は、長さが切り詰められているのではないのでしょうか?
私は、このAccessの機能を利用してvarchar型の長さチェックをしていません。
この現象を示唆したつもりでした。
まあ、同様の環境で確認していないので曖昧に表現しました。
※外していれば、すみません!
お早い御返答有難う御座います。
>実は、長さが切り詰められているのではないのでしょうか?
通常、Accessの機能で長さを切り詰めて登録される
ようですが、なぜtext型に文字を入力した時は、長
さを切り詰める機能が動作せず、エラーが発生する
のでしょうか?
以上、御返答、宜しくお願い致します。
No.1
- 回答日時:
スーツのデザイナでプログラマではありませんが...
Test=varchar(10)
以下のように11文字を送出した結果です!
・Err.Description=STRING または BINARY データは切り詰められました。
・Err.Number=-2147217833
・SQL State=22001
・SQL TEXT=INSRT INTO TABLE1 (ID,TEST) VALUES (10, '----+----1-')
ウーン!varchar もエラーになりましたね!
※<文字列を入力し>が気になります。
※直接にSQL文を書いてテストされた方が良いかも知れませんね!
※実際には、文字列がカットされて送出されていませんか?
SQL Server 2000/Access2002
この回答への補足
ご回答有難う御座います。
説明が足りなかったようで申し訳ないです。
・補足1
VB等でSQLを発行したのではなくAccess2002のODBC
リンクテーブルのデータシートビューでレコードの
編集を行った時の現象です。
・補足2
検証テーブルの構成(SQLServer2000)
テーブル名:TEST
項目1:[ID] [int] (PRIMARY)
項目2:[TEXT] [varchar] (6)
項目3:[MEMO] [text]
上記環境で
・現象1
TESTテーブルのデータシートビューで
1.IDカラム(int型)に適当な数値を入力
2.TEXTカラム(varchar型)に設定バイト数を超える文字列を入力。
3.MEMOカラム(text型)は未入力(空白)
でレコード移動等のレコードの保存を行う。
→TEXTカラムに設定バイト数でカットされた文字列が
入力された状態のレコードが登録される。
・現象2
TESTテーブルのデータシートビューで
1.IDカラム(int型)に適当な数値を入力
2.TEXTカラム(varchar型)に設定バイト数を超える文字列を入力。
3.MEMOカラム(text型)に適当な文字列を入力
でレコード移動等のレコードの保存を行う。
→以下のエラーメッセージが表示され、レコード保存ができない。
STRING または BINARY データは切り詰められました。
現象1と現象2でなぜ結果が違うのかが知りたいのです。
以上、ご回答、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access DAOのExecuteメソッドのオプション(RecordsetOptionEnum)に 1 2022/09/19 07:34
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Excel(エクセル) EXCELの「接続」のSQLのコマンド文字列にて、セルから任意の数値を利用したい 2 2023/03/09 16:43
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Excel(エクセル) 【vba】日付の形式が勝手に変わってしまう。 1 2022/09/29 10:54
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- その他(プログラミング・Web制作) python質問 1 2023/08/14 11:54
- Excel(エクセル) Excel 値を返す数式についてです 3 2022/11/21 20:08
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスで数値型のフィールド...
-
passwordが入れられません・・・・
-
データベースのINT型項目にNULL...
-
Accessのフォーム上での数式
-
Mysqlエスケープ文字回避の構文...
-
Excelで入力したデータを自動的...
-
フォームテキスト内文字の縦位...
-
フォームで入力しても反映されない
-
入力規則違反-任意のエラーメ...
-
SQL構文でデータ抽出。
-
ファイルメーカーPro7 でのアク...
-
SQLで構文を間違って入力して;...
-
レポート作成でデータの順番が...
-
アクセスのテキストボックスの...
-
Accessのメモ型について
-
Accessで小数の入力について
-
このオブジェクトに値を代入す...
-
Access レポート印刷するときに...
-
YahooのIDがロックされてしまい...
-
重複データかも知れないデータ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
アクセスで数値型のフィールド...
-
passwordが入れられません・・・・
-
フォームで入力しても反映されない
-
Excelで入力したデータを自動的...
-
アクセスのテキストボックスの...
-
Access(office)のマクロの「値...
-
Access2007、フォームのテキス...
-
このオブジェクトに値を代入す...
-
入力規則違反-任意のエラーメ...
-
Accessで西暦の年だけ表示したい
-
Access2007 textboxに入力でき...
-
ACCESS2000にて「うるう年」の...
-
Access2000VBAでEscキーを禁止!
-
【Access】 VBA 入力漏れを防...
-
EXCELのユーザーフォームで入力...
-
Accessで小数の入力について
-
ファイルメーカー 一ヵ月後の...
-
アクセス2003 入力規則
-
ユーザーフォームで数字にカン...
おすすめ情報