2016-11-17 97 views
0

我有一个数据库,一直运行良好,直到今天早上几年。当我尝试将远程表的内容复制到本地后端时,出现一个错误:“错误3622 - 您必须使用dbSeeChanges选项...”MSAccess - dbSeeChanges错误?

远程表位于服务器上,有一个AutoNumber属性。后端表是一个简单的只读/静态快照,不关心自动编号数据类型,简单地定义为数字 - 我只需要表(快照)就本地性能问题。

我添加了dbSeeChanges变量而没有成功 - 在db.execute行(下面)上抱怨“太少参数”。

下面是我的数据库的一些细节:

Dim db As Database 
dim strSQL as string 
Set db = CurrentDb() 

strSQL = "INSERT INTO Item " & _ 
    "SELECT dbo_Item.* " & _ 
    "FROM dbo_Item " & _ 
    "WHERE dbo_Item.MASTER_INVID= " & TempVars!my_InvID 

    db.Execute strSQL, dbFailOnError + dbSeeChanges 

我缺少什么?任何建议,以避免/纠正。

+0

我觉得有一些东西与你的SQL字符串回事。 'Debug.Print'执行前。请参阅[如何在VBA中调试动态SQL](http://stackoverflow.com/questions/418960/managing-and-debugging-sql-queries-in-ms-access/1099570#1099570) – Andre

+0

debug.print外观很好: INSERT INTO项目SELECT dbo_Item。* FROM dbo_Item WHERE dbo_Item.MASTER_INVID = 4892 –

+1

@Andre - 你可能会在那里做点什么!我连接到错误的服务器,那里的“Master_InvID”attr不是数据模型的一部分。这个attr从我连接的地方下游创建。 - 谢谢! –

回答

1

另一种方式做,这是使链接表的副本,然后隐蔽,为本地表:

localTableName = "Item" 
DoCmd.CopyObject , localTableName , acTable, "dbo_Item" 
DoCmd.SelectObject acTable, localTableName , True 
RunCommand acCmdConvertLinkedTableToLocal 
+0

这很有趣,我从来没有听说过'acCmdConvertLinkedTableToLocal'。它是否也适用于ODBC链接表,或仅适用于从Access数据库链接的表? – Andre

+0

是的,它也适用于ODBC服务器等ODBC源。 – ClintB