为什么我看到的是缓存数据而不是更新数据?
Why am I seeing cached data instead of the updated data?
在DoCmd.OpenTable
之后显示的信息是数据之前的状态,不是当前状态。
CurrentDb().QueryDefs.Delete "qry_attributeData"
Set attriQryDef = CurrentDb().CreateQueryDef("qry_attributeData")
sqlStr = Replace(sqlStr, "#catReplace#", replaceVal)
attriQryDef.Connect = cxString1
attriQryDef.SQL = sqlStr
attriQryDef.Close
CurrentDb.Execute "Drop Table [tbl_attributeData]", dbFailOnError
CurrentDb.Execute "SELECT qry_attributeData.* INTO tbl_attributeData FROM qry_attributeData", dbFailOnError
DoCmd.OpenTable "tbl_attributeData"
它正在显示临时缓存数据,然后抛出错误:
Not a valid bookmark
我似乎无法在任何地方找到任何显示此问题的数据。
我遇到这些麻烦的原因是我有一个不同的属性来改变列数。
DROP
table 并在事务中重新创建它。提交事务时使用 dbForceOSFlush,即 "forces the database engine to immediately flush all updates to disk"。 (参见 Workspace.CommitTrans Method)
全部完成后,DoCmd.OpenTable
应该会显示新数据。
Dim wrk As DAO.Workspace
Set wrk = DBEngine(0)
wrk.BeginTrans
CurrentDb.Execute "Drop Table [tbl_attributeData]", dbFailOnError
CurrentDb.Execute "SELECT qry_attributeData.* INTO tbl_attributeData FROM qry_attributeData", dbFailOnError
wrk.CommitTrans dbForceOSFlush
wrk.Close
DoCmd.OpenTable "tbl_attributeData"
Set wrk = Nothing
在DoCmd.OpenTable
之后显示的信息是数据之前的状态,不是当前状态。
CurrentDb().QueryDefs.Delete "qry_attributeData"
Set attriQryDef = CurrentDb().CreateQueryDef("qry_attributeData")
sqlStr = Replace(sqlStr, "#catReplace#", replaceVal)
attriQryDef.Connect = cxString1
attriQryDef.SQL = sqlStr
attriQryDef.Close
CurrentDb.Execute "Drop Table [tbl_attributeData]", dbFailOnError
CurrentDb.Execute "SELECT qry_attributeData.* INTO tbl_attributeData FROM qry_attributeData", dbFailOnError
DoCmd.OpenTable "tbl_attributeData"
它正在显示临时缓存数据,然后抛出错误:
Not a valid bookmark
我似乎无法在任何地方找到任何显示此问题的数据。
我遇到这些麻烦的原因是我有一个不同的属性来改变列数。
DROP
table 并在事务中重新创建它。提交事务时使用 dbForceOSFlush,即 "forces the database engine to immediately flush all updates to disk"。 (参见 Workspace.CommitTrans Method)
全部完成后,DoCmd.OpenTable
应该会显示新数据。
Dim wrk As DAO.Workspace
Set wrk = DBEngine(0)
wrk.BeginTrans
CurrentDb.Execute "Drop Table [tbl_attributeData]", dbFailOnError
CurrentDb.Execute "SELECT qry_attributeData.* INTO tbl_attributeData FROM qry_attributeData", dbFailOnError
wrk.CommitTrans dbForceOSFlush
wrk.Close
DoCmd.OpenTable "tbl_attributeData"
Set wrk = Nothing