FIX: #DELETED 错误插入使用 CHAR 主键记录时

文章翻译 文章翻译
文章编号: 264766 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

本文内容

症状

在作为主键具有固定长度的文本字段 (CHAR) 的链接的 ODBC 表中插入新记录时 #DELETED 将出现在所有新记录中的字段。

注意如果然后关闭并重新打开链接的表,新插入的记录将会出现,并已正确插入。

原因

许多 ODBC 驱动程序添加到的空格 (或"填充") CHAR 字段时插入的字符数小于字段的最大长度。Microsoft Jet 4.0 不正确地重新读取插入、 填充值,并将其与原始的 unpadded 值进行比较。因为这两个值都是不同的 Jet 报告到 Microsoft Access 找不到新插入的记录。

解决方案

若要解决此问题,安装最新的 Jet 4.0 服务包。有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
239114如何: 获取最新的 Service Pack,对于 Microsoft Jet 4.0 数据库引擎

替代方法

使用变长文本字段 (VARCHAR) 作为表的主键。

状态

Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的问题。此问题已修复 Jet 4.0 服务包 6 (SP6) 中。

更多信息

重现行为的步骤

您可以通过将链接到 DB2、 Oracle,或 Microsoft SQL Server 数据库再现此问题。问题似乎不会发生,除非您在链接表中有至少 60 或多个记录。

如果您检查插入操作过程中采取一个 ODBC 跟踪,您将看到 Jet 插入并正确,reselects 记录和跟踪中发生的任何错误。Jet 检索了的记录,并尝试使用由用户输入的值将 reselected 关键值进行比较之后,将出现问题。

若要重现此问题,请执行以下步骤:
  1. 运行下面的 Microsoft Visual Basic 代码生成测试表和记录:
    Sub GenerateTestTable()
    Dim conn As Object
    Dim 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 = Nothing
    End Sub
    					
  2. 启动 Microsoft Access 2000,并链接到 tmp_chartest 表在上一步中创建的。
  3. 打开新链接的表,并滚动到最后一个表中的记录。
  4. 添加新记录具有字段 F1 = 071 和字段 F2 = XXXXXXXXXX。
  5. 关闭了的记录选项卡,您应该看到 #DELETED 显示中的所有字段。

属性

文章编号: 264766 - 最后修改: 2014年2月24日 - 修订: 3.1
这篇文章中的信息适用于:
  • Microsoft Access 2000 Service Pack 1
  • Microsoft Access 2002 标准版
关键字:?
kbnosurvey kbarchive kbmt kbqfe kbhotfixserver kbbug kbdatabase kbfix kbjet KB264766 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 264766
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com