MS Access运行时错误3999

时间:2015-06-09 15:41:04

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

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

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

创建

作业列表在ID字段上有一个Lookup for Quote表 并且引用列表在ID字段上有一个查找作业表,以创建两者之间的关系。

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

  

"运行时错误' 3999'

     

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

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

我使用DAO Recordset在Job

下创建新的Quote
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

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

1 个答案:

答案 0 :(得分:0)

我相信我想出来了。

这是因为我在两个方向上创建了一个查找。 Job对QuoteID进行了查找,并且Quote查找了JobID。

对Quote的Job查找是因为它不是Form /子表单,我需要一种方法来显示Job中的ID,这是我第一次想到这样做。

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

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