FIX #DELETED の char 型の主キーを持つレコードを挿入するときのエラー

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

264766
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
主キーとして、固定長のテキスト フィールド (CHAR) を持つリンク ODBC テーブルに新しいレコードを挿入すると、すべてのフィールド新しいレコードからに #DELETED が表示されます。

メモ 閉じるし、リンクしたテーブルを再び開くと、新しく挿入されたレコードが表示され、正しく挿入されています。
原因
多くの ODBC ドライバーにスペース (「埋める」) を追加する挿入する文字の数、フィールドの最大長よりも小さい場合は、char 型のフィールド。Microsoft Jet 4.0 が正しくを挿入、パッド値を読み取り、unpadded の元の値とを比較します。2 つの値が異なるため、Jet Microsoft Access が新しく挿入されたレコードが見つからないことを報告します。
解決方法
この問題を解決するには、最新の Jet 4.0 service pack をインストールします。 詳細については、Knowledge Base の資料を参照するのには、次の資料番号をクリックしてください。
239114方法: Microsoft Jet 4.0 データベース エンジン用の最新の Service Pack を入手します。
回避策
テーブルの主キーとして、可変長文字列フィールド (VARCHAR) を使用します。
状況
Microsoft では、これ問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。 この問題は、Jet 4.0 Service Pack 6 で (SP6) を修正しました。
詳細

現象の再現手順

DB2、Oracle、または Microsoft SQL Server のデータベースにリンクすることによってこの問題を再現することができます。問題が、リンク テーブルに 60 以上のレコードを持っていない場合に発生する可能性がないようです。

挿入操作中に、ODBC トレースを調べると、Jet は挿入し、レコードを正常に reselects し、トレースでエラーが発生しないことが表示されます。Jet は、レコードを取得し、reselected キーの値は、ユーザーによって入力された値を比較しようとしています。 この問題を発生します。

この現象を再現するのには、次の手順に従います。
  1. テスト テーブルおよびレコードを生成するのには、次のマイクロソフトの Visual Basic コードを実行します。
    Sub GenerateTestTable()Dim conn As ObjectDim i As Long, sql as String   Set conn = CreateObject("adodb.connection")   ' Change connection string to point to your SQL Server if needed.   conn.Open "Provider=SQLOLEDB;Server=(Local);Database=Pubs;UID=sa;PWD=;"   On Error Resume Next   conn.Execute "drop table tmp_chartest"   On Error GoTo 0   sql = "create table tmp_chartest(f1 char(5) primary key, f2 char(10))"   conn.Execute sql    For i = 1 To 70        sql = "insert into tmp_chartest (f1,f2) values ('"        sql = sql & Format(i, "000") & "','XXXXXXXXXX')"        conn.Execute sql    Next i    conn.Close    Set conn = NothingEnd Sub					
  2. Microsoft Access 2000 を起動し、前の手順で作成した tmp_chartest テーブルをリンクします。
  3. 新しくリンクされたテーブルを開くし、最後にテーブル内のレコードをスクロールします。
  4. F1 フィールドを持つ新しいレコードを追加する 071 = し、F2 フィールド XXXXXXXXXX =。
  5. レコード、] のタブと #DELETED のすべてのフィールドの表示を参照してくださいする必要があります。
削除されました

警告: この資料は、自動翻訳されています

プロパティ

文書番号:264766 - 最終更新日: 02/23/2014 22:14:23 - リビジョン: 5.0

  • kbnosurvey kbarchive kbbug kbfix kbqfe kbdatabase kbjet kbhotfixserver kbmt KB264766 KbMtja
フィードバック