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"
它显示临时缓存数据,然后抛出错误:
不是有效书签
我似乎找不到任何显示此问题的数据。
我遇到所有这些麻烦的原因是我有不同的属性可以改变列数。
答案 0 :(得分:1)
DROP
表并在事务中重新创建它。提交事务时使用 dbForceOSFlush ,"强制数据库引擎立即刷新磁盘的所有更新" 。 (见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