如何解释数据库“可更新”属性/错误(3027)。无法更新。数据库或对象是只读的

科尔谷女孩

我的一位用户(正在运行Windows 7 64bit)报告说,启动我的应用程序时,她收到以下错误消息:

410行上的basApplicationTitle.SetStartupProperty错误(3027)。无法更新。数据库或对象是只读的

令人反感的代码是:

Private Function SetAppTitle(pstrRpValue As String) As Boolean

390      On Error GoTo PROC_ERR

         Dim dbsDb As DAO.Database
         Dim prp As DAO.Property

400      Set dbsDb = CurrentDb()

405      SetAppTitle = False

         ' Set the Application Title property value.
410      dbsDb.Properties("AppTitle") = pstrRpValue '<= the line that  triggers the error
420      SetAppTitle= True

PROC_EXIT:
430      Set dbsDb = Nothing
440      ProcPop
450      Exit Function

PROC_ERR:
460      Select Case Err.Number
             Case 3270 'Property not found; create it and try again.
470              Set prp = dbsDb.CreateProperty("AppTitle", dbtest, pstrRpValue )
480              dbsDb.Properties.Append prp
490              Resume
500          Case Else
510              SetStartupProperty = False
520              LogError 'Report the error
530      End Select
540      Resume PROC_EXIT
550      Resume

     End Function

我假设她无权更新后端数据库或前端数据库之一,并且在打开前端并连接后端时需要对此进行测试。

问题1:属性currentdb()。updatable是否同时检查前端和后端,还是需要独立测试?

问题2:currentdb()。updatable是否足够?

问题2:我可以在错误消息中提供什么指导-我假设检查文件的只读属性是一回事。是否有用户帐户特权的问题?还是锁定文件?我还有什么需要考虑的吗?

汤普森(Gord Thompson)

CurrentDB.Updatable会告诉您前端是否为只读。为了检查您是否可以更新应用程序标题,该测试应该足够了。

至于为什么前端可能以只读方式打开,可能的原因是:

  • 文件系统的“只读”属性可能在前端文件上设置(如您所述)。

  • 前端文件可能位于用户具有只读访问权限的文件夹中。例如,普通用户仅具有只读访问权限%ProgramFiles%(例如,“ C:\ Program Files \ ...”)。

  • 在某些情况下,多个并发用户打开同一Access文件可能会迫使某些用户为只读。但是,这对于共享Access数据库应用程序的前端应该不是问题,因为每个用户都必须拥有自己的前端文件本地副本。(也就是说,多个并发用户从共享位置打开前端文件的相同副本是一件很糟糕的事情。)

重新编辑:评论

(1)测试后端访问:

为了验证用户可以写入后端数据库,您可以让启动代码尝试执行不更改任何数据的测试更新,例如,

Dim cdb As DAO.Database
Set cdb = CurrentDb
cdb.Execute "UPDATE LinkedTbl SET Field1=Field1 WHERE ID=1", dbFailOnError

如果后端是只读的,则会出现错误3073“操作必须使用可更新的查询”。

(2)前端访问注意事项:

至于在用户没有对前端的写访问权的情况下如何进行欺骗,我不会打扰。除了最简单的Access应用程序之外,所有其他应用程序都需要对(前端)数据库对象进行一些更改,因此用户确实确实需要对前端文件的写权限。

我的首选方法是使用安装程序或前端更新程序,将前端文件放置在普通用户可以期望具有读/写访问权限的位置,特别是本地硬盘上自己的文件空间(例如, “ C:\ Users \ Gord ...”)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

可更新的 Poll + Explanation 数据库

来自分类Dev

如何解决 Laravel 中的数据库更新错误

来自分类Dev

无法更新数据库中的对象

来自分类Dev

无法更新数据库.MDF为只读

来自分类Dev

无法读取数据库或对象只读

来自分类Dev

更新数据库错误

来自分类Dev

无法更新数据库

来自分类Dev

如果数据库是只读的,则无法更新数据库

来自分类Dev

由于数据库是只读的,因此无法更新数据库

来自分类Dev

如果数据库是只读的,则无法更新数据库

来自分类Dev

无法更新数据库形式的数据

来自分类Dev

无法从MySQL数据库更新数据

来自分类Dev

数据库中的Django更新对象

来自分类Dev

数据库中的Django更新对象

来自分类Dev

无法在本地数据库中更新或删除:错误

来自分类Dev

无法更新数据库而不会出现错误

来自分类Dev

错误的数据库记录正在更新

来自分类Dev

SQLite数据库更新导致错误

来自分类Dev

无法通过Laravel更新数据库

来自分类Dev

数据库无法连接或更新

来自分类Dev

实体框架无法更新数据库

来自分类Dev

我无法从python更新数据库

来自分类Dev

无法更新SQL数据库

来自分类Dev

无法更新数据库中的列

来自分类Dev

无法更新数据库中的行

来自分类Dev

无法更新数据库中的字段

来自分类Dev

无法更新我的数据库

来自分类Dev

如何更新存储在 SQLite 数据库中的对象

来自分类Dev

如何使用DataRow更新数据库?