【问题标题】:MS Access Run-time error 3999MS Access 运行时错误 3999
【发布时间】:2015-06-09 15:41:03
【问题描述】:

我创建了一个使用 Office 365 Sharepoint 的链接列表作为后端的应用程序。

我的印象是,它的设计方式应该是链接列表应该能够离线处理自己。但是当我离线并创建一个新的“工作记录”时,ID 字段是用 -1 创建的。

工作列表的 ID 字段有一个 Lookup for Quote 表 并且 Quote List 在 ID 字段上有一个针对 Job 表的 Lookup,以创建两者之间的关系。

但是当我离线并创建一个新作业时,它的 ID 为 -1,我无法将该 -1 写入作业下的新报价。我收到以下错误

“运行时错误'3999'

您无法引用与服务器断开连接时创建的行,因为这违反了为此表或列表定义的查找设置。请重新连接所有表与服务器,然后重试”

我知道当我上线时,ID 为 -1 的新工作将获得正确的 ID(下一个可用的),是否可以在离线时创建新的链接记录,其中任何子记录在重新上线时都会得到更新?

我正在使用 DAO 记录集在作业下创建新报价

Dim db As DAO.Database
Dim rs As DAO.Recordset 
Dim strSQL as String

strSQL = "SELECT * FROM tblQuote" 
Set db = CurrentDB
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)

With rs
    .AddNew
    !JobID = Me.ID
    .Update
    .Bookmark = .LastModified
    Me.QuoteID = !ID
End with

如果我在创建作业时在线,然后离线创建报价单,系统允许我创建报价单和任何新的报价单项目。我可以看到表格中的所有新记录,但是当我重新联机到 Sync 时,它不会将新报价识别为现有,并强制我撤消任何更改,因此新报价和所有行项目都被丢弃

【问题讨论】:

    标签: ms-access sharepoint linked-list sharepoint-2013 ms-access-2013


    【解决方案1】:

    我相信我想通了。

    这是因为我在两个方向都创建了一个查找。 Job 具有对 QuoteID 的查找,而 Quote 具有对 JobID 的查找。

    对报价的作业查找在那里,因为它不是表单/子表单,我需要一种方法来显示作业的 ID,这是我第一个想到的。

    我需要做的是解决这个问题,甚至在 Job 表上没有一个列来存储 Quote,而是在 Job Form 上拥有一个在运行时填充的未绑定控件,显示具有匹配 JobID 的 QuoteID。

    这样在离线模式下可以创建 -1 ID 值并正确链接,然后在上线时同步过程将它们更新为正确的 ID,它们仍然保持链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多